innodb記憶體結構如下圖
innodb高速緩衝對innodb很重要;
innodb不依賴os,而自己快取了所有資料,包括索引資料,行資料,等等,這點跟myisam有差別(myisam的資料依靠os的pagecache進行快取);
應該把它設定大一些,建議設定為可用ram的50%-80%;
查詢或更新需要對ibp加鎖,影響併發;
ibp有一塊buffer用於插入快取,在插入的時候先寫入記憶體,之後再合併順序寫入磁碟,在並到磁碟的時候,會引發較大的io操作,對實時才做造成影響(看上去抖動tps變低);
show global status like 『innodb_buffer_pool%』;檢視ibp狀態單位是page;
innodb_buffer_pool_wait_free如果較大需要加大ibp設定;
設定成全部記憶體的50%(確保單例項的話考慮到pga的分配)前端有連線池的話設定成70%。
2.innodb_additional_mem_pool_size
資料字典以及內部資料結構快取,表數量越多,相應的記憶體需要越大; 預設
8m,通常設定為
8-32m
足夠,一般建議設定為
16m如果確實不夠用那麼會從系統中請求增加分配記憶體並且錯誤日誌中會提醒。 3.
innodb_log_buffer_size
show_global_status
檢視innodb_log_waits
是否大於
0,是的話就需要提高
innodb_log_buffer_size
,否則維持原樣
show global status
檢視30-60
秒鐘innodb_os_log_writen
的間隔差異值,即可計算出
innodb_log_buffer_size
設定多大合適預設
8m一般
16-64m
足夠了
走近InnoDB記憶體結構
log buffer adaptive hash index 參考我們先來看看mysql官方給出的innodb的整體結構,如下圖,從圖中可以看出,大致可以分為左右兩個部分,左邊描述的是記憶體結構,就是本文討論的主要內容,右邊描述的是磁碟結構,會在之後的文章裡講述。從上圖可以看出,內容結構又可以細分為...
InnoDB的記憶體結構和特性
緩衝池 innodb儲存引擎是基於磁碟儲存的,並將其中的記錄按照頁的方式進行管理。但是由於cpu速度和磁碟速度之間的鴻溝,基於磁碟的資料庫系統通常使用緩衝池記錄來提高資料庫的的整體效能。在資料庫中進行讀取操作,首先將從磁碟中讀到的頁放在緩衝池中,下次再讀相同的頁中時,首先判斷該頁是否在緩衝池中。若在...
InnoDB體系結構之記憶體篇
前言,對於計算機來說,cpu 的運算速率要比記憶體讀寫速率快的多,記憶體的讀寫效率比磁碟的讀寫要快得多。為了解決 cpu 執行效率與記憶體讀寫速度不匹配的問題,就出現了cpu 快取。將記憶體中的一小部分資料在 cpu中快取起來,這樣就加快了 cpu 處理資料的能力。其實在任意兩種 速度相差較大的硬體...