mysql线程
2022/6/29 2:22:47
本文主要是介绍mysql线程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
查看线程:
在performation_schema下,有一个threads表。
首先是IO线程
控制参数是innodb_write_io_threads。整个16应该没问题。
而innodb_read_io_threads,就不用动了,write是异步的,read是同步的。
page_cleaner_thread
用来刷新脏页的线程。和IO线程设成一样大就行了。
然后的话这个子线程还包括
srv_purge_thread
srv_worker_thread
master_thead
之前这个线程干的事情很多 ,但是5.6版本之后,很多功能被剥离的。目前基本上是用来刷新重做日志的。
还有一些无关紧要的线程,比如srv_lock_timeout_thread,srv_error_monitor_thread等,前面用来监控锁超时,后面用来监控错误。
我觉得最重要的线程就是page_cleaner线程,刷新脏页。从5.5版本开始,就由innodb_io_capacity这个参数控制。
每1s会进行一次上面这个参数数量的脏页刷新。
然后我想重点讨论的是,当线上出现故障,你cpu打满了。如果从top命令,定位到是具体的哪一条sql出现的问题。这个就涉及thread。
首先 top -H
这里,找到线程占用cpu最高的pid。
然后登录mysql。查询threads表,将字段thread_os_id=你查询出来的pid。然后你就能得到prosesslist_id。将这个值,拿去和processlist进行查询,就能得到具体的sql语句。
那么如何查看IO使用了最高的线程?
iotop -u mysql
或者iotop -p mysqlpid
这个查出来,第一列TID,就是treads表中的thread_os_id。
未完待续。
这篇关于mysql线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南