MYSQL緩衝的相關命令

來源:互聯網
上載者:User

 

MySQL> select @@query_cache_type;   

+--------------------+   

| @@query_cache_type |   

+--------------------+   

| ON |    

+--------------------+   

MySQL> set query_cache_type=off;   

MySQL> set query_cache_type=on;   

MySQL>    

MySQL> select sql_cache id, title, body from article;   

MySQL> select sql_no_cache id, title, body from article;   

MySQL> show variables like 'have_query_cache';   

+------------------+-------+   

| Variable_name | Value |   

+------------------+-------+   

| have_query_cache | YES |    

+------------------+-------+    

1 row in set (0.00 sec)   

  查看MySQL 查詢快取的大小

 

MySQL> select @@global.query_cache_size;   

+---------------------------+   

| @@global.query_cache_size |   

+---------------------------+   

| 16777216 |    

+---------------------------+   

1 row in set (0.00 sec)   

MySQL> select @@query_cache_size;   

+--------------------+   

| @@query_cache_size |   

+--------------------+   

| 16777216 |    

+--------------------+   

1 row in set (0.00 sec) 

  查看最大緩衝結果,如果結果集大於該數,不緩衝。

 

MySQL> select @@global.query_cache_limit;   

+----------------------------+   

| @@global.query_cache_limit |   

+----------------------------+   

| 1048576 |    

+----------------------------+   

1 row in set (0.00 sec) 

  磁碟重組

 

MySQL> flush query cache   

-> ;   

Query OK, 0 rows affected (0.00 sec) 

  清除緩衝

 

MySQL> reset query cache   

-> ;   

Query OK, 0 rows affected (0.00 sec 

  監視MySQL 查詢快取效能:

 

MySQL> flush tables;   

Query OK, 0 rows affected (0.04 sec)   

MySQL> show status like 'qcache%';   

+-------------------------+----------+   

| Variable_name | Value |   

+-------------------------+----------+   

| Qcache_free_blocks | 1 |    

| Qcache_free_memory | 16768408 |    

| Qcache_hits | 6 |    

| Qcache_inserts | 36 |    

| Qcache_lowmem_prunes | 0 |    

| Qcache_not_cached | 86 |    

| Qcache_queries_in_cache | 0 |    

| Qcache_total_blocks | 1 |    

+-------------------------+----------+   

8 rows in set (0.06 sec)   

 

 

show variables like 'query_cache%'

query_cache_limit 
如果單個查詢結果大於這個值,則不Cache 
query_cache_size 
分配給QC的記憶體。如果設為0,則相當于禁用QC。要注意QC必須使用大約40KB來儲存它的結構,如果設定小於40KB,則相當于禁用QC。QC儲存的最小單位是1024 byte,所以如果你設定了一個不是1024的倍數的值,這個值會被四捨五入到最接近當前值的等於1024的倍數的值。 
query_cache_type 
0 完全禁止QC,不受SQL語句控制(另外可能要注意的是,即使這裡禁用,上面一個參數所設定的記憶體大小還是會被分配);1啟用QC,可以在SQL語句使用SQL_NO_CACHE禁用;2可以在SQL語句使用SQL_CACHE啟用。 
query_cache_min_res_unit 
每次給QC結果分配記憶體的大小

 

show status like 'Qcache%'

Qcache_free_blocks 
當一個表被更新之後,和它相關的cache blocks將被free。但是這個block依然可能存在隊列中,除非是在隊列的尾部。這些blocks將會被統計到這個值來。可以用FLUSH QUERY CACHE語句來清空free blocks。 
Qcache_free_memory 
可用記憶體,如果很小,考慮增加query_cache_size 
Qcache_hits 
自mysql進程啟動起,cache的命中數量 
Qcache_inserts 
自mysql進程啟動起,被增加進QC的數量 
Qcache_lowmem_prunes 
由於記憶體過少而導致QC被刪除的條數。加大query_cache_size,儘可能保持這個值0增長。 
Qcache_not_cached 
自mysql進程啟動起,沒有被cache的唯讀查詢數量(包括select,show,use,desc等) 
Qcache_queries_in_cache 
當前被cache的SQL數量 
Qcache_total_blocks 
在QC中的blocks數。一個query可能被多個blocks儲存,而這幾個blocks中的最後一個,未用滿的記憶體將會被釋放掉。例如一個QC結果要佔6KB記憶體,如果query_cache_min_res_unit是4KB,則最後將會產生3個blocks,第一個block用來儲存sql語句文本,這個不會被統計到query+cache_size裡,第二個block為4KB,第三個block為2KB(先allocate4KB,然後釋放多餘的2KB)。每個表,當第一個和它有關的SQL查詢被CACHE的時候,會使用一個block來儲存表資訊。也就是說,block會被用在三處地方:表資訊,SQL文本,查詢結果。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.