這篇文章主要介紹了MySQL中table_cache如何優(yōu)化,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
為永清等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及永清網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、永清網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
table_cache 參數(shù)設(shè)置表高速緩存的數(shù)目。每個(gè)連接進(jìn)來,都會至少打開一個(gè)表緩存。因此, table_cache 的大小應(yīng)與 max_connections 的設(shè)置有關(guān)。例如,對于 200 個(gè)并行運(yùn)行的連接,應(yīng)該讓表的緩存至少有 200 × N ,這里 N 是應(yīng)用可以執(zhí)行的查詢的一個(gè)聯(lián)接中表的最大數(shù)量。此外,還需要為臨時(shí)表和文件保留一些額外的文件描述符。
當(dāng) Mysql 訪問一個(gè)表時(shí),如果該表在緩存中已經(jīng)被打開,則可以直接訪問緩存;如果還沒有被緩存,但是在 Mysql 表緩沖區(qū)中還有空間,那么這個(gè)表就被打開并放入表緩沖區(qū);如果表緩存滿了,則會按照一定的規(guī)則將當(dāng)前未用的表釋放,或者臨時(shí)擴(kuò)大表緩存來存放,使用表緩存的好處是可以更快速地訪問表中的內(nèi)容。
執(zhí)行 flush tables 會清空緩存的內(nèi)容。一般來說,可以通過查看運(yùn)行峰值時(shí)間的狀態(tài)值 Open_tables 和 Opened_tables ,判斷是否需要增加 table_cache 的值。其中 open_tables 是當(dāng)前打開的表的數(shù)量, Opened_tables 則是已經(jīng)打開的表的數(shù)量。下面我們的例子顯示了這兩個(gè)狀態(tài)值的變化情況:
首先,清空表緩存:
> flush tables;
Query OK, 0 rows affected (0.00 sec)
察看當(dāng)前的表緩存情況:
mysql> show global status like open%_tables;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 0 |
| Opened_tables | 543 |
+---------------+-------+
2 rows in set (0.00 sec)
在當(dāng)前連接訪問一個(gè)表:
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.03 sec)
mysql> show global status like open%_tables;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 1 |
| Opened_tables | 544 |
+---------------+-------+
2 rows in set (0.00 sec)
Open_tables和opened_tables都增加1。
再訪問一個(gè)其他表,可以看到兩個(gè)參數(shù)都增加。
mysql> select count(*) from t2;
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.06 sec)
mysql> show global status like open%_tables;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 2 |
| Opened_tables | 545 |
+---------------+-------+
2 rows in set (0.00 sec)
再訪問表t1的時(shí)候:
mysql> select * from t1;
+------+
| id |
+------+
| 2 |
| 1 |
| 1 |
| 3 |
+------+
4 rows in set (0.02 sec)
mysql> show global status like open%_tables;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 2 |
| Opened_tables | 545 |
+---------------+-------+
2 rows in set (0.00 sec)
兩個(gè)參數(shù)都沒有變化,因?yàn)樵摫硪呀?jīng)在表緩存中打開了,沒有重復(fù)打開。
如果發(fā)現(xiàn) open_tables 接近 table_cache 的時(shí)候,并且 Opened_tables 這個(gè)值在逐步增加,那就說明可能 table_cache 設(shè)置的偏小,經(jīng)常需要將緩存的表清出,將新的表放入緩存,這時(shí)可以考慮增加這個(gè)參數(shù)的大小來改善訪問的效率
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“MySQL中table_cache如何優(yōu)化”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
網(wǎng)頁題目:MySQL中table_cache如何優(yōu)化
當(dāng)前鏈接:http://jinyejixie.com/article32/gdpspc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、品牌網(wǎng)站設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、Google、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)