MySQL 配置InnoDB變更緩衝
配置InnoDB變更緩衝
當在表上執行INSERT、UPDATE和DELETE操作時,索引列的值(特別是輔助鍵的值)通常是無序的,這需要大量的I/O來更新輔助索引。InnoDB有一個更改緩衝區,當相關的輔助索引頁面不在緩衝池中時,它將快取輔助索引的改變,這樣就不會立即從磁碟讀取頁面,從而避免了昂貴的I/O操作。當頁面載入到緩衝池時,緩衝的更改將被合併,更新後的頁面稍後將重新整理到磁碟。InnoDB主執行緒在伺服器幾乎空閒的時候,或者在緩慢關閉的時候,合併緩衝的變更。
因為它可以減少磁碟讀寫,所以更改緩衝區特性對於I/O限制的工作負載最有價值,例如具有大量DML操作(如批次插入)的應用程式。
但是,更改緩衝區佔用了緩衝池的一部分,減少了可用來快取資料頁的記憶體。如果工作集幾乎可以放進緩衝池,或者如果表的輔助索引相對較少,那麼禁用更改緩衝可能會很有用。如果工作集完全適合緩衝區,那麼更改緩衝區不會帶來額外的開銷,因為它只應用於不在緩衝池中的頁。
你可以使用innodb_change_buffering配置引數來控制InnoDB執行改變緩衝的程度。您可以為插入、刪除操作(當索引記錄最初被標記為刪除時)和清除操作(當索引記錄被物理刪除時)啟用或禁用緩衝。更新操作是插入操作和刪除操作的組合。innodb_change_buffer的預設值為all。
允許的innodb_change_buffer值包括如下所示:
.all
預設值:緩衝區插入、刪除標記操作和清除操作
.none
不緩衝任何操作
.inserts
緩衝插入操作。
.deletes
緩衝delete-marking操作
.changes
緩衝插入和刪除標記操作
.purges
緩衝發生在後臺的物理刪除操作
你可以在MySQL選項檔案(my.cnf或my.ini)中設定innodb_change_buffer引數,或者使用set GLOBAL命令動態修改,這需要超級許可權。更改設定會影響新操作的緩衝;現有緩衝項的合併不會受到影響。
配置更改緩衝區的最大大小
從MySQL5.6.2開始,innodb_change_buffer_max_size配置選項允許你配置變更緩衝區的最大大小佔緩衝池總大小的百分比。預設情況下,innodb_change_buffer_max_size設定為25。最大值為50。
你可以考慮在MySQL伺服器上增加innodb_change_buffer_max_size,增加大量的插入、更新和刪除活動,其中更改緩衝區的合併跟不上新的更改緩衝區條目,導致更改緩衝區達到其最大大小限制。
用典型的工作負載測試不同的設定,以確定最佳配置。innodb_change_buffer_max_size設定是動態的,允許您在不重啟伺服器的情況下修改該設定
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2886309/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL InnoDB緩衝池MySql
- Mysql innodb引擎(一)緩衝和索引MySql索引
- InnoDB 中的緩衝池(Buffer Pool)
- 重要,知識點:InnoDB的插入緩衝
- Nginx代理緩衝 proxy_buffering 配置Nginx
- MySQL InnoDB記憶體配置MySql記憶體
- MySQL 配置InnoDB清理排程MySql
- MySQL InnoDB頁面大小配置MySql
- MySQL中讀頁緩衝區buffer poolMySql
- 緩衝管理
- MySQL InnoDB日誌檔案配置MySql
- MySQL InnoDB Undo表空間配置MySql
- MySQL 配置InnoDB為只讀操作MySql
- stm32+djyos下串列埠緩衝區配置串列埠
- MySQL innodb_buffer_pool_size 變數MySql變數
- MySQL InnoDB臨時表空間配置MySql
- 輸出緩衝
- MySQL 配置InnoDB的併發執行緒MySql執行緒
- 無緩衝I/O 會使Rust程式變慢- Era BlogRust
- JavaScript 緩衝運動JavaScript
- Java™ 教程(緩衝流)Java
- 無緩衝阻塞 chan
- Java NIO:緩衝區Java
- stdio流緩衝區
- 雙緩衝學習
- 緩衝位元組流#
- 開關電源緩衝吸收電路:拓撲吸收、RC吸收、RCD吸收、鉗位吸收、無損吸收、LD緩衝、LR緩衝、飽和電感緩衝、濾波緩衝、振鈴_rc吸收和rcd吸收
- InnoDB鎖衝突案例演示
- 如何選擇配置 MySQL innodb_log_file_sizeMySql
- MySQL 配置InnoDB的記憶體分配器MySql記憶體
- MySQL 配置InnoDB主執行緒I/O速率MySql執行緒
- Golang併發程式設計有緩衝通道和無緩衝通道(channel)Golang程式設計
- phpstudy自帶MySQL不支援innodb解決辦法 和 更換MySQL版本PHPMySql
- Linux 命令 管道 緩衝區Linux
- Java NIO 之緩衝區Java
- Go 緩衝通道(bufchan)用法Go
- Java整數緩衝區Java
- CSAPP緩衝實驗buflabAPP