《Mysql學(xué)習(xí)MySQL緩存的查詢和清除命令使用詳解》要點(diǎn):
本文介紹了Mysql學(xué)習(xí)MySQL緩存的查詢和清除命令使用詳解,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
MYSQL教程Mysql 查詢緩存
查詢緩存的作用就是當(dāng)查詢接收到一個(gè)和之前同樣的查詢,服務(wù)器將會(huì)從查詢緩存種檢索結(jié)果,而不是再次分析和執(zhí)行上次的查詢.這樣就大大提高了性能,節(jié)省時(shí)間.
1.配置查詢緩存
修改配置文件,修改[mysqld]下的query_cache_size和query_cache_type(如果沒有則添加).其中query_cache_size表示緩存的大小,而query_cache_type有3個(gè)值,表示緩存那種類? 型的select結(jié)果集,query_cache_type各個(gè)值如下:
0或off關(guān)閉緩存
1或on開啟緩存,但是不保存使用sql_no_cache的select語句,如不緩存select? sql_no_cache name from wei where id=2
2或demand開啟有條件緩存,只緩存帶sql_cache的select語句,緩存select? sql_cache name from wei where id=4
例子的配置為下,配置完成重啟Mysql服務(wù)器即可.
MYSQL教程
query_cache_size=10M
query_cache_type=1
MYSQL教程可以用如下命令查看是否開啟,其中have_query_cache為是否開啟,query_cache_limit 指定單個(gè)查詢能夠使用的緩沖區(qū)大小,缺省為1M;query_cache_min_res_unit為系統(tǒng)分配的最小緩存塊大小,默認(rèn)是4KB,設(shè)置值大對(duì)大數(shù)據(jù)查詢有好處,但如果你的查詢都是小數(shù)據(jù) 查詢,就容易造成內(nèi)存碎片和浪費(fèi);query_cache_size和query_cache_type就是上面我們的配置;query_cache_wlock_invalidate表示當(dāng)有其他客戶端正在對(duì)MyISAM表進(jìn)行寫操作時(shí),如果查詢?cè)趒uery cache中,是否返回cache結(jié)果還是等寫操作完成再讀表獲取結(jié)果.
MYSQL教程
mysql> show variables like '%query_cache%';
+------------------------------+----------+
| Variable_name | Value |
+------------------------------+----------+
| have_query_cache | YES |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 10485760 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
+------------------------------+----------+
6 rows in set (0.00 sec)
MYSQL教程2.測(cè)試
我們先執(zhí)行一次,select? count(*) from wei ;然后再執(zhí)行一次,可以看出第二次用的時(shí)間遠(yuǎn)遠(yuǎn)低于第一次的執(zhí)行,因?yàn)榈诙螐木彺嬷凶x取了select結(jié)果.
MYSQL教程
mysql> select count(*) from wei ;
+----------+
| count(*) |
+----------+
| 4194304 |
+----------+
1 row in set (3.92 sec)
mysql> select count(*) from wei ;
+----------+
| count(*) |
+----------+
| 4194304 |
+----------+
1 row in set (0.00 sec)
MYSQL教程我們可以通過如下命令查看現(xiàn)在緩存的情況
MYSQL教程
mysql> show status like 'qcache%';
+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_free_blocks | 1 |
| Qcache_free_memory | 10475424 |
| Qcache_hits | 1 |
| Qcache_inserts | 1 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 0 |
| Qcache_queries_in_cache | 1 |
| Qcache_total_blocks | 4 |
+-------------------------+----------+
8 rows in set (0.00 sec)
MYSQL教程其中各個(gè)參數(shù)的意義如下:
MYSQL教程
清除緩存
mysql的FLUSH句法(清除緩存)
MYSQL教程
FLUSH flush_option [,flush_option]
MYSQL教程如果你想要清除一些MySQL使用內(nèi)部緩存,你應(yīng)該使用FLUSH命令.為了執(zhí)行FLUSH,你必須有reload權(quán)限.
flush_option可以是下列任何東西:
MYSQL教程? 一般來講,Flush操作都會(huì)記錄在二進(jìn)制日志文件中,但是FLUSH LOGS、FLUSH MASTER、FLUSH SLAVE、FLUSH TABLES WITH READ LOCK不會(huì)記錄,因此上述操作如果記錄在二進(jìn)制日志文件中話,會(huì)對(duì)從數(shù)據(jù)庫造成影響.注意:Reset操作其實(shí)扮演的是一個(gè)Flush操作的增強(qiáng)版的角色.
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/4740.html