1. 程式人生 > >「mysql優化專題」詳解引擎(InnoDB,MyISAM)的內存優化攻略?(9)

「mysql優化專題」詳解引擎(InnoDB,MyISAM)的內存優化攻略?(9)

區域 order by 順序 重做日誌 浪費 變量 效率 攻略 分區

註意:以下都是在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)