mysql前端的快取 MySQL快取分類和配置

2021-10-18 09:37:36 字數 2419 閱讀 1822

讀書筆記,待補充完善

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...