讀書筆記,待補充完善
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%
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的快取機制
參考 mysql的快取功能 對於乙個並沒有那麼複雜的系統,但是某幾個表特別大的時候,快取是乙個很實用的乙個功能,是sql優化和查詢提速的常用操作,開啟mysql自帶的此功能,實現查詢結果快取的同時,快取失效的維護由資料庫自己完成,而不像一般的spring框架要通過 或者過期自動超時來維護。當然,這個...
mysql 快取設定 mysql快取設定
伺服器端的設定 mysql優化首先要知道mysql快取是如何工作以及如何設定,下面是我從別人部落格上覆制過來了,初學者。mysql每個表都可以表示為磁碟上的乙個檔案,必須先開啟,後讀取。為了加快從檔案中讀取資料的過程,mysqld 對這些開啟檔案進行了快取,其最大數目由 etc mysqld.con...
mysql 快取 mysql 快取機制解讀
首先講解一下,快取的原理 快取存在乙個hash表中,通過查詢sql,查詢資料庫,客戶端協議等作為key,在判斷命中前,命中條件 1 mysql不會解析sql,而是使用sql去查詢快取,2 sql上的任何字元的不同,如空格,注釋,都會導致快取不命中。3 如果查詢有不確定的資料like now curr...