日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > MySQL查詢高速緩沖詳解

MySQL查詢高速緩沖詳解

來源:程序員人生   發布時間:2016-06-24 13:29:55 閱讀次數:3457次

查詢高速緩沖概述

查詢緩存存儲SELECT查詢的文本和發送給客戶真個相應結果。如果隨后收到1個相同的查詢,服務器從查詢緩存中重新得到查詢結果,而不再需要解析和履行查詢。如果你有1個不常常改變的表并且服務器收到該表的大量相同查詢,查詢緩存在這樣的利用環境中10分有用。對許多Web服務器來講存在這類典型情況,它根據數據庫內容生成大量的動態頁面。
備注1.查詢緩存不返回舊的數據。當表更改后(如INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE操作),查詢緩存值的相干條目被清空。2.如果你有許多mysqld服務器更新相同的MyISAM表,在這類情況下查詢緩存不起作用。3.查詢緩存不適用于服務器方編寫的語句。如果正在使用服務器方編寫的語句,要斟酌到這些語句將不會利用查詢緩存.

查詢高速緩沖如何工作

當MySQL服務器收到1個查詢要求的時候,MySQL服務器首先檢查用戶對所有相干數據庫和表的SELECT權限,如權限通過,然后以該SQL文本作為key來從查詢緩存中檢索是不是有相同的key(由于數據緩存都是以SQL文本作為key來保存的),如果從查詢緩沖中找到對應的key值,就返回1個對應的查詢結果,服務器把Qcache_hits狀態變量的值加1,而不需要解析器對sql語句進行解析,如果查找不到對應的key值,然后履行sql的解析,然后查詢,可以參考下圖。
這里寫圖片描述
備注:
1.作為key值的sql語句是辨別大小寫的,即SELECT * FROM t1select * from t1對應的key值是不1樣的。所以,如果開啟了查詢緩沖,在寫SQL語句的時候,應注意這點。
2.如果1個表被更改了,那末使用那個表的所有緩沖查詢將不再有效,并且從緩沖區中移出,這樣保證了數據的1致性(即表中數據和緩沖中數據1致性)。

查詢高速緩沖配置

1.查看查詢緩沖是不是可以
MySQL中,可以通過have_query_cache服務器系統變量唆使查詢緩存是不是可用。即便禁用查詢緩存,當使用標準 MySQL2進制時,這個值總是YES。
這里寫圖片描述
2.其他重要配置參數
查詢緩存系統變量名以query_cache_ 開頭,以下圖,我們將逐1說明。
這里寫圖片描述

  • having_query_cache
    就不在細說了,主要是控制查詢緩沖的開啟與否。
  • query_cache_limit
    單個查詢可以被緩存的具體查詢結果的最大值。
  • query_cache_min_res_unit
    該參數是控制存儲查詢緩沖時候,分配的內存塊大小。當查詢進行的時候,但如果要保存的結果比較大,超過query_cache_min_res_unit的值 ,這時候候mysql將1邊檢索結果,1邊進行保存結果,所以,有時候其實不是把所有結果全部得到后再進行1次性保存,而是每次分配1塊 query_cache_min_res_unit 大小的內存空間保存結果集,使用完后,接著再分配1個這樣的塊,如果還不不夠,接著再分配1個塊,依此類推,也就是說,有可能在1次查詢中,mysql要進行屢次內存分配的操作。query_cache_min_res_unit默許值是4KB。 如果你有大量返回小結果數據的查詢,默許數據塊大小可能會致使內存碎片,顯示為大量空閑內存塊。由于缺少內存,內存碎片會強迫查詢緩存從緩存內存中修整(刪除)查詢。這時候,你應當減少query_cache_min_res_unit變量的值,空閑塊和由于修整而移出的查詢的數量通過Qcache_free_blocks和Qcache_lowmem_prunes變量的值給出。固然 如果大量查詢返回大結果(檢查 Qcache_total_blocks和Qcache_queries_in_cache狀態變量),你可以通過增加query_cache_min_res_unit變量的值來提高性。
  • query_cache_size
    查詢緩存大小,設置為0表示禁用查詢緩存。 默許緩存大小設置為0;也就是禁用查詢緩存。當設置query_cache_size變量為非零值時,應記住查詢緩存最少大約需要40KB來分配其數據結構。(具體大小取決于系統結構)。如果你把該值設置的太小,將會得到1個正告,且會將query_cache_size值設置為0。
    這里寫圖片描述

    這里寫圖片描述

  • query_cache_type
    該參數主要是控制緩存行動的。query_cache_type變量的GLOBAL值將決定更改后所有連接客戶真個緩存行動。在linux下,可在my.cnf(在win下,可在my.ini)中進行配置。具體客戶端可以通過設置query_cache_type變量的會話值控制它們本身連接的緩存行動。例如,1個客戶可以禁用自己的查詢緩存。 該參數有3種值以下
    • 0或OFF
      將禁止緩存或查詢緩存結果
    • 1或ON
      將允許緩存,以SELECT SQL_NO_CACHE開始的查詢語句除外。
    • 2或DEMAND
      僅對以SELECT SQL_CACHE開始的那些查詢語句啟用緩存

查詢高速緩沖保護

碎片的清算

在前面,我們可以得知,使用緩存,不可避免內存碎片,我們可使用FLUSH QUERY CACHE語句來清算查詢緩存碎片,以提高內存使用性能。該語句不從緩存中移出任何查詢。RESET QUERY CACHE語句從查詢緩存中移出所有查詢。FLUSH TABLES語句也履行一樣的工作,區分optimize table tableName,關于optimize可以參考(http://blog.csdn.net/hsd2012/article/details/51485250)。

查詢緩存性能監控

為了監視查詢緩存性能,使用SHOW STATUS查看緩存狀態變量:
這里寫圖片描述
Qcache_free_blocks:緩存中相鄰內存塊的個數。數目大說明可能有碎片。履行FLUSH QUERY CACHE會對緩存中的碎片進行整理,只保存1個空閑塊。
Qcache_free_memory:緩存中的空閑內存。
Qcache_hits:每次查詢在緩存中命中時就增大
Qcache_inserts:每次插入1個查詢時就增大。命中次數除以插入次數就是不中比率。
Qcache_lowmem_prunes:緩存出現內存不足,并且必須為了緩存新的查詢,而從查詢緩沖區中移出到自由內存中的查詢的數目。這個數字最好長時間來看;如果這個 數字在不斷增長,就表示可能碎片非常嚴重,或內存很少。(上面的 Qcache_free_blocks和Qcache_free_memory可以告知您屬于哪一種情況) 。從查詢緩沖區移除查詢緩沖,使用最近最少使用(LRU)策略。
Qcache_not_cached:不合適進行緩存的查詢的數量,通常是由于這些查詢不是 SELECT 語句或用了now()之類的函數。
Qcache_queries_in_cache:當前緩存的查詢(和響應)的數量。
Qcache_total_blocks:緩存中塊的數量。
Qcache_total_blocks和Qcache_free_blocks可以顯示查詢緩存內存碎片。

備注
以上敘述,主要參考mysql手冊。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成人免费福利视频 | 亚洲激情欧美激情 | av在线免费观看网址 | 久久久久国产精品午夜一区 | 精品人伦一区二区三区蜜桃网站 | av在线免费网站 | 午夜色播 | 久久国产精品亚洲 | 日韩三级免费观看 | 国产亚洲二区 | 久久久久久久久99精品 | 久久久精品久久久 | 99精品视频在线观看免费 | 欧美国产日本 | 欧美偷拍一区二区 | 国产伦精品一区二区三区免费视频 | 国产精品久久久久久 | 不卡在线一区 | www久久| 日本一区二区三区四区高清视频 | 一二区av| 日韩精品一区二区三区 | 国产一二区在线 | 黄色在线免费观看 | 精品一区二区av | 亚洲一区视频 | 亚洲免费在线播放 | 中文字幕亚洲精品 | 成年人在线视频 | 99re6在线视频 | 国产午夜亚洲精品理论片色戒 | 国产一区二区三区在线免费 | 欧美无乱码久久久免费午夜一区 | 国产精品第四页 | 日本精品一区二区三区四区的功能 | 福利精品 | 蜜桃一区 | 视频一区在线 | 国产一区二区三区在线视频 | 欧美日韩一卡二卡三卡 | 日韩av影片在线观看 |