Mysql Innodb引擎優化(參數篇)

  InnoDB給MySQL提供瞭具有提交,回滾和崩潰恢復能力的事務安全(ACID兼容)存儲引擎。InnoDB鎖定在行級並且也在SELECT語句 提供一個Oracle風格一致的非鎖定讀。這些特色增加瞭多用戶部署和性能。沒有在InnoDB中擴大鎖定的需要,因為在InnoDB中行級鎖定適合非常 小的空間。InnoDB也支持FOREIGN KEY強制。在SQL查詢中,你可以自由地將InnoDB類型的表與其它MySQL的表的類型混合起來,甚至在同一個查詢中也可以混合。

  Innodb 的創始人:Heikki Tuuri

  Heikki Tuuri在Innodb的Bug社區裡也是很活躍的,如果遇到Bug也可以直接提到社區,得到作者的解答。

  為什麼要學習Innodb的調優:

  目前來說:InnoDB是為Mysql處理巨大數據量時的最大性能設計。它的CPU效率可能是任何其它基於磁盤的關系數據庫引擎所不能匹敵的。在數據量大的網站或是應用中Innodb是倍受青睞的。

  另一方面,在數據庫的復制操作中Innodb也是能保證master和slave數據一致有一定的作用。

  參數調優內容:

  1. 內存利用方面

  2. 日志控制方面

  3.文件IO分配,空間占用方面

  4. 其它相關參數

  1.內存利用方面:

  首先介紹一個Innodb最重要的參數:

  innodb_buffer_pool_size

  這個參數和MyISAM的key_buffer_size有相似之處,但也是有差別的。這個參數主要緩存innodb表的索引,數據,插入數據時的緩沖。為Innodb加速優化首要參數。

  該參數分配內存的原則:這個參數默認分配隻有8M,可以說是非常小的一個值。如果是一個專用DB服務器,那麼他可以占到內存的70%-80%。這個參 數不能動態更改,所以分配需多考慮。分配過大,會使Swap占用過多,致使Mysql的查詢特慢。如果你的數據比較小,那麼可分配是你的數據大小+10% 左右做為這個參數的值。例如:數據大小為50M,那麼給這個值分配innodb_buffer_pool_size=64M

  設置方法:

  innodb_buffer_pool_size=4G

  這個參數分配值的使用情況可以根據show innodb statusG;中的

  ———————-

  BUFFER POOL AND MEMORY

  ———————-

  Total memory allocated 4668764894;

  去確認使用情況。

  第二個:

  innodb_additional_mem_pool:

  作用:用來存放Innodb的內部目錄

  這個值不用分配太大,系統可以自動調。不用設置太高。通常比較大數據設置16M夠用瞭,如果表比較多,可以適當的增大。如果這個值自動增加,會在error log有中顯示的。

  分配原則:

  用show innodb statusG;去查看運行中的DB是什麼狀態(參考BUFFER POOL AND MEMORY段中),然後可以調整到適當的值。

  ———————-

  BUFFER POOL AND MEMORY

  ———————-

  Total memory allocated 4668764894; in additional pool allocated 16777216

  參考:in additional pool allocated 16777216

  根據你的參數情況,可以適當的調整。

  設置方法:

  innodb_additional_mem_pool=16M

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *