mysql sort buffer和join buffer學習筆記

來源:互聯網
上載者:User

相關參數查看命令

SELECT @@join_buffer_size;

SELECT @@sort_buffer_size;

==========================================================================================

join_buffer_size

當我們的join是ALL,index,rang或者Index_merge的時候使用的buffer。

實際上這種join被稱為FULL JOIN。

實際上參與join的每一個表都需要一個join buffer。

所以在join出現的時候,至少是2個。

join buffer的這隻在mysql5.1.23版本之前最大為4G,但是從5.1.23版本開始,再出了windows之外的64為平台上可以超出4GB的限制。

系統預設是128KB。

==========================================================================================

sort_buffer_size

sort buffer是系統中對資料進行排序的時候用到的Buffer。

sort buffer同樣是針對單個線程的,所以當多個線程同時進行排序的時候,系統中就會出現多個sort buffer。

我們一般可以通過增大sort buffer的大小來提高order by或者group by的處理效能。

系統預設大小時2MB,最大限制和join buffer一樣。

==========================================================================================

最佳化建議

如果應用中,很少出現join語句,則可以不用太在乎join_buffer_size參數的設定大小。

如果join語句不是很少的話,個人建議可以適當增大join_buffer_size到1MB左右,如果記憶體充足可以設定為2MB。

對於sort_buffer_size來說,一般設定為2-4MB可以滿足大多數應用的需求。

當然,如果應用中的排序都比較大。記憶體充足卻並發量不是特別大的時候,也可以繼續增大sort buffer size的設定。

最後需要注意的是,每一個線程都會建立自己獨立的buffer而不是整個系統共用,所以設定的值過大會造成系統記憶體不足。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.