如何理解MySQL中per_thread_buffers優(yōu)化,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)公司提供成都網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)頁設(shè)計,成都品牌網(wǎng)站建設(shè),1元廣告等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10年的網(wǎng)站開發(fā)和建站經(jīng)驗,助力企業(yè)信息化建設(shè),成功案例突破超過千家,是您實現(xiàn)網(wǎng)站建設(shè)的好選擇.
對于per_thread_buffers,可以理解為Oracle的PGA,為每個連接到MySQL的用戶進程分配的內(nèi)存,包括以下幾個參數(shù):
1、read_buffer_size
該參數(shù)用于表的順序描述,表示每個線程分配的緩沖區(qū)的大小。比如,在進行全表掃描時,MySQL會按照數(shù)據(jù)的存儲順序依次讀取數(shù)據(jù)塊,每次讀取的數(shù)據(jù)塊首先會暫存在per_thread_buffers中,當(dāng)buffer空間被寫滿或者全部數(shù)據(jù)讀取結(jié)束后,再將buffer中的數(shù)據(jù)返回給上層調(diào)用者,以提高效率,默認(rèn)為128KB,一般在128KB-256KB。
2、read_rnd_buffer_size
該參數(shù)用戶表隨機讀取,表示每個線程分配的緩沖區(qū)大小。比如,按照一個非索引字段做order by排序操作時候,就會利用這個緩沖區(qū)暫存所讀取的數(shù)據(jù)。默認(rèn)為256KB,一般為128KB-256KB。
3、sort_buffer_size
表在進行order by和group by 排序操作時,由于排序的字段沒有索引,會出現(xiàn)using filesort,為了提高性能,可用此參數(shù)增加每個線程分配的緩沖區(qū)大小,默認(rèn)為2MB,不用太大,一般為128KB-256KB。
4、thread_stack
該參數(shù)表示每個線程的堆棧大小。默認(rèn)為182KB,64系統(tǒng)設(shè)置為256KB即可。
5、join_buffer_size
表進行join連接操作時,如果關(guān)聯(lián)的字段沒有索引,會出現(xiàn)using join buffer,為了提高性能,可用此參數(shù)增加每個線程分配的緩沖區(qū)大小。默認(rèn)為128KB。一般為128KB-256KB,出現(xiàn)using join buffer時候要增加索引來解決。
6、binlog_cache_size
數(shù)據(jù)庫中沒有什么大事務(wù),寫入也不是特別頻繁,將其設(shè)置為1-2MB即可,如果有很大的事務(wù),可以適當(dāng)增加這個緩存值,以獲得更好的性能。
7、max_connections
最大連接數(shù),默認(rèn)為100,一般設(shè)置為512-1000即可。
關(guān)于如何理解MySQL中per_thread_buffers優(yōu)化問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。