麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

MySQL thread_stack連接線程的優化

2024-07-24 13:12:58
字體:
來源:轉載
供稿:網友

MySQL連接不僅能通過網絡方式,還可以通過命名管道的方式,不論是哪種方式連接MySQL,在MySQL中都是通過線程的方式管理所有客戶端請求的。每一個客戶端連接都會有一個與之對應的連接線程。在MySQL中實現了一個Thread Cache池,將空閑的連接線程存放其中,而不是完成請求后就銷毀。這樣,當有新的連接請求時,MySQL首先會檢查Thread Cache中是否存在空閑連接線程,如果存在則取出來直接使用,如果沒有空閑連接線程,才創建新的連接線程。具體參數:
Thread_cache_size:Thread Cache池中應該存放的連接線程數。
Thread_stack:每個連接線程被創建時,MySQL給它分配的內存大小。當MySQL創建一個新的連接線程時,需要給它分配一定大小的內存堆??臻g,以便存放客戶端的請求的Query及自身的各種狀態和處理信息。
查看連接線程相關的系統變量的設置值: show variables like 'thread%';

mysql> show variables like 'thread%';
+-------------------+--------+
| Variable_name | Value |
+-------------------+--------+
| thread_cache_size | 32 |
| thread_stack | 196608 |
+-------------------+--------+
2 rows in set (0.00 sec)

如圖,系統設置了Thread Cache池最多將緩存25個連接線程,每個連接線程創建之初,系統分配192KB的內存堆棧給它。
查看系統被連接的次數及當前系統中連接線程的狀態值

mysql> show status like 'connections';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections | 620 |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show status like '%thread%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| Delayed_insert_threads | 0 |
| Slow_launch_threads | 0 |
| Threads_cached | 3 |
| Threads_connected | 4 |
| Threads_created | 7 |
| Threads_running | 1 |
+------------------------+-------+
6 rows in set (0.00 sec)

系統啟動到現在共接受到客戶端的連接620次,共創建了7個連接線程,當前有1個連接線程處于和客戶端連接的狀態,而3個連接狀態的線程中只有一個處于 active 狀態,即只有一個正在處理客戶端提交的請求,。而在Thread Cache池中共緩存了3個連接線程。

Thread Cache 命中率:
Thread_Cache_Hit = (Connections - Threads_created) / Connections * 100%;
一般在系統穩定運行一段時間后,Thread Cache命中率應該保持在90%左右才算正常。

實際應用:

針對16G/32G的機器,一般設置 512K

當然如果遇到下面的錯誤提示就應該考慮增加這個值了。

mysql-debug: Thread stack overrun

bug info

報錯信息:
java.sql.SQLException: Thread stack overrun: 5456 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack.

官方相應信息:

The default (192KB) is large enough for normal operation. If the thread stack size is too small, it limits the complexity of the SQL statements that the server can handle, the recursion depth of stored procedures, and other memory-consuming actions

可以使用

show variables where `variable_name` = 'thread_stack';

查詢當前數據庫的默認線程棧的大小,一般情況下都能正常使用,但是當查詢語句或者存儲過程復雜時會報Thread stack overrun錯誤,此時只要修改默認配置就可以。

解決

windows: 修改mysql安裝目錄下的my-small.ini或者my.ini設置為256k,或者更大,然后重啟服務

[mysqld]
thread_stack = 256k
linux: 同樣要修改配置文件,但是?。?!,不是安裝目錄下的配置文件,是/etc/my.cnf,只有這個文件才能生效,然后重啟服務service mysql restart

[mysqld]
thread_stack = 256k

 

注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 免费a级观看 | 免费一级毛片在线播放视频 | 欧产日产国产精品乱噜噜 | 精品一区二区三区在线观看国产 | 性猛aa久久久 | 欧美成人精品一区二区男人小说 | 在线播放视频一区二区 | 黄色成年在线观看 | 日韩精品| 国产精品久久久久一区二区 | 国产精品一区二区免费在线观看 | 理论片中文字幕 | 国内精品久久久久久久影视红豆 | 羞羞视频免费网站含羞草 | 黄色网址在线播放 | 九九视屏 | 护士xxxx| 视频一区二区久久 | 第四色成人网 | 爱视频福利 | 亚州综合一区 | 国产一区二区三区四区在线 | 午夜在线视频一区二区三区 | 精品一区二区三区免费毛片爱 | 午夜爽爽爽男女免费观看hd | 日韩a毛片免费观看 | 多男操一女视频 | caoporn国产一区二区 | 久久网国产 | 国产亚洲福利 | 久久蜜桃香蕉精品一区二区三区 | 亚洲网站在线观看视频 | 狠狠一区二区 | 国产一精品久久99无吗一高潮 | 国产精品一区二区三区在线看 | 深夜免费视频 | 久久久久久片 | 欧日一级片 | gril hd| 亚洲欧美日韩中文在线 | 精品久久久久久国产三级 |