"查詢緩存" ---是把將查到的結果緩存下載,若是查詢語句相同,則直接把緩存的結果返回. mysql
若是應用程序在某一個場景 屢次須要查詢,且不須要常常更新,則使用查詢緩存能夠有必定的性能提高。 如圖因此能夠查看是否開啓了緩存功能
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則表示不容許
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前默認的數據庫引擎
———————————————— vim
MyISAM存儲引擎 --適用場景 緩存
只讀(或者寫較少)、表較小(能夠接受長時間進行修復操做) MyISAM引擎文件 tbl_name.frm 表格式定義 tbl_name.MYD 數據文件 tbl_name.MYI 索引文件
———————————————— 併發
InnoDB引擎特色 ide
行級鎖 支持事務,適合處理大量短時間事務 讀寫阻塞與事務隔離級別相關 可緩存數據和索引 支持聚簇索引 崩潰恢復性更好 支持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;