InnoDB引擎的特色及優化方法

1.什麼是InnoDB引擎?
      InnoDB引擎是MySQL數據庫的另外一個重要的存儲引擎,正成爲目前MySQL AB所發行的新版的標準,被包含在全部二進制安裝包裏,和其餘存儲引擎相比,InnoDB引擎的優勢是支持兼容ACID的事務(相似於PostgreSQL),以及參數完整性(有外鍵)等.如今Innobase實行雙認證受權.MySQL5.5.5之後默認的存儲引擎都是InnoDB引擎.

2.InnoDB的引擎特色.

       1).支持事務(事務是指邏輯上的一組操做,組成這組操做的各個單元,要麼全成功,要麼全失敗)數據庫

        2).行級鎖定(更新時通常是鎖定當前行):經過索引實現,全表掃描仍然會是鎖定整個表,注意間隙鎖的影響.緩存

        3).讀寫阻塞與事務隔離級別相關.安全

        4).具備很是高效的緩存特性,能緩存索引,也能緩存數據.微信

        5).整個表和主鍵以Cluster方式存儲,組成一顆平衡樹.併發

        6).全部Secondary Index 都會保存主鍵信息.高併發

        7).支持分區,表空間.相似於Oracle數據庫.spa

        8).支持外鍵約束,不支持全文索引,5.5以前支持,後面再也不支持.日誌

        9).和MyISAM相比,InnoDB對於硬件資源要求比較高.blog

3.InnoDB引擎的適用的生產場景

       1).須要支持事務的業務(例如轉帳,付款)索引

       2).行級鎖定對於高併發有很好的適應能力,可是須要保證查詢是經過索引完成.

       3).數據讀寫及更新都比較頻繁的場景,如:BBS,SNS,微博,微信等.

       4).數據一致性要求很高的業務.如:轉帳,充值等.

       5).硬件設備內存較大,能夠很好利用InnoDB較好的緩存能力來提升內存利用率,儘可能減小磁盤IO的開銷.

4.InnoDB引擎調優精要:

       1).主鍵儘量小,避免給Secondary index帶來過大的空間負擔.

       2).避免全表掃描,由於會使用表鎖.

       3).儘量緩存全部的索引和數據,提升響應速度,減小磁盤IO消耗.

      4).在大批量小插入的時候,儘可能本身控制事務而不要使用autocommit自動提交,有開關參數能夠控制提交.

        5).合理設置Innodb_flush_log_at_trx_commit 參數值,不要過分追求安全性.

若是Innodb_flush_log_at_trx_commit的值爲0,log buffer每秒就會被刷寫日誌文件進入磁盤,提交事務的時候不作任何操做.

         6).避免主鍵更新,由於這會帶來大量的數據移動.

 

wps1147.tmp

wps1157.tmp

相關文章
相關標籤/搜索