MYSQL記憶體管理及優化

2021-09-26 22:21:56 字數 1409 閱讀 1398

記憶體是影響資料庫效能的主要資源,也是mysql效能優化的乙個重要方面;

將盡量多的記憶體分配給mysql做快取,但是要給作業系統和其他程式的執行預留足夠的記憶體,否則產生swap頁交換,將嚴重影響系統效能;

myisam的資料檔案讀取以來作業系統自身的io快取,如果有myisam的表,就要預留更多的記憶體給作業系統做io快取;

排序區,連線區等快取是分配給每個資料庫會話session專用的,預設值的設定要根據最大的連線資料合理分配,如果設定的太大,不但浪費記憶體資源,在併發比較高的時候會導致物理記憶體耗盡;

myisam儲存引擎使用 key_buffer快取索引塊,以加速myisam索引的讀寫速度。

myisam表的資料庫,mysql沒有特別的索引機制,完全依賴系統的io 快取。

1.ey_buffer_size 設定

key_buffer_size決定myisam索引快取區的大小;一般可以記憶體的1/4;

2.用多個索引快取

3.整 中點插入策略

4.整 read_buffer_size 和 read_rnd_buffer_size

innod的快取機制

innodb用以塊記憶體做io快取池,該快取池不僅用來快取innodb的索引,而且也用來快取innodb的資料塊;

與myisam是不同的;

innod的快取機制

innodb_buffer_pool_size的設定

innodb_buffer_pool_size決定innodb儲存引擎表資料和索引資料的最大快取區的大小;

與oracle的快取機制很類似。

快取區越大,快取的命中率越高,需要的磁碟io越少,效能越高。

在乙個專用的資料庫伺服器上,可以將80%的物理記憶體分配給innodb buffer pool ,但是一定要注意設定過大導致頁交換,系統或其他的程式可以記憶體不足;

調整old sublist 大小

old sublist的比例有innodb_old_blocks_pct決定,預設是37;

在沒有比較大的表掃瞄或索引掃瞄的情況下,如果youngs的值很低,可能需要適當的增大innodb_old_blocks_pct的值,或者減少 innodb_old_blocks_time的值。

調整innodb_old_blocks_time的設定;

這個引數決定了快取資料塊由old sublist轉移到young sublit的快慢;

調整快取池的數量,減少內部對快取池資料結構的掙用;

mysql內部不同的執行緒對innodb快取池的訪問在某些階段是互斥的,這種內部的掙用現象也會產生效能問題,尤其是在搞併發和buffer pool 比較大的情況下。

通過inndb_buffer_pool_instances引數設定

控制innodb buffer重新整理,延長資料快取時間,減緩磁碟io;

innodb doublewrite

MySQL高階 記憶體管理及優化

1 將盡量多的記憶體分配給mysql做快取,但要給作業系統和其他程式預留足夠記憶體。2 myisam 儲存引擎的資料檔案讀取依賴於作業系統自身的io快取,因此,如果有myisam表,就要預留更多的記憶體給作業系統做io快取。3 排序區 連線區等快取是分配給每個資料庫會話 session 專用的,其預...

關於mysql記憶體管理 MYSQL記憶體管理及優化

mysql記憶體管理及優化 記憶體是影響資料庫效能的主要資源,也是mysql效能優化的乙個重要方面 記憶體優化的原則 將盡量多的記憶體分配給mysql做快取,但是要給作業系統和其他程式的執行預留足夠的記憶體,否則產生swap頁交換,將嚴重影響系統效能 myisam的資料檔案讀取以來作業系統自身的io...

MySQL記憶體優化

在給作業系統和其他應用留夠足夠的記憶體時,將盡量多的記憶體分配給mysql做快取 myisam儲存引擎的資料檔案讀取依賴於作業系統自身的io快取,因此如果有myisam表,就要預留更多的記憶體給作業系統做io快取.排序區 連線區等快取是分配給每個資料庫會話專用的,期末認真的設定要根據最大連線數合理分...