国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL 5.6下table_open_cache參數(shù)優(yōu)化合理配置詳解

2024-07-25 19:08:08
字體:
供稿:網(wǎng)友

1、簡介

table_cache是一個非常重要的MySQL性能參數(shù),它在5.1.3之后的版本中叫做table_open_cache。table_cache主要用于設(shè)置table高速緩存的數(shù)量。由于每個客戶端連接都會至少訪問一個表,因此此參數(shù)的值與max_connections有關(guān)。
例如,對于 1000 個并行運(yùn)行的連接,應(yīng)該讓表的緩存至少有 1000 × N ,這里 N 是應(yīng)用可以執(zhí)行的查詢的一個聯(lián)接中表的最大數(shù)量。此外,還需要為臨時表和文件保留一些額外的文件描述符。

2、緩存機(jī)制

當(dāng)某一連接訪問一個表時,MySQL會檢查當(dāng)前已緩存表的數(shù)量。如果該表已經(jīng)在緩存中打開,則會直接訪問緩存中的表已加快查詢速度;如果該表未被緩存,則會將當(dāng)前的表添加進(jìn)緩存并進(jìn)行查詢。

在執(zhí)行緩存操作之前,table_open_cache用于限制緩存表的最大數(shù)目:如果當(dāng)前已經(jīng)緩存的表未達(dá)到table_open_cache,則會將新表添加進(jìn)來;若已經(jīng)達(dá)到此值,MySQL將根據(jù)緩存表的最后查詢時間、查詢率等規(guī)則釋放之前的緩存。每當(dāng)MySQL訪問一個表時,如果在表緩沖區(qū)中還有空間,該表就被打開并放入其中,這樣可以更快地訪問表內(nèi)容。

3、如何判斷

通過檢查峰值時間的狀態(tài)值Open_tables和Opened_tables,可以決定是否需要增加table_open_cache的值。

如果你發(fā)現(xiàn)open_tables等于table_open_cache,并且opened_tables在不斷增長,那么你就需要增加 table_open_cache的值了(上述狀態(tài)值可以使用SHOW GLOBAL STATUS LIKE ‘Open%tables'獲得)。

注意,不能盲目地把table_open_cache設(shè)置成很大的值。如果設(shè)置得太高,可能會造成文件描述符不足,從而造成性能不穩(wěn)定或者連接失敗。

MySQL,table_open_cache

Open_tables / Opened_tables >= 0.85

Open_tables / table_cache <= 0.95

4、建議

如果開始沒有把握的話,把MySQL數(shù)據(jù)庫放在生產(chǎn)環(huán)境中試運(yùn)行一段時間,然后把參數(shù)的值調(diào)整得比Opened_tables的數(shù)值大一些,并且保證在比較高負(fù)載的極端條件下依然比Opened_tables略大。
在mysql默認(rèn)安裝情況下,table_cache的值在2G內(nèi)存以下的機(jī)器中的值默認(rèn)時256到 512,如果機(jī)器有4G內(nèi)存,則默認(rèn)這個值是2048,但這決意味著機(jī)器內(nèi)存越大,這個值應(yīng)該越大,因?yàn)閠able_cache加大后,使得mysql對 SQL響應(yīng)的速度更快了,不可避免的會產(chǎn)生更多的死鎖(dead lock),這樣反而使得數(shù)據(jù)庫整個一套操作慢了下來,嚴(yán)重影響性能。所以平時維護(hù)中還是要根據(jù)庫的實(shí)際情況去作出判斷,找到最適合你維護(hù)的庫的 table_cache值。

mysql >flush tables; 可以將open_tables 清零

# service mysqld restart 可以講opened_tables 清零

以下是針對mysql 5.6的說明

table_open_cache指定表高速緩存的大小。每當(dāng)MySQL訪問一個表時,如果在表緩沖區(qū)中還有空間,該表就被打開并放入其中,這樣可以更快地訪問表內(nèi)容。
通過檢查峰值時間的狀態(tài)值Open_tables和Opened_tables,可以決定是否需要增加table_open_cache的值。
如果你發(fā)現(xiàn)open_tables等于table_open_cache,并且opened_tables在不斷增長,那么你就需要增加table_open_cache的值了(上述狀態(tài)值可通過SHOW GLOBAL STATUS LIKE ‘Open%tables'獲得)。
注意,不能盲目地把table_open_cache設(shè)置成很大的值,設(shè)置太大超過了shell的文件描述符(通過ulimit -n查看),造成文件描述符不足,從而造成性能不穩(wěn)定或者連接失敗。

測試環(huán)境:騰訊云CDB,內(nèi)存4000M,在控制臺查看到table_open_cache=512,監(jiān)測table_open_cache設(shè)置是否合理,是否需要優(yōu)化。

show variables like '%table_open_cache%';

MySQL,table_open_cache

show global status like 'Open%tables';

MySQL,table_open_cache

發(fā)現(xiàn)open_tables等于table_open_cache,都是512,說明mysql正在將緩存的表釋放以容納新的表,此時可能需要加大table_open_cache的值,4G內(nèi)存的機(jī)器,建議設(shè)置為2048

比較適合的值:

Open_tables / Opened_tables >= 0.85
Open_tables / table_open_cache <= 0.95

如果對此參數(shù)的把握不是很準(zhǔn),有個很保守的設(shè)置建議:把MySQL數(shù)據(jù)庫放在生產(chǎn)環(huán)境中試運(yùn)行一段時間,然后把參數(shù)的值調(diào)整得比Opened_tables的數(shù)值大一些,并且保證在比較高負(fù)載的極端條件下依然比Opened_tables略大。


注:相關(guān)教程知識閱讀請移步到MYSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 温州市| 阜平县| 杂多县| 遵义市| 布尔津县| 安阳县| 宁津县| 桐柏县| 清苑县| 岳阳县| 诏安县| 施秉县| 甘孜县| 凤阳县| 吉首市| 莆田市| 盐城市| 土默特左旗| 藁城市| 毕节市| 阜城县| 濮阳县| 塔城市| 溧阳市| 云林县| 濮阳市| 仪陇县| 民乐县| 文水县| 万安县| 岚皋县| 积石山| 星座| 满城县| 琼中| 黄龙县| 驻马店市| 右玉县| 舟山市| 伊宁县| 望奎县|