一、MyISAM記憶體優化
MyISAM儲存引擎使用key_buffer快取索引模組,加速索引的讀寫速度。對於MyISAM表的資料塊,mysql沒有特別的快取機制,完全依賴作業系統的IO快取。
1、key_buffer_size設定
key_buffer_size決定MyISAM索引區塊快取分區的大小。直接影響到MyISAM表的存取效率。對於一般MyISAM資料庫,建議1/4可用記憶體分配給key_buffer_size:
key_buffer_size=2G
2、read_buffer_size
如果需要經常順序掃描MyISAM表,可以透過增加read_buffer_size的值來改善效能。但要注意的是read_buffer_size是每個seesion獨佔的,如果預設值設定太大,就會造成記憶體浪費。
3、read_rnd_buffer_size
對於需要做排序的MyISAM表查詢,例如帶有order by子句的sql,適當增加read_rnd_buffer_size的值,可以改善此類的sql效能。但要注意的是read_rnd_buffer_size獨佔的,如果預設值太大,就會造成記憶體浪費。
二、InnoDB記憶體最佳化
InnoDB用一塊記憶體區域做I/O快取池,這個快取池不僅用來快取InnoDB的索引區塊,也用來快取InnoDB的資料區塊。
1、設定Innodb_buffer_pool_size
改變量決定了InnoDB儲存引擎表資料和索引資料的最大快取區大小。
2、innodb_log_buffer_size
決定了InnoDB重做日誌快取的大小,可以避免InnoDB在交易提交前就執行不必要的日誌寫入磁碟操作。
三、調整MySQL參數並發相關的參數
1、調整max_connections
提高並發連接
2、調整thread_cache_size
加快連線資料庫的速度,MySQL會快取一定數量的客戶服務執行緒以備重複使用,透過參數thread_cache_size可控制mysql快取客戶端執行緒的數量。
3、innodb_lock_wait_timeout
控制InnoDB事務等待行鎖的時間,對於快速處理的SQL語句,可以將行鎖等待逾時時間調大,以避免發生大的回溯操作。
注意:以上都是在MySQL目錄下的my.ini檔案中改寫。
以上就是MySQL進階十六-記憶體優化的內容,更多相關內容請關注PHP中文網(www.php.cn)!