在mysql中查詢快取的原理
:
其實是mysql建立了乙個臨時的空間叫
qcache(
這個空間生成在
mysql
的編譯器記憶體中
),這個空間的大小是
用位元組大小來計算
的,所以快取多少資料可以根據需求進行調節
.如果是第一次查詢
,則從硬碟找查詢並返回結果
,如果有記錄返回
qcache
會記錄查詢到的結果
,當使用者發出第二次查詢
,mysql
就會詢問
qcache
是否已經存在了這個查詢。如果存在則從
qcache
中返回查詢結果
,如果不存在則又一次從硬碟中查詢結果並把找到的結果放到
qcache當中.
語法規則: set global query_cache_size = 開闢記憶體的位元組大小
比如我們要把乙個qcache的查詢快取的空間設定為
64m,那麼我們可以使用以下命令:
set global query_cache_size = 64 * 1024 * 1024
換算原理如下:
64m = ?位元組
1kb = 1024 位元組
1m = 1024kb = 1024 * 1024位元組
64m = 64 * 1024 * 1024
預設的情況下,mysql是沒有開啟查詢快取的功能
沒有開啟查詢快取,那麼無論你查多少次資料庫都是去硬碟當中查詢資料,因此速度不會發生很多的時間差,然後現在設定查詢快取qcache的空間為
64m後在來檢視結果,詳細步驟如下:
第1步:使用命令set global query_cache_size = 64 * 1024 * 1024 設定查詢快取的空間(qcache的空間)
不出現任何的錯誤就代表設定成功,就代表當前開啟了查詢快取,並且擁有64m的臨時記憶體空間。
第2步:再次測試select * from tbl_no where username=』itheima』檢視結果
第1次查詢:
4.78sec
,並且qcache
會記錄當前的查詢結果
第2,3,4...次查詢:0sec,從qcache中返回結果,發覺速度提公升了很多倍
總結:查詢快取是一種非常簡單的手段,只需要乙個簡單命令設定空間的位元組大小就能完成這個優化技術,然而查詢快取是需要付出代價的,因為查詢快取會佔據記憶體的空間,因此如果你開啟很多的記憶體空間,而記憶體空間爆滿了,那麼計算機的作業系統有可能會緩慢甚至重啟,因此查詢快取是在乙個公司創立時候大概只有100萬條資料左右的時候建議使用,如果你資料已經超過千萬級別訪問量又特別的大的時候,查詢快取極有可能造成伺服器的重啟或者記憶體的崩潰.
注意事項:查詢快取對整個資料庫都有效
語法規則: set global query_cache_size = 0
關閉後,快取就會失效
,之前的查詢結果全部又會到硬碟當中去查詢了
tom的mysql查詢快取 MySQL優化
mysql優化 1 sql語句優化 2 索引優化 3 資料庫結構優化 4 innodb表優化 5 myisam表優化 6 memory表優化 7 理解查詢執行計畫 8 緩衝和快取 9 鎖優化 10 mysql伺服器優化 11 效能評估 12 mysql優化內幕 mysql 資料庫引擎 常用的 inn...
mysql資料快取查詢 Mysql查詢快取
查詢快取 mysql提供了一種快取型別,會快取整個select查詢結果。mysql查詢快取儲存查詢返回的完整結果。當查詢命中該快取,mysql會立即返回結果,跳過了解析 優化和執行階段。以下兩種情況不能被快取 頻繁更新 修改的的表,所有快取資料都會失效,mysql查詢快取會跟蹤查詢中涉及的表,如果這...
查詢優化(MySQL優化查詢)
關聯查詢太多join 設計缺陷或不得已的需求 資料庫伺服器調優及各個引數設定不適當 緩衝 執行緒數等 慢查詢日誌 找出執行速度慢的sql語句 慢查詢的開啟並捕獲 explain 慢sql分析 show profile查詢sql在mysql伺服器裡面的執行細節和生命週期情況 sql資料庫伺服器的引數調...