溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL/MariaDB---查詢緩存與存儲引擎

發(fā)布時間:2020-06-27 09:14:52 來源:網(wǎng)絡 閱讀:456 作者:不忘初心灬 欄目:系統(tǒng)運維

查詢緩存

"查詢緩存" ---是把將查到的結果緩存下載,如果查詢語句相同,則直接把緩存的結果返回.

如果應用程序在某一個場景  多次需要查詢,且不需要經(jīng)常更新,則使用查詢緩存可以有一定的性能提升。  
如圖所以可以查看是否開啟了緩存功能  

MySQL/MariaDB---查詢緩存與存儲引擎
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:查詢緩存總共可用的內存空間;單位字節(jié),必須是1024
的整數(shù)倍,最小值40KB,低于此值有警報
?query_cache_wlock_invalidate:如果某表被其它的會話鎖定,是否仍然可以
        從查詢緩存中返回結果,默認值為OFF,  
    表示可以在表被其它會話鎖定的場景中繼續(xù)從緩存返回數(shù)據(jù);  
        ON則表示不允許

SELECT語句的緩存控制

?SQL_CACHE:顯式指定存儲查詢結果于緩存之中
?SQL_NO_CACHE:顯式查詢結果不予緩存
?query_cache_type參數(shù)變量
?query_cache_type的值為OFF或0時,查詢緩存功能關閉
?query_cache_type的值為ON或1時,查詢緩存功能打開,SELECT的結果符合
緩存條件即會緩存,否則,不予緩存,顯式指定SQL_NO_CACHE,不予緩存,
此為默認值
? query_cache_type的值為DEMAND或2時,查詢緩存功能按需進行,顯式指
定SQL_CACHE的SELECT語句才會緩存;其它均不予緩存    

# 查詢緩存相關的狀態(tài)變量:  
SHOW GLOBAL STATUS LIKE ‘Qcache%';

MySQL/MariaDB---查詢緩存與存儲引擎

        Qcache_free_blocks:處于空閑狀態(tài) Query Cache中內存 Block 數(shù)  
    Qcache_total_blocks:Query Cache 中總Block ,當Qcache_free_blocks相對此值較大時,可能用內存碎片,執(zhí)行FLUSH QUERY CACHE清理碎片
    ? Qcache_free_memory:處于空閑狀態(tài)的 Query Cache 內存總量
    Qcache_hits:Query Cache 命中次數(shù)
    ? Qcache_inserts:向 Query Cache 中插入新的 Query Cache 的次數(shù),即沒
有命中的次數(shù)
     Qcache_lowmem_prunes:記錄因為內存不足而被移除出查詢緩存的查詢數(shù)
    ? Qcache_not_cached:沒有被 Cache 的 SQL 數(shù),包括無法被 Cache 的 SQL
    以及由于 query_cache_type 設置的不會被 Cache 的 SQL語句
    ? Qcache_queries_in_cache:在 Query Cache 中的 SQL 數(shù)量    

MySQL/MariaDB---查詢緩存與存儲引擎
————————————————

存儲引擎

MyISAM引擎特點
?不支持事務
?表級鎖定
?讀寫相互阻塞,寫入不能讀,讀時不能寫
?只緩存索引
?不支持外鍵約束
?不支持聚簇索引
?讀取數(shù)據(jù)較快,占用資源較少
?不支持MVCC(多版本并發(fā)控制機制)高并發(fā)
?崩潰恢復性較差
?MySQL5.5.5前默認的數(shù)據(jù)庫引擎  

————————————————

MySQL/MariaDB---查詢緩存與存儲引擎
MyISAM存儲引擎 --適用場景

    只讀(或者寫較少)、表較小(可以接受長時間進行修復操作)
    MyISAM引擎文件
    tbl_name.frm 表格式定義
    tbl_name.MYD 數(shù)據(jù)文件
    tbl_name.MYI 索引文件    

————————————————

InnoDB引擎特點

    行級鎖
?支持事務,適合處理大量短期事務
?讀寫阻塞與事務隔離級別相關
?可緩存數(shù)據(jù)和索引
?支持聚簇索引
?崩潰恢復性更好
?支持MVCC高并發(fā)
?從MySQL5.5后支持全文索引
?從MySQL5.5.5開始為默認的數(shù)據(jù)庫引擎   

MySQL/MariaDB---查詢緩存與存儲引擎

InnoDB數(shù)據(jù)庫文件

所有InnoDB表的數(shù)據(jù)和索引放置于同一個表空間中
表空間文件:datadir定義的目錄下
數(shù)據(jù)文件:ibddata1, ibddata2, ...
每個表單獨使用一個表空間存儲表的數(shù)據(jù)和索引
啟用:innodb_file_per_table=ON
兩類文件放在數(shù)據(jù)庫獨立目錄中
數(shù)據(jù)文件(存儲數(shù)據(jù)和索引):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;  
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI