Mysql之記憶體結構

2021-09-10 19:56:08 字數 1259 閱讀 6520

mysql記憶體組成可以分為sga(系統全域性)和pga(程式快取區)

引數用途

innodb_buffer_pool

用來快取innodb表的資料,索引,插入快取,資料字典等資訊

innodb_log_buffer

即redo log buffer 事務在記憶體中的緩衝

query cache

只能快取靜態資料資訊,建議生產環境關閉,5.6之後預設是關閉的,query_cache_type設定為off,query_cache_size設定為0,才會生效

引數用途

sort_buffer_size

使用者sql語句在記憶體中的臨時排序

join_buffer_size

表連線使用,適用於bka ,該快取中會儲存join欄位的資料方便與另外一張表進行連線

read_buffer_size

表順序掃瞄的快取,只適用於myisam儲存引擎

read_rnd_buffer_size

mysql隨機讀取快取區大小,使用者做mrr,mrr優化的目的就是為了減少磁碟的隨機訪問,對於mysql的二級索引(非聚集索引)而言,過於隨機的回表會造成隨機讀取過於嚴重,範圍掃瞄(range access)中mysql將掃瞄到的資料存入read_rnd_buffer_size,然後對其按照primary key(rowid)排序,然後使用排序好的資料進行順序回表,因為我們知道innodb中葉子節點資料是按照primary key(rowid)進行排列的,那麼這樣就轉換隨機讀取為順序讀取了

tmp_table_size

sql語句在排序/分組時沒有使用到索引,會使用臨時表空間

page在innodb磁碟i/o最小單位,資料都存放在page中,對應到記憶體中就是乙個個buffer.

操作描述

每1s操作

1.日誌重新整理到磁碟,即使事務還沒提交,2.重新整理髒頁到磁碟,3.執行合併插入緩衝操作,4.產生checkpoint,5.清楚無用的table cache,6.當前沒有操作切換到background loop

每10s操作

1.日誌重新整理到磁碟,即使事務還沒提交,2.重新整理髒頁到磁碟,3.執行合併插入緩衝操作,4.產生checkpoint,5.刪除無用的undo

2.後台迴圈 background loop

3.重新整理迴圈 flush loop

4.暫停迴圈 supsend loop

mysql之記憶體表

昨天下午老大讓我查資料看一下mysql的記憶體表在主從備份中是否能被複製,我還沒聽說過記憶體表呢,於是上網查資料,記錄一下,以便查閱 學習 參考 記憶體表 複製 session 1 mysql uroot root none 10 05 06 use test database changed ro...

Mysql學習之記憶體詳解

本篇文章是對 mysql記憶體 的使用說明 全域性快取 執行緒快取 進行了詳細的分析介紹,需要的朋友參考下 首先我們來看乙個公式,mysql中記憶體分為全域性記憶體和執行緒記憶體兩大部分 其實並不全部,只是影響比較大的 部分 複製 如下 per thread buffers read buffer ...

mysql記憶體結構 MySQL記憶體結構

實際上mysql記憶體的組成和oracle類似,也可以分為sga 系統全域性區 和pga 程式快取區 mysql show variables like buffer 一 sga 1.innodb buffer bool 用來快取innodb表的資料 索引 插入緩衝 資料字典等資訊。2.innodb...