久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

mysql數據庫每次查詢是一條線程嗎?

瀏覽:144日期:2022-06-21 13:53:32

問題描述

對于mysql的查詢,請問是IO復用,線程池,進程池中的哪種模型?或者是其他模型?可以配置嗎?

問題解答

回答1:

MySQL的查詢使用的是線程池。當有大量請求并發訪問時,一定伴隨著資源的不斷創建和釋放,導致資源利用率低,降低了服務質量。線程池技術,預先會創建一定數量的線程,當有請求達到時,線程池分配一個線程提供服務,請求結束后,該線程又去服務其他請求。 通過這種方式,避免了線程和內存對象的頻繁創建和釋放,降低了服務端的并發度,減少了上下文切換和資源的競爭,提高資源利用效率。在MySQL早期的版本中,處理連接的方式是One-Connection-Per-Thread,即對于每一個數據庫連接,MySQL-Server都會創建一個獨立的線程服務,請求結束后,銷毀線程。再來一個連接請求,則再創建一個連接,結束后再進行銷毀。但是,這種方式在高并發情況下,會導致線程的頻繁創建和釋放。當然,通過thread-cache,我們可以將線程緩存起來,以供下次使用,避免頻繁創建和釋放的問題,但是無法解決高連接數的問題。One-Connection-Per-Thread方式隨著連接數暴增,導致需要創建同樣多的服務線程,高并發線程意味著高的內存消耗,更多的上下文切換(cpu cache命中率降低)以及更多的資源競爭,導致服務出現抖動。相對于One-Thread-Per-Connection方式,一個線程對應一個連接,Thread-Pool實現方式中,線程處理的最小單位是statement(語句),一個線程可以處理多個連接的請求。這樣,在保證充分利用硬件資源情況下(合理設置線程池大小),可以避免瞬間連接數暴增導致的服務器抖動。

相關文章:
主站蜘蛛池模板: 乐平市| 且末县| 景德镇市| 泗洪县| 北流市| 古丈县| 筠连县| 庆阳市| 兴业县| 广德县| 洞头县| 镇安县| 临清市| 莱阳市| 托克逊县| 东乡| 洞头县| 焦作市| 平安县| 昆山市| 广水市| 六盘水市| 溧水县| 翁源县| 文昌市| 恩平市| 丹江口市| 邛崃市| 富宁县| 绵竹市| 柘城县| 中方县| 丹凤县| 九龙县| 集安市| 三河市| 唐海县| 华阴市| 仁怀市| 宝应县| 山阳县|