mysql快取分類
innodb緩衝池
innodb日誌檔案和myisam資料的作業系統快取
myisam鍵快取
查詢快取
無法手工配置的快取,二進位制日誌,表定義檔案的作業系統快取
其它快取,通常不需要太多記憶體
innodb緩衝池
作用:1.快取的物件包括:資料行,索引,插入緩衝,鎖,以及內部資料結構。
2.利用緩衝池來版主延遲寫入,可以合併多次寫入,順序寫會(儲存裝置)
相關引數:
查詢innodb緩衝池的大小,單位是位元組
show variables like 'innodb_buffer_pool_size';
innodb_max_dirty_pages_pct變數影響髒頁的數量,
檢視innodb_max_dirty_pages_pct的設定
show variables like 'innodb_max_dirty_pages_pct'
當髒頁超過innodb_max_dirty_pages_pct指定的百分比之後,後台執行緒啟動(快速刷寫模式)將髒頁刷寫入磁碟
mysql記憶體不足時,有乙個類似於sqlserver的lazywrite的後台執行緒定時將髒頁重新整理入磁碟,
並且清理髒頁占用的記憶體空間,給其他資料(需要載入記憶體的資料)使用。
當事務日誌沒有空間的時候,innodb將進入激烈刷寫模式,大日誌可以提公升效能的原因(?)
預熱緩衝區:
可以理解成資料庫啟動的時候將資料從磁碟載入到快取區中,以提公升資料的訪問效能
兩種預熱緩衝區的方法
1.percina server
2.init_file設定,也即啟動後指定init_file裡面的sql,將sql語句中指定的資料寫入緩衝區
myisam鍵快取(key caches)
作用:myisam鍵快取又稱鍵緩衝,myisam表只快取索引不快取資料,myisam鍵快取就是快取的索引
相關引數:
預設只有乙個myisam鍵快取(池)
配置選項key_buffer_size
設定key_buffer_size時參考索引的大小,key_buffer_size的值沒必要設定的比索引更大
或者不超過作業系統快取保留總記憶體的25%-50%
設定時參考索引欄位的大小:select sum(index_length) from information_schema.`tables`
mysql預設回將所有索引都換粗在預設鍵快取中,
每個myisam鍵快取(池)有指定的大小,可以建多個key_buffer_size來快取索引
配置方法,在配置檔案中加入
key_buffer_1.key_buffer_size = 1g
key_buffer_2.key_buffer_size = 1g
加上預設的乙個,一共有三個key_buffer_size
指定索引到鍵快取:
快取表的索引到指定緩衝區:cache index t1,t2 in key_buffer_1
或者在init_file中配置
loda index into cache t1,t2(被分配在預設緩衝區)
鍵快取使用率計算:
100-((key_buffer_unused*key_cache_block_size)*100/key_buffer_size)
其它:1.myisam使用作業系統記憶體來快取資料,資料往往比索引要大,因此要預留更多的記憶體給作業系統快取,而不是鍵快取
2.即使沒有使用myisam表,依舊要設定key_buffer_size為乙個較小的值(比如32m),mysql伺服器可能在內部使用myisam表
執行緒快取
作用:當連線關閉後,釋放的執行緒被快取起來,處於備用狀態,
當有新的連線建立時,可以直接使用快取中快取的執行緒,以提高連線請求的效率
不用為每個連線建立新的執行緒
消費方式:
新進來的連線從快取中占用乙個處於快取狀態的執行緒(被占用後從快取中刪除),
當連線關閉後,如果執行緒快取還有空間的話,將當前執行緒歸還到快取執行緒中,如果快取執行緒沒有空間,則銷毀這個執行緒
相關引數:
thread_cache_size指定了快取中可儲存的執行緒的個數
每個執行緒占用的記憶體空間為256kb左右,
除非有非常高的併發訪問,否則不應該,一般不需要配置這個值
單位是快取的執行緒的個數
show variables like 'thread_cache_size'
每個執行緒占用的記憶體空間為256kb左右,
表快取作用:
主要是跟myisam表有關,快取的是表的.frm解析結果和一些其他資料,
快取之後就提高訪問表的效率。對於myisam表,表快取之後可以避免修改myisam標頭檔案來標記表正在被使用
show variables like '%table_open_cache%';
innodb 資料字典表
作用:
快取innodb的表定義資訊,
每當開啟一張innodb表的時候,就會快取這個表的定義到資料字典,但是表關閉後並不會從快取中移除
MySQL快取分類
mysql快取分類 innodb緩衝池 innodb日誌檔案和myisam資料的作業系統快取 myisam鍵快取 查詢快取 無法手工配置的快取,例如 二進位制日誌,表定義檔案的作業系統快取 其它快取,通常不需要太多記憶體 innodb緩衝池 innodb buffer pool size 作用 1....
mysql前端的快取 MySQL快取分類和配置
讀書筆記,待補充完善 mysql快取分類 innodb緩衝池 innodb日誌檔案和myisam資料的作業系統快取 myisam鍵快取 查詢快取 無法手工配置的快取,二進位制日誌,表定義檔案的作業系統快取 其它快取,通常不需要太多記憶體 innodb緩衝池 作用 1.快取的物件包括 資料行,索引,插...
redis快取分類
場景 前端需要根據條數num限制獲取分類,快取為8小時,減少訪問效能 實現原理 獲取分類列表時,先判斷是否能在快取中得到資料,如果有直接展示,如果沒有,要先去查資料,然後再快取。新增分類時要重新處理快取,新增成功後,先把清理快取,再查詢資料庫快取新的資料。遇到問題 當新增成功後,快取為10條資料,這...