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