一、myisam 引擎
1.1 myisam引擎的特點
1、不支援事務
2、表級鎖定,更新時鎖定整個表
3、讀寫互相阻塞
4、只會快取索引,通過key_buffer_size 快取索引
5、讀取速度快,占用資源相對少
6、不支援外來鍵約束,但支援全文索引
7、myisam 引擎是mysql 5.5 前預設的儲存引擎
1.2 myisam適合的生產業務場景
1、不需要事務支援的業務;
2、一般為讀資料較多的應用;讀寫都頻繁場景不適合,讀多或寫多都適合
3、併發訪問相對較低的業務(純讀純寫高併發也可以)(鎖定機制問題)。
4、資料修改相對較少的業務(阻塞問題)
5、以讀為主的業務,
6、對資料一致性要求不高的業務
7、硬體資源比較差的機器可以使用myisam,所謂
8、中小型**的部分業務會用。
1.3 myisam引擎調優的方式
1、設定合適的索引(快取機制)
2、調整讀寫優先順序,根據實際需求確保重要操作更優先執行
3、啟用延時插入,改善大批寫入效能(降低寫入頻率,竟可能多條資料一次性寫入)
4、盡量順序操作讓insert 資料都寫入到尾部,減少阻塞
5、分解大的時間長的操作,降低單個操作的阻塞時間
6、降低併發數(減少mysql訪問),某些高併發場景進行排隊佇列機制
7、對於相對靜態的資料庫資料,充分利用query cache 或memcached 快取服務可以極大提高訪問效率
8、myisam 的count 只有在全表掃瞄時特別高效,帶有其他條件的count 都需要進行實際的資料訪問
9、可以把主從同步的主庫使用innodb,從庫使用myisam 引擎
二、innodb
2.1 innodb的特點:
1、支援事務
2、行級鎖定
3、讀寫阻塞與事務隔離級別相關
4、具有非常高效的快取特性
5、整個表和主鍵以cluster 方式儲存,組成一顆平衡樹
6、所有secondary index 都會儲存主鍵資訊
7、支援分割槽,表空間,類似oracle 資料庫
8、支援外來鍵約束,支援全文索引
9、和myisam 比,innodb 對硬體資源要求較高
2.2 生產業務場景
1、需要事務支援的業務
2、行級鎖對高併發有很好的適應能力,但需要確保查詢是通過索引完成
3、資料讀寫及更新都較為頻繁的場景
4、資料一致性要求較高的業務
5、硬體裝置記憶體較大
6、相比myisam引擎,innodb更消耗資源,沒有myisam 響應速度快
2.3 innodb 調優精要
1、主鍵盡可能小,避免給secondary index 帶來過大的空間負擔
2、避免全表掃瞄,因為會使用表鎖
3、盡可能快取所有索引和資料,提高響應速度,減少磁碟io 消耗
4、在大批量小插入的時候,盡量自己控制事物而不要使用autocommit 自動提交,有開關可以控制提交方式
5、合理設定innodb_flush_log_at_trx_commit 引數值,不要過度追求安全性
如果設定為0,log buffer 每秒就會被刷寫日誌檔案到磁碟,提交事物的時候不做任何操作
6、避免主鍵更新,因為這會帶來大量的資料移動
常用的mysql儲存引擎及其特點
文章參考 mysql快速入門 潘凱華,李慧,劉欣等編著.背景 清華大學出版社,2012.1 儲存引擎說白了就是如何儲存資料 如何為儲存的資料建立索引和如何更新 查詢資料等技術的實現方法。因為在關聯式資料庫中資料的儲存是以表的形式儲存的,所以儲存引擎也可以成為表型別 及儲存和操作此表的型別 oracl...
MYSQL各儲存引擎engine的特點
個人學習過程中總結,如有不同見解望交流。儲存引擎是什麼?mysql的儲存引擎是為了解決不同業務的需求所提供的多種資料儲存方式的選擇。例如乙個業務的資料要求支援事務,這時候就要選擇可以支援事務的儲存引擎。mysql中設定儲存引擎 例 create table table name column typ...
MySQL的三大引擎的特點
主要包括mylsam,innodb,memory 每個myisam在磁碟上儲存成三個檔案。1 frm檔案 儲存表的定義資料 2 myd檔案 存放表具體記錄的資料 3 myi檔案 儲存索引 mylsam特點 有乙個重要的特點那就是不支援事務,但是這也意味著他的儲存速度更快,如果你的讀寫操作允許有錯誤資...