精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL:終于為OS層面的線程命名了

數據庫 MySQL
如果某個線程的CPU高或者IO高我們就能夠知道是什么線程。當然你也可以和information_schema.processlist做join得到process id和state等有用的信息。

一、問題來源

最近在檢查某個數據庫性能的時候,通過top -Hu mysql看到了一個特別奇怪的現象,線程有了自己的名字,我開始以為是哪個大廠自己維護的版本,如下:

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                  
8146 mysql 20 0 4164720 734540 26624 S 0.0 9.9 0:00.96 mysqld
8159 mysql 20 0 4164720 734540 26624 S 0.0 9.9 0:00.02 ib_io_ibuf
8160 mysql 20 0 4164720 734540 26624 S 0.0 9.9 0:00.02 ib_io_log
8161 mysql 20 0 4164720 734540 26624 S 0.0 9.9 0:00.04 ib_io_rd-1
8162 mysql 20 0 4164720 734540 26624 S 0.0 9.9 0:00.03 ib_io_rd-2
...

后來裝了一個8.0.28才發現確實是官方版本的新玩意。但是雖然能夠猜到一些線程的功能,可還是很陌生的樣子,因為這個名字和performance_schema.thread中的名字并不一樣。

這里我們就來看看它的做法和對應關系。不過這一小步,卻是DBA的一大步,我們以往在看Oracle的進程的時候都習慣了有命名的進程名字,這帶來的好處是直接從OS層面就能判斷大概哪個功能的壓力增高。

二、以往的對應方法

我們知道以前在獲取到線程的LWP號后需要到performance_schema.thread通過lwp和thread_os_id 對應,得到如下結果:

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                  
5524 mysql 20 0 4052588 792400 11676 S 0.0 27.4 0:03.82 mysqld
5533 mysql 20 0 4052588 792400 11676 S 0.0 27.4 0:00.00 mysqld
5556 mysql 20 0 4052588 792400 11676 S 0.0 27.4 0:00.00 mysqld
5557 mysql 20 0 4052588 792400 11676 S 0.0 27.4 0:00.00 mysqld
...
----------------------------------------+--------------+
| name | thread_os_id |
+----------------------------------------+--------------+
| thread/sql/main | 5524 |
| thread/sql/thread_timer_notifier | 5533 |
| thread/innodb/io_ibuf_thread | 5556 |
| thread/innodb/io_read_thread | 5558 |
| thread/innodb/io_log_thread | 5557 |
...

如果某個線程的CPU高或者IO高我們就能夠知道是什么線程。當然你也可以和information_schema.processlist做join得到process id和state等有用的信息。

三、簡單的實現方法討論

比如以innodb為例,所有的線程的OS thread name都放到了all_innodb_threads這個一個數組中,其中每個元素是一個結構體,結構體中包含了我們OS thread name這個元素給予了大量的代碼注釋,我就放一點我們容易看懂的:

typedef struct PSI_thread_info_v5 PSI_thread_info;
The thread name to advertise to the operating system.
This feature is optional, and improves
observability for platforms that support
a flavor of pthread_setname_np().

這里我們也看到需要支持pthread_setname_np函數才行。在調用register_thread_class注冊所有的class的時候會將這些OS thread name放到一個叫做thread_class_array全局內存中,這樣再建立線程應該能輕松的從全局內存中拿到每個線程的OS thread name(當然我沒去細看了)。接著,在建立線程的時候我們調用my_thread_self_setname設置OS thread name就可以了,實際上就是調用pthread_setname_np。

四、新的Linux OS thread name和performance_schema.threads中name的對應

為了快速的得到對應的辦法,我稍微加了點輸出內容,這樣只要有線程啟動,就會打印到error日志,因為如果一個一個去看每個線程啟動的時候帶入的OS thread name實在太慢了,耗不起,得到的結果如下:

 cat mysql3380.err |grep -w 'init threads'
[init threads] os name:boot -- mysql name:thread/sql/bootstrap
[init threads] os name:ib_io_ibuf -- mysql name:thread/innodb/io_ibuf_thread
[init threads] os name:ib_io_log -- mysql name:thread/innodb/io_log_thread
[init threads] os name:ib_io_rd-1 -- mysql name:thread/innodb/io_read_thread
[init threads] os name:ib_io_rd-2 -- mysql name:thread/innodb/io_read_thread
[init threads] os name:ib_io_rd-3 -- mysql name:thread/innodb/io_read_thread
[init threads] os name:ib_io_rd-4 -- mysql name:thread/innodb/io_read_thread
[init threads] os name:ib_io_rd-5 -- mysql name:thread/innodb/io_read_thread
[init threads] os name:ib_io_rd-6 -- mysql name:thread/innodb/io_read_thread
[init threads] os name:ib_io_rd-7 -- mysql name:thread/innodb/io_read_thread
[init threads] os name:ib_io_rd-8 -- mysql name:thread/innodb/io_read_thread
[init threads] os name:ib_io_wr-1 -- mysql name:thread/innodb/io_write_thread
[init threads] os name:ib_io_wr-2 -- mysql name:thread/innodb/io_write_thread
[init threads] os name:ib_io_wr-3 -- mysql name:thread/innodb/io_write_thread
[init threads] os name:ib_io_wr-4 -- mysql name:thread/innodb/io_write_thread
[init threads] os name:ib_pg_flush_co -- mysql name:thread/innodb/page_flush_coordinator_thread
[init threads] os name:ib_pg_flush-1 -- mysql name:thread/innodb/page_flush_thread
[init threads] os name:ib_pg_flush-2 -- mysql name:thread/innodb/page_flush_thread
[init threads] os name:ib_pg_flush-3 -- mysql name:thread/innodb/page_flush_thread
[init threads] os name:ib_recv_write -- mysql name:thread/innodb/recv_writer_thread
[init threads] os name:ib_log_checkpt -- mysql name:thread/innodb/log_checkpointer_thread
[init threads] os name:ib_log_fl_notif -- mysql name:thread/innodb/log_flush_notifier_thread
[init threads] os name:ib_log_flush -- mysql name:thread/innodb/log_flusher_thread
[init threads] os name:ib_log_wr_notif -- mysql name:thread/innodb/log_write_notifier_thread
[init threads] os name:ib_log_writer -- mysql name:thread/innodb/log_writer_thread
[init threads] os name:ib_par_rseg-0 -- mysql name:thread/innodb/parallel_rseg_init_thread
[init threads] os name:ib_par_rseg-0 -- mysql name:thread/innodb/parallel_rseg_init_thread
[init threads] os name:ib_srv_lock_to -- mysql name:thread/innodb/srv_lock_timeout_thread
[init threads] os name:ib_srv_err_mon -- mysql name:thread/innodb/srv_error_monitor_thread
[init threads] os name:ib_srv_mon -- mysql name:thread/innodb/srv_monitor_thread
[init threads] os name:ib_buf_resize -- mysql name:thread/innodb/buf_resize_thread
[init threads] os name:ib_src_main -- mysql name:thread/innodb/srv_master_thread
[init threads] os name:ib_dict_stats -- mysql name:thread/innodb/dict_stats_thread
[init threads] os name:ib_fts_opt -- mysql name:thread/innodb/fts_optimize_thread
[init threads] os name:xpl_worker-1 -- mysql name:thread/mysqlx/worker
[init threads] os name:xpl_worker-2 -- mysql name:thread/mysqlx/worker
[init threads] os name:xpl_accept-1 -- mysql name:thread/mysqlx/acceptor_network
[init threads] os name:ib_buf_dump -- mysql name:thread/innodb/buf_dump_thread
[init threads] os name:ib_clone_gtid -- mysql name:thread/innodb/clone_gtid_thread
[init threads] os name:ib_srv_purge -- mysql name:thread/innodb/srv_purge_thread
[init threads] os name:ib_srv_wkr-1 -- mysql name:thread/innodb/srv_worker_thread
[init threads] os name:ib_srv_wkr-2 -- mysql name:thread/innodb/srv_worker_thread
[init threads] os name:ib_srv_wkr-3 -- mysql name:thread/innodb/srv_worker_thread
[init threads] os name:sig_handler -- mysql name:thread/sql/signal_handler
[init threads] os name:xpl_accept-2 -- mysql name:thread/mysqlx/acceptor_network
[init threads] os name:xpl_accept-3 -- mysql name:thread/mysqlx/acceptor_network
[init threads] os name:gtid_zip -- mysql name:thread/sql/compress_gtid_table
[init threads] os name:connection -- mysql name:thread/sql/one_connection

可以看到建立的線程非常的多,但是我們得到它們的對應關系這就夠了。這里不一一討論每個線程的功能了,不過大部分我們都非常熟悉了,比如purge線程/cleaner線程 ,這里我列出一些,其他的就自己看看吧。

  • purge線程 srv_purge_thread 主要用于清理delete flag和釋放undo表空間
  • clean線程 page_cleaner_thread DBWR 主要用于進行臟數據的刷盤和LRU鏈表的管理
  • 異步IO線程 io_read_thread/io_write_thread 通常數據預讀和刷臟會使用到異步AIO,用于合并可能的散列IO為連續IO提高性能;
  • 字典收集線程 dict_stats_thread 數據修改的10%后會觸發統計數據的收集;
  • 鎖超時監控線程srv_lock_timeout_thread 用于監控innodb行鎖的超時,超時進行事務回退
  • GTID壓縮線程compress_gtid_table 將歷史的gtid壓縮為范圍,避免gtid_executed表過長
  • slave io線程 slave_io 從庫接收來自DUMP線程的binlog Event。將這些Event寫入到relay log;
  • slave dump線程 這是前臺線程 主庫監控binlog的變化,發送binlog Event
  • slave sql線程 slave_sql 從庫負責執行binlog Event
  • 用戶線程one_connection 一個session就是一個用戶線程,對于用戶線程而言??梢酝ㄟ^processlist_id和show processlist;
  • srv_error_monitor_thread 所謂的信號量監控線程,注意這個信號量不是OS的信號量。是Innodb內部的rw lock和mutex
  • srv_monitor_thread 這個線程當參數innodb_status_output打開的情況下,每15秒輸出一個show engine innodb status信息到日志文件。也會自動開啟比如Innodb內存不足會自動開啟。
  • log_writer線程:將redo寫到redo文件;
  • log_write_notifier線程:通知用戶會話寫入redo文件結束;
  • log_flusher線程:將redo fsync到redo文件;
  • log_flush_notifier線程:通知用戶會話fsync結束;
  • log_checkpointer線程:定期檢查臟數據寫盤的redo 位置。

五、用pthread_setname_np為線程命名

這里我就隨便寫了4個循環的線程調用這個函數為我的線程命名為D-GPWK,需要耗用較高的CPU,看到的結果如下:

image.png

如果這個線程是MySQL的線程,當看到這個結果,我們就能明白大概的方向了。

《MySQL主從原理》作者:高鵬(八怪)

責任編輯:武曉燕 來源: MySQL學習
相關推薦

2021-05-27 21:18:56

谷歌Fuchsia OS操作系統

2017-03-06 15:43:33

Springboot啟動

2020-05-08 08:01:11

多線程Redis處理

2022-04-08 07:32:24

JavaJUCThreadLoca

2011-07-27 09:41:34

MySQL

2015-07-08 10:37:12

MySQL高可用架構業務架構

2021-10-18 12:27:53

博客園

2010-04-01 16:38:06

云計算

2025-11-07 00:00:00

2021-09-26 15:58:05

MySQL SQL 語句數據庫

2019-07-07 08:18:10

MySQL索引數據庫

2012-06-12 11:40:39

商務辦公戴爾

2023-04-03 07:23:06

Java線程通信

2024-07-08 00:00:07

2023-10-31 07:40:15

EslintJSHint

2021-02-25 14:11:10

數據安全網絡安全數字經濟

2012-02-17 10:22:31

2009-07-03 18:12:49

JSP頁面

2020-02-23 16:33:02

GitHub印度子公司

2021-07-29 20:29:36

Linux c 代碼Java
點贊
收藏

51CTO技術棧公眾號

日本乱理伦在线| 精品黑人一区二区三区国语馆| 久9久9色综合| 欧美日韩视频一区二区| 欧美 国产 精品| 天天操天天舔天天干| 日韩**一区毛片| 欧美激情精品久久久久久黑人| 野花社区视频在线观看| 日本午夜精品久久久久| 五月天久久比比资源色| 亚洲一卡二卡三卡四卡无卡网站在线看 | 色综合视频一区中文字幕| 巨胸大乳www视频免费观看| 成人久久精品| 色狠狠一区二区| 337p亚洲精品色噜噜狠狠p| 黄色片免费在线| 国产99一区视频免费| 国产精品视频自在线| 日本少妇xxxx动漫| 9999国产精品| 亚洲人成网站999久久久综合| 亚洲天堂一区二区在线观看| 吉吉日韩欧美| 亚洲线精品一区二区三区八戒| 亚洲免费在线精品一区| 无码国产精品96久久久久| 国产主播一区二区三区| 国产精品久久激情| 日韩欧美亚洲一区二区三区| 综合在线一区| 中文字幕亚洲一区二区三区五十路| 亚洲香蕉中文网| 国产精品一区二区精品视频观看| 欧美天堂一区二区三区| 国产成人a亚洲精v品无码| 欧美色图天堂| 亚洲欧美日韩国产综合| 亚洲aⅴ天堂av在线电影软件| 香蕉视频黄在线观看| 国产高清在线观看免费不卡| 成人午夜激情免费视频| 这里只有精品国产| 日韩av一级电影| 日韩av毛片网| 国产91国语对白在线| 国产亚洲精品bv在线观看| 隔壁老王国产在线精品| 精品少妇theporn| 亚洲色图88| 欧美成人激情视频| 久草综合在线视频| 你懂的视频一区二区| 久久综合久久美利坚合众国| 欧美a级片免费看| 999国产精品永久免费视频app| 中文字幕日韩在线播放| 国产三级短视频| 色无极亚洲影院| 久久久成人精品| 国产不卡在线观看视频| 日韩中文在线电影| 久久久精品999| 亚洲色偷偷综合亚洲av伊人| 在线国产一区| 欧美大片免费观看在线观看网站推荐| 免费麻豆国产一区二区三区四区| 在线欧美三区| 欧美一级黄色网| 亚洲成人第一网站| 日韩国产一区二| 国产日韩亚洲欧美| 一级特黄aaa大片| 国产在线视频精品一区| 91在线精品观看| 人妻无码中文字幕| 久久久久久久久免费| 亚洲高清资源综合久久精品| 午夜av在线免费观看| 亚洲www啪成人一区二区麻豆| 国产免费黄色av| 在线国产成人影院| 欧美二区三区的天堂| 麻豆av免费看| 久久99高清| 久久久国产成人精品| 日韩欧美一区二区一幕| 日韩中文字幕91| 5g国产欧美日韩视频| 人人妻人人澡人人爽精品日本| 91美女在线观看| 亚洲一区二区在线看| 暖暖在线中文免费日本| 色爱区综合激月婷婷| 久久人人爽人人片| 亚洲日产av中文字幕| 日韩在线国产精品| 日韩三级视频在线播放| 毛片不卡一区二区| 精品免费日产一区一区三区免费| 成a人片在线观看www视频| 亚洲欧美日韩国产综合在线 | 九九热最新地址| 日韩香蕉视频| 91探花福利精品国产自产在线| 污视频软件在线观看| 国产精品成人免费| 欧美 国产 综合| 日本精品在线播放| 在线观看国产精品日韩av| 国产精品999久久久| 久久国产三级精品| 欧美激情第六页| 久久www人成免费看片中文| 欧美色精品在线视频| 国产精品久久久久久在线观看| 成人中文在线| 日本国产精品视频| 亚洲毛片欧洲毛片国产一品色| 国产精品久久国产精麻豆99网站| 亚洲色成人一区二区三区小说| 日韩一二三区在线观看| www.xxxx精品| 亚洲精品国产精品国自产网站按摩| thepron国产精品| 国产91沈先生在线播放| 四虎永久精品在线| 这里只有精品丝袜| 国产性生活视频| 97精品国产露脸对白| 国产1区2区3区中文字幕| 天天综合91| 色青青草原桃花久久综合| 无码aⅴ精品一区二区三区| jiyouzz国产精品久久| 日本人妻伦在线中文字幕| 日韩电影精品| 色综合影院在线| 中文字幕日日夜夜| 日本一区二区不卡视频| aa在线免费观看| 亚洲伊人春色| 欧美做爰性生交视频| 日本成人一区| 一本色道**综合亚洲精品蜜桃冫| 亚洲第九十七页| 国产精品视频久久一区| 激情久久av| 午夜裸体女人视频网站在线观看| 亚洲国内高清视频| 国产女同在线观看| 91小视频在线免费看| 每日在线观看av| 黄色网一区二区| 97视频在线观看视频免费视频| 天堂国产一区二区三区| 精品福利一区二区| 一本加勒比北条麻妃| 噜噜噜久久亚洲精品国产品小说| 欧美最大成人综合网| 福利一区二区免费视频| 日韩视频在线免费观看| 国产麻豆91视频| 亚洲综合一区在线| 变态另类丨国产精品| 久久亚洲二区| 亚洲欧洲精品一区二区| 免费观看亚洲天堂| 久久久中文字幕| 日本福利在线观看| 欧美日韩在线综合| 欧美激情精品久久| 97精品电影院| 天天干天天玩天天操| 欧美成人亚洲| 九九99久久| 国产激情久久| 久久久久久久色| 黄视频在线观看免费| 欧美精品18+| 国产香蕉视频在线| 日本一区二区动态图| aaaaa黄色片| 午夜在线视频观看日韩17c| 亚洲欧洲中文| 99精品国产高清一区二区麻豆| 欧美在线免费看| 男人影院在线观看| 亚洲精品wwwww| 怡红院男人的天堂| 亚洲大片免费看| 日本黄色激情视频| 不卡免费追剧大全电视剧网站| 亚洲欧美日韩一级| 国内揄拍国内精品久久| 日韩av图片| 成人台湾亚洲精品一区二区| 国产精品网红直播| 深夜福利视频一区二区| 日韩亚洲精品电影| 婷婷亚洲一区二区三区| 在线综合视频播放| 一级成人黄色片| 亚洲人成伊人成综合网小说| 在线 丝袜 欧美 日韩 制服| 国产一区亚洲一区| 麻豆传传媒久久久爱| 国自产拍偷拍福利精品免费一| 麻豆国产精品一区二区三区| av在线免费不卡| 久久婷婷国产91天堂综合精品| 欧美三级网页| 一区二区精品在线| 性欧美xxxx免费岛国不卡电影| 亚洲自拍av在线| 韩国精品视频在线观看| 欧美一级大片视频| 色呦呦在线观看视频| 色婷婷av一区二区三区久久| 日本中文字幕电影在线观看| 欧美变态tickle挠乳网站| 中文字幕第31页| 欧美性高潮床叫视频| 粉嫩av性色av蜜臀av网站| 欧美激情在线一区二区三区| 欧美精品黑人猛交高潮| 国产.欧美.日韩| 制服下的诱惑暮生| 经典三级在线一区| 999精品视频在线| 另类av一区二区| 欧美日本视频在线观看| 亚洲福利专区| 99久久免费观看| 亚洲九九在线| av磁力番号网| 亚洲成av人片一区二区密柚| 亚洲一卡二卡三卡四卡无卡网站在线看| 国产一区二区三区四区| 欧美激情第一页在线观看| 日韩精品亚洲aⅴ在线影院| 激情一区二区三区| 久久久精品国产**网站| 国产伦精品一区二区三区视频免费 | 成人影院免费观看| 亚洲色图50p| 黄色网址在线播放| 亚洲午夜av久久乱码| 黄色软件在线观看| 色老头一区二区三区在线观看| 在线免费观看黄色网址| 精品国产一区二区三区久久久| 香蕉视频网站在线观看| 精品国产欧美一区二区五十路| 黄色网址免费在线观看| 欧美日韩成人精品| 麻豆av在线免费观看| 992tv在线成人免费观看| 天堂√8在线中文| 国产不卡精品视男人的天堂| jizz亚洲女人高潮大叫| 91在线高清视频| 97品白浆高清久久久久久| 国产亚洲欧美一区二区三区| 欧美一级二级三级视频| 日韩理论片在线观看| 五月精品视频| 国产91视频一区| 国产日韩亚洲| 色播五月综合网| 国产精品亚洲一区二区三区在线| 黄色片免费网址| 波多野结衣中文字幕一区| 新91视频在线观看| 国产精品第五页| 麻豆精品一区二区三区视频| 一区二区三区精品在线观看| 日本中文字幕在线| 欧美色图片你懂的| 亚洲不卡免费视频| 国产婷婷97碰碰久久人人蜜臀| 91社区在线观看| 久久久久亚洲精品国产| 欧美与亚洲与日本直播| 99re资源| 欧美日韩高清| 成人在线播放网址| 日韩电影一区二区三区| 深夜视频在线观看| 国产欧美精品区一区二区三区 | 黄色一级大片在线免费观看| 亚洲第一精品在线| 中文字幕免费观看视频| 精品国精品自拍自在线| 97在线观看免费观看高清| 欧美精品999| 日本久久久久| 欧美激情专区| 亚洲午夜久久久久久尤物 | 国产在视频一区二区三区吞精| 操人视频欧美| 日韩中文欧美| 情侣黄网站免费看| 国产精品一级片在线观看| 国产视频不卡在线| 精品久久久久久久久久久久久久| 91久久久久国产一区二区| 日韩激情视频在线播放| 中文字幕有码在线观看| 国产精品网站大全| 欧美美女在线直播| 国产人妻人伦精品| 看片的网站亚洲| 精品人妻互换一区二区三区 | 探花国产精品一区二区| 亚洲成人精品久久| 在线中文免费视频| 成人福利视频在线观看| 欧美综合在线视频观看| 国产偷人视频免费| 成人午夜电影网站| 九九视频在线免费观看| 91精品国产91久久综合桃花| aaa在线观看| 日韩av电影免费观看高清| 欧美jizz19性欧美| 国产九九九九九| 丰满亚洲少妇av| 久久久久97国产| 日韩一卡二卡三卡四卡| 激情在线小视频| 国产精品永久在线| 波多野结衣的一区二区三区 | 成人黄色视屏网站| 欧美久久久久久久| 久久精品综合| 中国毛片在线观看| 91久久线看在观草草青青| 免费一级在线观看播放网址| 亲子乱一区二区三区电影 | 午夜精品久久久久久久蜜桃| 精品亚洲夜色av98在线观看 | 在线看片欧美| av免费观看不卡| 午夜亚洲福利老司机| 亚洲aⅴ在线观看| 欧洲中文字幕国产精品| 国产探花在线精品一区二区| 日韩视频免费在线播放| 国产片一区二区三区| 中文字幕在线观看精品| 啊v视频在线一区二区三区| 激情综合婷婷| 欧美中文字幕在线观看视频| 97久久精品人人做人人爽50路| 亚洲视频 欧美视频| 国产香蕉精品视频一区二区三区| 九色成人搞黄网站| 一区二区在线观| 国产福利一区在线| 激情综合网五月婷婷| 日韩精品视频在线免费观看| 影视一区二区三区| 在线免费观看成人网| 国产成人在线视频免费播放| 韩国av免费观看| 尤物yw午夜国产精品视频| 亚瑟国产精品| 国产欧美日韩小视频| 久久人人爽人人爽| 一区二区日韩视频| 欧美激情一级欧美精品| 性人久久久久| 日韩成人精品视频在线观看| 亚洲国产一二三| 邻居大乳一区二区三区| 成人免费淫片视频软件| 一区在线视频观看| 日本性高潮视频| 91精品久久久久久久99蜜桃 | 成人福利视频在线观看| 91久久夜色精品国产九色| www久久久久久久| 欧美成人午夜电影| 欧美影视资讯| 欧美另类videosbestsex日本| 26uuu久久天堂性欧美| 中文字幕有码视频| 高清在线视频日韩欧美| 久久精品国产68国产精品亚洲| 岛国精品一区二区三区| 色哟哟在线观看一区二区三区| av免费网站在线观看| 日本高清视频一区二区三区| 国产高清久久久| 中文字幕第31页| 57pao国产成人免费| 中文字幕人成人乱码| 成人无码av片在线观看|