mysql 資料預熱 mysql預熱緩衝池

2021-10-18 05:54:18 字數 2879 閱讀 8110

在資料庫壓力很大的情況下,重啟完資料庫,通過手工執行下列語句,把熱資料載入到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...