首頁  >  文章  >  資料庫  >  MySQL高階十六-記憶體最佳化

MySQL高階十六-記憶體最佳化

黄舟
黄舟原創
2017-01-14 11:45:421260瀏覽

一、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)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn