MySQL高級十六——內存優化

一、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文件中改寫。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章