mysql 引擎介紹

一、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、避免主鍵更新,因爲這會帶來大量的數據移動


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章