「mysql優化專題」詳解引擎(InnoDB,MyISAM)的內存優化攻略?(9)
註意:以下都是在MySQL目錄下的my.ini文件中改寫(技術文)。
一、InnoDB內存優化
InnoDB用一塊內存區域做I/O緩存池,該緩存池不僅用來緩存InnoDB的索引塊,而且也用來緩存InnoDB的數據塊。
1、innodb_log_buffer_size
決定了InnoDB重做日誌緩存的大小,可以避免InnoDB在事務提交前就執行不必要的日誌寫入磁盤操作。
2、設置Innodb_buffer_pool_size
改變量決定了InnoDB存儲引擎表數據和索引數據的最大緩存區大小。
二、MyISAM內存優化
MyISAM存儲引擎使用key_buffer緩存索引模塊,加速索引的讀寫速度。對於MyISAM表的數據塊,mysql沒有特別的緩存機制,完全依賴於操作系統的IO緩存。
1、read_rnd_buffer_size
對於需要做排序的MyISAM表查詢,如帶有order by子句的sql,適當增加read_rnd_buffer_size的值,可以改善此類的sql性能。但需要註意的是read_rnd_buffer_size獨占的,如果默認設置值太大,就會造成內存浪費。
2、key_buffer_size設置
key_buffer_size決定MyISAM索引塊緩存分區的大小。直接影響到MyISAM表的存取效率。對於一般MyISAM數據庫,建議1/4可用內存分配給key_buffer_size:
key_buffer_size=2G
3、read_buffer_size
如果需要經常順序掃描MyISAM表,可以通過增大read_buffer_size的值來改善性能。但需要註意的是read_buffer_size是每個seesion獨占的,如果默認值設置太大,就會造成內存浪費。
三、調整MySQL參數並發相關的參數
1、調整max_connections
提高並發連接
2、調整thread_cache_size
加快連接數據庫的速度,MySQL會緩存一定數量的客戶服務線程以備重用,通過參數thread_cache_size可控制mysql緩存客戶端線程的數量。
3、innodb_lock_wait_timeout
控制InnoDB事務等待行鎖的時間,對於快速處理的SQL語句,可以將行鎖等待超時時間調大,以避免發生大的回滾操作。(技術文)
「mysql優化專題」詳解引擎(InnoDB,MyISAM)的內存優化攻略?(9)