在資料庫壓力很大的情況下,重啟完資料庫,通過手工執行下列語句,把熱資料載入到innodb_buffer_pool緩衝池中進行預熱,從而避免早高峰連線數公升高,程式報錯。select count(*) from user;
select count(*) from ***;
在mysql5.6裡為了解決上述問題,提供了乙個新特性來快速預熱buffer_pool緩衝池,只需在my.cnf中加入如下命令:引數注釋
innodb_buffer_pool_dump_at_shutdown=1關閉時dump熱資料到本地磁碟
innodb_buffer_pool_dump_now=1採用手工方式把熱資料dump到本地磁碟
innodb_buffer_pool_load_at_start=1在啟動時把熱資料載入到記憶體
innodb_buffer_pool_load_now=1採用手工方式把熱資料載入到記憶體
mysql>show variables like 'innodb_buffer_pool%';
|variable_name |value |
|innodb_buffer_pool_dump_at_shutdown | off |
|innodb_buffer_pool_dump_now |off |
|innodb_buffer_pool_filename |ib_buffer_pool |
|innodb_buffer_pool_instances |8 |
|innodb_buffer_pool_load_abort |off |
|innodb_buffer_pool_load_at_startup |off |
| innodb_buffer_pool_load_now | off |
|innodb_buffer_pool_size |786432000 |
8 rows inset (0.01 sec)
[root@gflinuxmysql]# service mysql stop
shuttingdown mysql............ [ ok ]
[root@gflinuxmysql]# cd mysql/
[root@gflinuxmysql]# ll
-rw-rw----1 mysql mysql 3703 aug 8 14:24ib_buffer_pool
-rw-rw----1 mysql mysql 616562688 aug 8 14:24ibdata1
-rw-rw----1 mysql mysql 50331648 aug 8 14:24 ib_logfile0
-rw-rw----1 mysql mysql 50331648 aug 8 14:20 ib_logfile1
[root@gflinuxmysql]# tail -100f ../log/gflinux.err
2014-08-0814:24:32 16207 [note] innodb: starting shutdown...
2014-08-0814:24:32 62ad2b90 innodb: dumping buffer pool(s) to .//ib_buffer_pool
2014-08-0814:24:32 62ad2b90 innodb: buffer pool(s) dump completed at 140808 14:24:32
2014-08-0814:24:34 16207 [note] innodb: shutdown completed; log sequence number 27441703699
載入:[root@gflinuxmysql]# service mysql start
startingmysql.... [ ok ]
[root@gflinuxmysql]# tail -100f ../log/gflinux.err
2014-08-0814:28:13 16696 [note] innodb: 128 rollback segment(s) are active.
2014-08-0814:28:13 16696 [note] innodb: 5.6.17 started; log sequence number 27441703699
2014-08-0814:28:13 16696 [note] semi-sync replication initialized for transactions.
2014-08-0814:28:13 16696 [note] semi-sync replication enabled on the master.
2014-08-0814:28:13 62adab90 innodb: loading buffer pool(s) from .//ib_buffer_pool
2014-08-0814:28:13 62adab90 innodb: buffer pool(s) load completed at 140808 14:28:13
在關閉mysql時,會把記憶體中的熱資料儲存在磁碟的ib_buffer_pool檔案中,該檔案位於資料目錄下。
在啟動mysql時,會自動載入熱資料到buffer_pool緩衝池裡。
注意在正常關閉mysql服務或者pkill mysql時,才會把熱資料從記憶體匯出,機器宕機或者pkill -9 mysql是不會匯出的。
注意:僅適用於mysql5.6以上版本。
Mysql5 6 buffer pool預熱功能
通常在mysql重啟服務後,需要通過手工執行sql來預熱buffer pool,在mysql5.6中,有如下引數可以無需人工干預。innodb buffer pool dump at shutdown 1 在關閉時把熱資料dump到本地磁碟 innodb buffer pool dump now 1...
MySQL資料庫 EXPLAN預執行
id select type table partitions type possible keys key key len ref rows filterd extra 表的讀取順序 查詢型別 輸出結果集的表 匹配的分割槽 連線型別 可能使用的索引 使用的索引 索引欄位的長度 列與索引的比值 估計...
mysql 預載入快取 預載入與快取
最近的專案中為了能夠提公升那麼一丟丟效能,嘗試了一下對 chunks 進行預載入處理。雖然做了非同步載入的處理,但是專案大小決定了還是有多個非同步的 chunk.js 需要進行預載入,這裡我指的是 preload與a webpack plugin for injecting into htmlweb...