MySQL 緩存
MySQL 超時
- connect_timeout 與客戶端連接建立超時,默認10秒
- interactive_timeout 交互終端超時斷開,默認28800秒
- wait_timeout 非交互終端超時斷開,默認28800秒
- net_read_timeout 從客戶端讀取數據超時,默認30秒
- net_write_timeout 向客戶端寫入數據超時,默認60秒
- innodb_lock_wait_timeout 鎖等待超時,默認50秒
- innodb_rollback_on_timeout 超時後回滾整個事務操作,默認OFF
- slave_net_timeout 從庫讀取binlog失敗後,等待指定秒後重新連接主庫,默認60秒
查詢緩存配置
- have_query_cache 是否支持查詢緩存,默認yes
- query_cache_limit select結果集大於該值時不緩存,默認1048576
- qeury_cache_min_res_unit 查詢緩存申請的內存單位(塊)大小,默認4096,一般不改
- query_cache_size 查詢緩存大小,默認1048576
- query_cache_type
- 0(OFF) 關閉查詢緩存,默認
- 1(ON) 如果select語句沒有sql_no_cache選項,則使用查詢緩存
- 2(DEMOND) 如果select語句沒有sql_cache選項,則不使用查詢緩存
- query_cache_wlock_invalidate
- 0(OFF) 鎖表後,該表的查詢緩存依舊有效,默認
- 1(ON) 鎖表後,該表的查詢緩存失效
查詢緩存狀態
- Qcache_free_blocks 查詢緩存中的內存碎片數量
- 碎片過多表明查詢結果集較小,可適當減小query_cache_min_res_unit
- 整理查詢緩存中的碎片,獲得一個較大的內存空閒空間
flush query cache
- 緩存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%
- Qcache_free_memory 查詢緩存中的可用內存
- Qcache_hits 使用查詢緩存的次數
- Qcache_inserts 查詢緩存中緩存過的select結果集數量(包括當前正在緩存的)
- Qcache_lowmen_prunes 因查詢緩存已滿而刪除的select結果集數量
- Qcache_not_cached 沒有進入查詢緩存的select語句個數
- Qcache_queries_in_cache 查詢緩存中當前緩存着select結果集數量
- Qcache_total_blocks 查詢緩存中的塊總數
- Com_select 執行過的select語句數量
- 查詢緩存的命中率 = Qcache_hits / Com_select * 100%
排序緩存配置
- sort_buffer_size 排序緩存大小,默認262144
- max_length_for_sort_data 排序sql中的全部字段長度總和小於該值時,使用優化排序方式,否則使用常規排序方式,默認1024
- max_sort_length 使用列的前(默認1024)個字節排序
- innodb_sort_buffer_size InnoDB用於創建/重建索引的排序緩存,默認1048576
排序緩存狀態
- Sort_merge_passes 使用臨時文件完成排序操作的次數
- 增加sort_buffer_size可減少使用臨時文件排序的次數
- Sort_range 使用範圍排序的次數
- Sort_rows 已經排序的記錄行數
- Sort_scan 通過全表掃描完成排序的次數
join 連接緩存
- join_buffer_size 兩表join但不能使用索引時,爲每張表分配的連接緩存,默認262144
表/表結構 緩存配置
- table_open_cache 可以緩存表和視圖的數量
- table_defination_cache 可以存儲的表結構數量
- open_files_limit 可以打開的文件數量
InnoDB 重做日誌緩存配置
- innodb_log_buffer_size 事務提交前,把重做日誌寫入緩存中
- innodb_flush_log_at_trx_commit
- 0 每隔一秒,把日誌緩存寫到日誌文件,並刷新到磁盤
- 1 每次提交時,把日誌緩存寫到日誌文件,並刷新到磁盤
- 2 每次提交是,把日誌緩存寫到日誌文件,每隔一秒刷新到磁盤
InnoDB 預讀配置
- innodb_read_ahead_threshold 預讀的前後數據庫個數
FLUSH 語句
- HOSTS 清空主機表
- LOGS 關閉binlog文件,創建新編號binlog文件
- PRIVILEGES 從數據庫授權表中重新裝載權限到緩存中
- TABLES 關閉打開的表,清空查詢緩存
- QUERY CACHE 整理碎片,不影響查詢緩存中現有數據
RESET QUERY CACHE
- TABLES WITH READ LOCK 關閉打開的表並加一個只讀鎖
UNLOCK TABLES
- STATUS 重置大多數狀態變量到0
- MASTER(RESET MASTER) 刪除全部binlog文件,重建一個新的binlog文件
- SLAVE(RESET SLAVE) 忘記主庫binlog文件位置,刪除relay log