您好,登錄后才能下訂單哦!
"查詢緩存" ---是把將查到的結果緩存下載,如果查詢語句相同,則直接把緩存的結果返回.
如果應用程序在某一個場景 多次需要查詢,且不需要經常更新,則使用查詢緩存可以有一定的性能提升。
如圖所以可以查看是否開啟了緩存功能
query_cache_type的值為on;表示已開啟了緩存功能
?query_cache_type:是否開啟緩存功能,取值為ON, OFF, DEMAND,表示 已啟用,已禁用,按照需要緩存,設置在my.cnf中即可。
?query_cache_min_res_unit:查詢緩存中內存塊的最小分配單位,默認4k,
較小值會減少浪費,但會導致更頻繁的內存分配操作,較大值會帶來浪費,會導
致碎片過多,內存不足
query_cache_limit:單個查詢結果能緩存的最大值,默認為1M,
對于查詢結果過大而無法緩存的語句,建議使用SQL_NO_CACHE
?query_cache_size:查詢緩存總共可用的內存空間;單位字節,必須是1024
的整數倍,最小值40KB,低于此值有警報
?query_cache_wlock_invalidate:如果某表被其它的會話鎖定,是否仍然可以
從查詢緩存中返回結果,默認值為OFF,
表示可以在表被其它會話鎖定的場景中繼續從緩存返回數據;
ON則表示不允許
?SQL_CACHE:顯式指定存儲查詢結果于緩存之中
?SQL_NO_CACHE:顯式查詢結果不予緩存
?query_cache_type參數變量
?query_cache_type的值為OFF或0時,查詢緩存功能關閉
?query_cache_type的值為ON或1時,查詢緩存功能打開,SELECT的結果符合
緩存條件即會緩存,否則,不予緩存,顯式指定SQL_NO_CACHE,不予緩存,
此為默認值
? query_cache_type的值為DEMAND或2時,查詢緩存功能按需進行,顯式指
定SQL_CACHE的SELECT語句才會緩存;其它均不予緩存
# 查詢緩存相關的狀態變量:
SHOW GLOBAL STATUS LIKE ‘Qcache%';
Qcache_free_blocks:處于空閑狀態 Query Cache中內存 Block 數
Qcache_total_blocks:Query Cache 中總Block ,當Qcache_free_blocks相對此值較大時,可能用內存碎片,執行FLUSH QUERY CACHE清理碎片
? Qcache_free_memory:處于空閑狀態的 Query Cache 內存總量
Qcache_hits:Query Cache 命中次數
? Qcache_inserts:向 Query Cache 中插入新的 Query Cache 的次數,即沒
有命中的次數
Qcache_lowmem_prunes:記錄因為內存不足而被移除出查詢緩存的查詢數
? Qcache_not_cached:沒有被 Cache 的 SQL 數,包括無法被 Cache 的 SQL
以及由于 query_cache_type 設置的不會被 Cache 的 SQL語句
? Qcache_queries_in_cache:在 Query Cache 中的 SQL 數量
————————————————
MyISAM引擎特點
?不支持事務
?表級鎖定
?讀寫相互阻塞,寫入不能讀,讀時不能寫
?只緩存索引
?不支持外鍵約束
?不支持聚簇索引
?讀取數據較快,占用資源較少
?不支持MVCC(多版本并發控制機制)高并發
?崩潰恢復性較差
?MySQL5.5.5前默認的數據庫引擎
————————————————
MyISAM存儲引擎 --適用場景
只讀(或者寫較少)、表較小(可以接受長時間進行修復操作)
MyISAM引擎文件
tbl_name.frm 表格式定義
tbl_name.MYD 數據文件
tbl_name.MYI 索引文件
————————————————
InnoDB引擎特點
行級鎖
?支持事務,適合處理大量短期事務
?讀寫阻塞與事務隔離級別相關
?可緩存數據和索引
?支持聚簇索引
?崩潰恢復性更好
?支持MVCC高并發
?從MySQL5.5后支持全文索引
?從MySQL5.5.5開始為默認的數據庫引擎
所有InnoDB表的數據和索引放置于同一個表空間中
表空間文件:datadir定義的目錄下
數據文件:ibddata1, ibddata2, ...
每個表單獨使用一個表空間存儲表的數據和索引
啟用:innodb_file_per_table=ON
兩類文件放在數據庫獨立目錄中
數據文件(存儲數據和索引):tb_name.ibd
表格式定義:tb_name.frm
管理存儲引擎
?查看mysql支持的存儲引擎
show engines;
查看當前默認的存儲引擎
show variables like '%storage_engine%';
設置默認的存儲引擎
vim /etc/my.conf
[mysqld]
default_storage_engine= InnoDB
查看庫中所有表使用的存儲引擎
show table status from db_name;
查看庫中指定表的存儲引擎
show table status like ' tb_name ';
show create table tb_name;
設置表的存儲引擎:
CREATE TABLE tb_name(... ) ENGINE=InnoDB;
ALTER TABLE tb_name ENGINE=InnoDB;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。