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

查詢緩存

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

若是應用程序在某一個場景  屢次須要查詢,且不須要常常更新,則使用查詢緩存能夠有必定的性能提高。  
如圖因此能夠查看是否開啓了緩存功能

MySQL/MariaDB---查詢緩存與存儲引擎
query_cache_type的值爲on;表示已開啓了緩存功能 sql

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則表示不容許

SELECT語句的緩存控制

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%';

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

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 數量

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

存儲引擎

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

———————————————— vim

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

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

———————————————— 併發

InnoDB引擎特色 ide

行級鎖
支持事務,適合處理大量短時間事務
讀寫阻塞與事務隔離級別相關
可緩存數據和索引
支持聚簇索引
崩潰恢復性更好
支持MVCC高併發
從MySQL5.5後支持全文索引
從MySQL5.5.5開始爲默認的數據庫引擎

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

InnoDB數據庫文件

全部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;
相關文章
相關標籤/搜索