日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql清理连接数缓存,MySQL连接池、线程缓存、线程池的区别

發布時間:2025/4/16 数据库 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql清理连接数缓存,MySQL连接池、线程缓存、线程池的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. MySQL連接池

連接池通常實現在client端,是指應用(客戶端)預先創建一定的連接,利用這些連接服務于客戶端所有的DB請求。如果某一個時刻,空閑的連接數小于DB的請求數,則需要將請求排隊,等待空閑連接處理。

通過連接池可以復用連接,避免連接的頻繁創建和釋放,從而減少請求的平均響應時間,并且在請求繁忙時,通過請求排隊,可以緩沖應用對DB的沖擊。

常見的MySQL連接池Tomcat、WildFly(JBoss)、 c3p0、 Druid等。

2. MySQL線程緩存

線程緩存實現在server端,client連接對應的線程會被緩存起來,緩存的線程數量由 thread_cache_size大小決定。當服務器不斷有大量連接創建、關閉的場景下,使用線程緩存能夠重用緩存起來的線程,避免了線程大量創建銷毀帶來的性能消耗,但是仍然無法解決高連接數帶來的線程數過高的問題。

線程緩存命中率計算:(1-Threads_created/Connections)

注意:

當線程池功能開啟后,線程緩存會自動失效,即變量thread_cache_size將被忽略,Threads_cached 狀態變量始終為0。

3. MySQL線程池

線程池實現在server端,通過創建一定數量的線程服務DB請求,相對于one-conection-per-thread的一個線程服務一個連接的方式,線程池服務的最小單位是SQL語句,即一個線程可以對應多個活躍的連接。通過線程池,可以將server端的服務線程數控制在一定的范圍,減少了系統資源的競爭和線程創建、銷毀以及上下文切換帶來的消耗,同時也避免出現高連接數導致的高并發問題。

線程池是MySQL 5.6 的開始提供的一個核心功能,MySQL 5.6 之前,處理連接的方式是 one-thread-per-connection, 對于每一個client 連接都會創建一個獨立的線程,請求結束,銷毀線程。高并發下,導致線程的頻繁創建和釋放,以及頻繁的線程上下文切換,降低了資源利用率。通過線程池,一個線程可以處理多個client連接請求,減少線程頻繁創建釋放以及線程上下文切換帶來的性能損耗。

通過參數thread_handling來控制是否使用線程池,thread_handling 取值:

no-threads

one-thread-per-connection(默認值)

loaded-dynamically(大于等于5.7.9版本)

pool-of-threads(Percona版本)

Percona 在MySQL社區版基礎上為 thread_handling 參數增加了pool-of-threads,Percona 的線程池實現在server層,與官方版以plugin形式實現不同,Percona版線程池與官方企業版并不兼容。

總結

以上是生活随笔為你收集整理的mysql清理连接数缓存,MySQL连接池、线程缓存、线程池的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。