MySQL高階 記憶體管理及優化

2021-10-17 15:32:57 字數 1407 閱讀 1330

1)將盡量多的記憶體分配給mysql做快取但要給作業系統和其他程式預留足夠記憶體。

2)myisam 儲存引擎的資料檔案讀取依賴於作業系統自身的io快取因此,如果有myisam表,就要預留更多的記憶體給作業系統做io快取。

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

myisam儲存引擎使用 key_buffer 快取索引塊加速myisam索引的讀寫速度。對於myisam表的資料塊,mysql沒有特別的快取機制,完全依賴於作業系統的io快取。

key_buffer_size決定myisam索引塊快取區的大小,直接影響到myisam表的訪問效率。可以在mysql引數檔案中設定key_buffer_size的值,對於一般myisam資料庫,建議至少將1/4可用記憶體分配給key_buffer_size。

在/etc/mysql/mysql.conf.d/mysqld.cnf中做如下配置:

key_buffer_size=

512m

如果需要經常順序掃瞄myisam表,可以通過增大read_buffer_size的值來改善效能。但需要注意的是read_buffer_size是每個session獨佔的,如果預設值設定太大,就會造成記憶體浪費。

**對於需要做排序的myisam表的查詢,如帶有order by子句的sql,適當增加 read_rnd_buffer_size 的值,可以改善此類的sql效能。**但需要注意的是 read_rnd_buffer_size 是每個session獨佔的,如果預設值設定太大,就會造成記憶體浪費。

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

該變數決定了 innodb 儲存引擎表資料和索引資料的最大快取區大小。在保證作業系統及其他程式有足夠記憶體可用的情況下,innodb_buffer_pool_size 的值越大,快取命中率越高,訪問innodb表需要的磁碟i/o 就越少,效能也就越高。

innodb_buffer_pool_size=512m
決定了innodb重做日誌快取的大小,對於可能產生大量更新記錄的大事務,增加innodb_log_buffer_size的大小,可以避免innodb在事務提交前就執行不必要的日誌寫入磁碟操作。

innodb_log_buffer_size=10m

MYSQL記憶體管理及優化

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

記憶體管理高階

dealloc是nsobject的乙個例項方法,與alloc對應,用於 開闢的記憶體空間,這個方法在物件引用計數為0是,有系統自動呼叫。通常我們在dealloc中釋放類的例項變數。dealloc的使用 void dealloc name release setter方法洩露的例項變數 super d...

Mysql高階高階(sql優化)

目錄 一 mysql高階有哪些東西?1 mysql的架構 2 索引優化分析 3 查詢擷取分析 4 mysql鎖機制 5 主從複製 架構這裡我們主要說的是引擎 看你的mysql現在已提供什麼儲存引擎 看你的mysql當前預設的儲存引擎 show variables like storage engin...