最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL thread_stack連接線(xiàn)程的優(yōu)化

 更新時(shí)間:2017年04月07日 19:59:00   投稿:mdxy-dxy  
當(dāng)有新的連接請(qǐng)求時(shí),MySQL首先會(huì)檢查T(mén)hread Cache中是否存在空閑連接線(xiàn)程,如果存在則取出來(lái)直接使用,如果沒(méi)有空閑連接線(xiàn)程,才創(chuàng)建新的連接線(xiàn)程

MySQL連接不僅能通過(guò)網(wǎng)絡(luò)方式,還可以通過(guò)命名管道的方式,不論是哪種方式連接MySQL,在MySQL中都是通過(guò)線(xiàn)程的方式管理所有客戶(hù)端請(qǐng)求的。每一個(gè)客戶(hù)端連接都會(huì)有一個(gè)與之對(duì)應(yīng)的連接線(xiàn)程。在MySQL中實(shí)現(xiàn)了一個(gè)Thread Cache池,將空閑的連接線(xiàn)程存放其中,而不是完成請(qǐng)求后就銷(xiāo)毀。這樣,當(dāng)有新的連接請(qǐng)求時(shí),MySQL首先會(huì)檢查T(mén)hread Cache中是否存在空閑連接線(xiàn)程,如果存在則取出來(lái)直接使用,如果沒(méi)有空閑連接線(xiàn)程,才創(chuàng)建新的連接線(xiàn)程。具體參數(shù):
Thread_cache_size:Thread Cache池中應(yīng)該存放的連接線(xiàn)程數(shù)。
Thread_stack:每個(gè)連接線(xiàn)程被創(chuàng)建時(shí),MySQL給它分配的內(nèi)存大小。當(dāng)MySQL創(chuàng)建一個(gè)新的連接線(xiàn)程時(shí),需要給它分配一定大小的內(nèi)存堆棧空間,以便存放客戶(hù)端的請(qǐng)求的Query及自身的各種狀態(tài)和處理信息。
查看連接線(xiàn)程相關(guān)的系統(tǒng)變量的設(shè)置值: 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)

如圖,系統(tǒng)設(shè)置了Thread Cache池最多將緩存25個(gè)連接線(xiàn)程,每個(gè)連接線(xiàn)程創(chuàng)建之初,系統(tǒng)分配192KB的內(nèi)存堆棧給它。
查看系統(tǒng)被連接的次數(shù)及當(dāng)前系統(tǒng)中連接線(xiàn)程的狀態(tài)值

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)

系統(tǒng)啟動(dòng)到現(xiàn)在共接受到客戶(hù)端的連接620次,共創(chuàng)建了7個(gè)連接線(xiàn)程,當(dāng)前有1個(gè)連接線(xiàn)程處于和客戶(hù)端連接的狀態(tài),而3個(gè)連接狀態(tài)的線(xiàn)程中只有一個(gè)處于 active 狀態(tài),即只有一個(gè)正在處理客戶(hù)端提交的請(qǐng)求,。而在Thread Cache池中緩存了3個(gè)連接線(xiàn)程。

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

實(shí)際應(yīng)用:

針對(duì)16G/32G的機(jī)器,一般設(shè)置 512K

當(dāng)然如果遇到下面的錯(cuò)誤提示就應(yīng)該考慮增加這個(gè)值了。

mysql-debug: Thread stack overrun

bug info

報(bào)錯(cuò)信息:
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.

官方相應(yīng)信息:

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';

查詢(xún)當(dāng)前數(shù)據(jù)庫(kù)的默認(rèn)線(xiàn)程棧的大小,一般情況下都能正常使用,但是當(dāng)查詢(xún)語(yǔ)句或者存儲(chǔ)過(guò)程復(fù)雜時(shí)會(huì)報(bào)Thread stack overrun錯(cuò)誤,此時(shí)只要修改默認(rèn)配置就可以。

解決

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

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

[mysqld]
thread_stack = 256k

相關(guān)文章

最新評(píng)論

内乡县| 许昌县| 定西市| 泽州县| 广宁县| 墨竹工卡县| 呼伦贝尔市| 宝山区| 宝山区| 白银市| 美姑县| 宜兰县| 牟定县| 公安县| 白玉县| 本溪市| 乐业县| 四子王旗| 玛沁县| 齐河县| 荣昌县| 成安县| 上蔡县| 富民县| 玉田县| 汉寿县| 郴州市| 普定县| 洛宁县| 兴安县| 佛冈县| 平和县| 长寿区| 南昌县| 昆明市| 普定县| 怀化市| 桂东县| 望江县| 建德市| 温宿县|