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-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享
- 2024-02-22docker mysql 5.7
- 2024-02-18从 20 多套 MySQL 到 1 套 TiDB丨骏伯网络综合运营管理平台应用实践
- 2024-02-07mysql 外键索引入门介绍,为什么工作中很少有人使用?