MySQL中的置換是一種優(yōu)化技術(shù),可以在數(shù)據(jù)緩存不足時(shí)提高查詢效率。當(dāng)MySQL需要從磁盤讀取數(shù)據(jù)時(shí),會(huì)先將數(shù)據(jù)從磁盤讀入到緩存(即內(nèi)存)中,這個(gè)過(guò)程稱為緩存淘汰。當(dāng)緩存已滿且需要緩存新數(shù)據(jù)時(shí),需要淘汰掉一些舊的數(shù)據(jù),讓出空間。這時(shí)就需要選擇一種置換策略。
/* 以下是 LRU 置換策略的實(shí)現(xiàn) */ SET GLOBAL innodb_old_blocks_pct = 60; /* 表示 LRU 列表快滿時(shí)開(kāi)始淘汰數(shù)據(jù) */ SET GLOBAL innodb_old_blocks_time = 1000; /* 表示 LRU 列表中一個(gè)數(shù)據(jù)塊最多可以存活多長(zhǎng)時(shí)間(單位:毫秒) */
常見(jiàn)的置換策略有:
- 最近最少使用(LRU)
- 先進(jìn)先出(FIFO)
- 隨機(jī)(Random)
LRU置換策略會(huì)淘汰最長(zhǎng)時(shí)間未被使用的數(shù)據(jù)塊,即根據(jù)數(shù)據(jù)塊的訪問(wèn)時(shí)間來(lái)決定淘汰順序。FIFO置換策略則是按照進(jìn)入緩存的時(shí)間先后來(lái)淘汰數(shù)據(jù)塊。隨機(jī)置換策略則是隨機(jī)選擇一個(gè)數(shù)據(jù)塊來(lái)淘汰。
/* 以下是 FIFO 置換策略的實(shí)現(xiàn) */ SET GLOBAL innodb_old_blocks_pct = 60; /* 表示 FIFO 列表快滿時(shí)開(kāi)始淘汰數(shù)據(jù) */ SET GLOBAL innodb_old_blocks_time = 0; /* 表示 FIFO 列表中的數(shù)據(jù)塊可以存活任意長(zhǎng)的時(shí)間 */
MySQL默認(rèn)采用的是LRU置換策略,但在某些情況下FIFO策略也可以表現(xiàn)得更好。另外,對(duì)于大部分場(chǎng)景下,隨機(jī)策略效果較差,不建議使用。
上一篇微信小程序css顯示邊框
下一篇css輸入框邊角