[英]How simultaneous queries are handled in a MySQL database?
我正在使用MySQL數據庫,我想知道我是否同時進行多個(500個或更多)查詢以獲取來自多個表的信息,如何處理這些查詢? 順序還是並行?
每個連接最多可以同時運行一個查詢,並在單個線程中執行。 服務器為每個查詢打開一個線程。
通常,希望查詢不會相互阻塞。 然而,根據引擎和查詢,它們可能會。 MySQL中有很多鎖定,在手冊中有詳細討論。
但是,如果它們不相互阻擋,它們仍然可以通過消耗資源來減慢速度。 IO操作是這些減速的特定來源。 如果您的數據不適合內存,您應該將並行查詢的數量限制為您的IO子系統可以處理的內容,否則事情會變得非常糟糕。 測量是關鍵。
我通常會說,如果一次運行500個查詢(而不是等待鎖定),您可能無法從硬件中獲得最大價值(您有500個核心嗎?有多少線程在等待IO?)
通常,所有查詢都將並行運行。
但是......有一些例外。 根據您的事務隔離級別,可以在更新時鎖定行。 在此處閱讀更多相關信息: http : //dev.mysql.com/doc/refman/5.1/en/dynindex-isolevel.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.