1 記憶體優化原則
1) 將盡量多的記憶體分配給MySQL做快取,但要給作業系統和其他程式預留足夠記憶體,
2) MyISAM 存盤引擎的資料檔案讀取依賴于作業系統自身的IO快取,因此,如果有MyISAM表,就要預留更多的記憶體給作業系統做IO快取,
3) 排序區、連接區等快取是分配給每個資料庫會話(session)專用的,其默認值的設定要根據最大連接數合理分配,如果設定太大,不但浪費資源,而且在并發連接較高時會導致物理記憶體耗盡,
2 MyISAM 記憶體優化
myisam存盤引擎使用 key_buffer 快取索引塊,加速myisam索引的讀寫速度,對于myisam表的資料塊,mysql沒有特別的快取機制,完全依賴于作業系統的IO快取,
key_buffer_size
key_buffer_size決定MyISAM索引塊快取區的大小,直接影響到MyISAM表的存取效率,可以在MySQL引數檔案中設定key_buffer_size的值,對于一般MyISAM資料庫,建議至少將1/4可用記憶體分配給key_buffer_size,
在/etc/mysql/mysql.conf.d/mysqld.cnf中做如下配置:
key_buffer_size=512M
read_buffer_size
如果需要經常順序掃描myisam表,可以通過增大read_buffer_size的值來改善性能,但需要注意的是read_buffer_size是每個session獨占的,如果默認值設定太大,就會造成記憶體浪費,
read_rnd_buffer_size
**對于需要做排序的myisam表的查詢,如帶有order by子句的sql,適當增加 read_rnd_buffer_size 的值,可以改善此類的sql性能,**但需要注意的是 read_rnd_buffer_size 是每個session獨占的,如果默認值設定太大,就會造成記憶體浪費,
3.3 InnoDB 記憶體優化
innodb用一塊記憶體區做IO快取池,該快取池不僅用來快取innodb的索引塊,而且也用來快取innodb的資料塊,
innodb_buffer_pool_size
該變數決定了 innodb 存盤引擎表資料和索引資料的最大快取區大小,在保證作業系統及其他程式有足夠記憶體可用的情況下,innodb_buffer_pool_size 的值越大,快取命中率越高,訪問InnoDB表需要的磁盤I/O 就越少,性能也就越高,
innodb_buffer_pool_size=512M
innodb_log_buffer_size
決定了innodb重做日志快取的大小,對于可能產生大量更新記錄的大事務,增加innodb_log_buffer_size的大小,可以避免innodb在事務提交前就執行不必要的日志寫入磁盤操作,
innodb_log_buffer_size=10M
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/253165.html
標籤:其他
