mysql read_buffer_size 設(shè)置多少合適
MySQL手冊(cè)里關(guān)于read_rnd_buffer_size的解釋如下:
“這個(gè)參數(shù)用在sort查詢之后 ,以保證獲取以順序的方式獲取到查詢的數(shù)據(jù)。如果你有很多order by 查詢語(yǔ)句,增長(zhǎng)這值能夠提升性能?!?/p>
這個(gè)解釋足夠簡(jiǎn)練,但沒有準(zhǔn)確的告訴我們這個(gè)參數(shù)工作在哪一層,SQL層還是引擎層?
老實(shí)說(shuō),這個(gè)參數(shù)和read_buffer_size很像,read_buffer_size僅僅用于MyISAM引擎,我下意識(shí)的也認(rèn)為read_rnd_buffer_size也僅僅用于MyISAM引擎。我今天早和Monty聊了聊,學(xué)到,它不是這樣的。read_rnd_buffer_size不僅僅用在MyISAM引擎,而是用在所有引擎。它用在查詢后,對(duì)讀取真正的數(shù)據(jù)進(jìn)行優(yōu)化。它是這樣工作的:
sort后,得到的是行數(shù)據(jù)指針,通過(guò)key-value的形式存在,對(duì)于MyISAM是數(shù)據(jù)的偏移量,對(duì)于innodb是主鍵或存儲(chǔ)重新查詢的全量數(shù)據(jù)(對(duì)于小片的數(shù)據(jù)是有益的)。
假設(shè)sort后的數(shù)據(jù)使用的是行指針,并且行中的字段能夠被轉(zhuǎn)換成固定的大?。ǔ薆LOB/TEXT字段外),MySQL能夠使用read_rnd_buffer_size優(yōu)化數(shù)據(jù)讀取。
因?yàn)閟ort后的數(shù)據(jù)是以key-value的形式存在的,使用這些行指針去讀取數(shù)據(jù),將是以指針數(shù)據(jù)物理的順序去讀取,很大程度上是隨機(jī)的方式讀取數(shù)據(jù)的。MySQL從sort_buffer中讀取這些行指針數(shù)據(jù),然后通過(guò)指針排序后存入read_rnd_buffer中,之后再通過(guò)指針讀取數(shù)據(jù)時(shí),基本上都是順序讀取了。
read_rnd_buffer_size是很重要的參數(shù),尤其工作在如下場(chǎng)景:
* sort_buffer中存的是行指針而不是要查詢的數(shù)據(jù)。
* 查詢的字段中包含Blob/Text字段。
* sort后有大量的數(shù)據(jù)行(limit 10并不能幫助你,因?yàn)镸ySQL是通過(guò)指針獲取行數(shù)據(jù)的)
如果你取出很少字段的數(shù)據(jù)(小于max_length_for_sort_data),行數(shù)據(jù)將會(huì)全部存儲(chǔ)在sort buffer里,因此將不需要read_rnd_buffer_size這個(gè)參數(shù)。而如果你查詢的字段數(shù)據(jù)很長(zhǎng)(這些字段很可能含有Text/Blob字段),比max_length_for_sort_data還長(zhǎng),read_rnd_buffer_size這個(gè)參數(shù)將派上用場(chǎng)。
下面是其他網(wǎng)友的補(bǔ)充
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 458624 K
read_buffer_size:是MySQL讀入緩沖區(qū)大小。對(duì)表進(jìn)行順序掃描的請(qǐng)求將分配一個(gè)讀入緩沖區(qū),MySQL會(huì)為它分配一段內(nèi)存緩沖區(qū)。read_buffer_size變量控制這一緩沖區(qū)的大小。如果對(duì)表的順序掃描請(qǐng)求非常頻繁,并且你認(rèn)為頻繁掃描進(jìn)行得太慢,可以通過(guò)增加該變量值以及內(nèi)存緩沖區(qū)大小提高其性能。
如下是對(duì)于16g內(nèi)存的設(shè)置
read_buffer_size = 1M
個(gè)人機(jī)器是32G的,一般數(shù)據(jù)庫(kù)就用來(lái)存儲(chǔ)數(shù)據(jù),很少用mysql 所以我就設(shè)置為2M或3M
手機(jī)在線更新系統(tǒng)MySQL數(shù)據(jù)庫(kù)服務(wù)器參數(shù)優(yōu)化mycnf,16G內(nèi)存8核CPU
業(yè)務(wù)場(chǎng)景:后臺(tái)支持手機(jī)在線更新系統(tǒng),db服務(wù)器內(nèi)存16G,8核,dell的pc服務(wù)器。
qps: 200個(gè)左右
tps: 1個(gè)左右 一分鐘50幾個(gè)
sort_buffer_size = 32M 大了, 8M即可
read_buffer_size = 32M 大了,8M即可
read_rnd_buffer_size = 16M 大了,8M即可
table_open_cache = 512
小了,建議改成2048
max_allowed_packet = 5M
小了,建議改成16M
tmp_table_size=64M
小了,建議改成2G
innodb_buffer_pool_size = 3000M
小了,改成db服務(wù)器總內(nèi)存的60% 到80%
innodb_additional_mem_pool_size = 20M 小了,改成128M
join_buffer_size 這個(gè)參數(shù)為什么沒有看到,必須設(shè)置值,join_buffer_size = 8M 必須補(bǔ)上,這個(gè)是跟join table 關(guān)聯(lián)的,很重要。
- MySQL Innodb關(guān)鍵特性之插入緩沖(insert buffer)
- 詳解MySQL中的緩沖池(buffer pool)
- MySQL的查詢緩存和Buffer Pool
- mysql優(yōu)化的重要參數(shù) key_buffer_size table_cache
- 優(yōu)化mysql之key_buffer_size設(shè)置
- mysql Sort aborted: Out of sort memory, consider increasing server sort buffer size的解決方法
- 從MySQL的源碼剖析Innodb buffer的命中率計(jì)算
- php中mysql操作buffer用法詳解
- Mysql優(yōu)化調(diào)優(yōu)中兩個(gè)重要參數(shù)table_cache和key_buffer
- mysql Key_buffer_size參數(shù)的優(yōu)化設(shè)置
- mysqldump造成Buffer Pool污染的研究
- MySQL的join buffer原理
相關(guān)文章
Win10安裝MySQL5.7.18winX64 啟動(dòng)服務(wù)器失敗并且沒有錯(cuò)誤提示
這篇文章主要介紹了Win10安裝MySQL5.7.18winX64 啟動(dòng)服務(wù)器失敗并且沒有錯(cuò)誤提示,需要的朋友可以參考下2017-06-06MySQL外鍵關(guān)聯(lián)操作的實(shí)現(xiàn)
本文主要介紹了MySQL外鍵關(guān)聯(lián)操作的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07mysql5.7使用binlog 恢復(fù)數(shù)據(jù)的方法
MySQL的binlog日志是MySQL日志中非常重要的一種日志,記錄了數(shù)據(jù)庫(kù)所有的DML操作,那么怎樣通過(guò)binlog 恢復(fù)數(shù)據(jù),本文就詳細(xì)的來(lái)介紹一下2021-06-06在CMD中操作mysql數(shù)據(jù)庫(kù)出現(xiàn)中文亂碼解決方案
有說(shuō)將cmd字符編碼用chcp命令改為65001(utf8字符編碼),可這樣之后根本無(wú)法輸入中文,查詢出的中問(wèn)結(jié)果依舊亂碼 。下面小編給大家?guī)?lái)了在CMD中操作mysql數(shù)據(jù)庫(kù)出現(xiàn)中文亂碼解決方案,一起看看吧2017-09-09MySql 8.0.16版本安裝提示已經(jīng)不使用“UTF8B3”而是使用“UTF8B4”問(wèn)題
這篇文章主要介紹了MySql 8.0.16版本安裝提示已經(jīng)不使用“UTF8B3”而是使用“UTF8B4”問(wèn)題 ,需要的朋友可以參考下2019-07-07使用mysqldump對(duì)MySQL的數(shù)據(jù)進(jìn)行備份的操作教程
這篇文章主要介紹了使用mysqldump對(duì)MySQL的數(shù)據(jù)進(jìn)行備份的操作教程,示例環(huán)境基于CentOS操作系統(tǒng),需要的朋友可以參考下2015-12-12MySQL日期時(shí)間函數(shù)知識(shí)匯總
這篇文章主要介紹了MySQL日期時(shí)間函數(shù)知識(shí)匯總,這不同數(shù)據(jù)庫(kù)之間基本相同,只會(huì)有個(gè)別函數(shù)的差異。下文詳細(xì)介紹,需要的小伙伴可以參考一下2022-03-03mysql中關(guān)于Myisam_recover自動(dòng)修復(fù)的使用方法
這篇文章主要介紹了mysql中關(guān)于Myisam_recover自動(dòng)修復(fù)的使用方法,需要的朋友可以參考下2016-05-05MySQL系列教程小白數(shù)據(jù)庫(kù)基礎(chǔ)
這篇文章主要為大家介紹了MySQL系列中的數(shù)據(jù)庫(kù)基礎(chǔ),非常適合數(shù)據(jù)庫(kù)小白的入門基礎(chǔ)篇,詳細(xì)的講解了數(shù)據(jù)庫(kù)的基本概念以及基礎(chǔ)命令及操作示例,有需要的朋友可以借鑒參考下2021-10-10