欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql read_buffer_size 設(shè)置多少合適

 更新時間:2021年03月15日 23:38:15   投稿:mdxy-dxy  
很多朋友都會問mysql read_buffer_size 設(shè)置多少合適,其實這個都是根據(jù)自己的內(nèi)存大小等來設(shè)置的

MySQL手冊里關(guān)于read_rnd_buffer_size的解釋如下:

“這個參數(shù)用在sort查詢之后 ,以保證獲取以順序的方式獲取到查詢的數(shù)據(jù)。如果你有很多order by 查詢語句,增長這值能夠提升性能?!?/p>

這個解釋足夠簡練,但沒有準(zhǔn)確的告訴我們這個參數(shù)工作在哪一層,SQL層還是引擎層?

老實說,這個參數(shù)和read_buffer_size很像,read_buffer_size僅僅用于MyISAM引擎,我下意識的也認為read_rnd_buffer_size也僅僅用于MyISAM引擎。我今天早和Monty聊了聊,學(xué)到,它不是這樣的。read_rnd_buffer_size不僅僅用在MyISAM引擎,而是用在所有引擎。它用在查詢后,對讀取真正的數(shù)據(jù)進行優(yōu)化。它是這樣工作的:

sort后,得到的是行數(shù)據(jù)指針,通過key-value的形式存在,對于MyISAM是數(shù)據(jù)的偏移量,對于innodb是主鍵或存儲重新查詢的全量數(shù)據(jù)(對于小片的數(shù)據(jù)是有益的)。

假設(shè)sort后的數(shù)據(jù)使用的是行指針,并且行中的字段能夠被轉(zhuǎn)換成固定的大小(除了BLOB/TEXT字段外),MySQL能夠使用read_rnd_buffer_size優(yōu)化數(shù)據(jù)讀取。

因為sort后的數(shù)據(jù)是以key-value的形式存在的,使用這些行指針去讀取數(shù)據(jù),將是以指針數(shù)據(jù)物理的順序去讀取,很大程度上是隨機的方式讀取數(shù)據(jù)的。MySQL從sort_buffer中讀取這些行指針數(shù)據(jù),然后通過指針排序后存入read_rnd_buffer中,之后再通過指針讀取數(shù)據(jù)時,基本上都是順序讀取了。

read_rnd_buffer_size是很重要的參數(shù),尤其工作在如下場景:

* sort_buffer中存的是行指針而不是要查詢的數(shù)據(jù)。

* 查詢的字段中包含Blob/Text字段。

* sort后有大量的數(shù)據(jù)行(limit 10并不能幫助你,因為MySQL是通過指針獲取行數(shù)據(jù)的)

如果你取出很少字段的數(shù)據(jù)(小于max_length_for_sort_data),行數(shù)據(jù)將會全部存儲在sort buffer里,因此將不需要read_rnd_buffer_size這個參數(shù)。而如果你查詢的字段數(shù)據(jù)很長(這些字段很可能含有Text/Blob字段),比max_length_for_sort_data還長,read_rnd_buffer_size這個參數(shù)將派上用場。

下面是其他網(wǎng)友的補充

key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 458624 K

read_buffer_size:是MySQL讀入緩沖區(qū)大小。對表進行順序掃描的請求將分配一個讀入緩沖區(qū),MySQL會為它分配一段內(nèi)存緩沖區(qū)。read_buffer_size變量控制這一緩沖區(qū)的大小。如果對表的順序掃描請求非常頻繁,并且你認為頻繁掃描進行得太慢,可以通過增加該變量值以及內(nèi)存緩沖區(qū)大小提高其性能。

如下是對于16g內(nèi)存的設(shè)置

read_buffer_size = 1M

個人機器是32G的,一般數(shù)據(jù)庫就用來存儲數(shù)據(jù),很少用mysql 所以我就設(shè)置為2M或3M

手機在線更新系統(tǒng)MySQL數(shù)據(jù)庫服務(wù)器參數(shù)優(yōu)化mycnf,16G內(nèi)存8核CPU

業(yè)務(wù)場景:后臺支持手機在線更新系統(tǒng),db服務(wù)器內(nèi)存16G,8核,dell的pc服務(wù)器。

qps: 200個左右
tps: 1個左右 一分鐘50幾個

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 這個參數(shù)為什么沒有看到,必須設(shè)置值,join_buffer_size = 8M 必須補上,這個是跟join table 關(guān)聯(lián)的,很重要。

相關(guān)文章

最新評論