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數據庫.

        8).支持外鍵約束,不支持全文索引,5.5之前支持,后面不再支持.

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM