国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL數據庫三種常用存儲引擎特性對比

2024-07-24 13:08:41
字體:
來源:轉載
供稿:網友
MySQL中的數據用各種不同的技術存儲在文件(或內存)中,這些技術中的每一種技術都使用不同的存儲機制,索引技巧,鎖定水平并且最終提供廣泛的不同功能和能力。在MySQL中將這些不同的技術及配套的相關功能稱為存儲引擎。
 

MySQL 的存儲引擎可能是所有關系型數據庫產品中最具有特色的了,不僅可以同時使用多種存儲引擎,而且每種存儲引擎和MySQL之間使用插件方式這種非常松的耦合關系。

由于各存儲引擎功能特性差異較大,這篇文章主要是介紹如何來選擇合適的存儲引擎來應對不同的業務場景。

MyISAM

特性
不支持事務:MyISAM存儲引擎不支持事務,所以對事務有要求的業務場景不能使用
表級鎖定:其鎖定機制是表級索引,這雖然可以讓鎖定的實現成本很小但是也同時大大降低了其并發性能
讀寫互相阻塞:不僅會在寫入的時候阻塞讀取,MyISAM還會在讀取的時候阻塞寫入,但讀本身并不會阻塞另外的讀
只會緩存索引:MyISAM可以通過key_buffer緩存以大大提高訪問性能減少磁盤IO,但是這個緩存區只會緩存索引,而不會緩存數據

適用場景
不需要事務支持(不支持)
并發相對較低(鎖定機制問題)
數據修改相對較少(阻塞問題)
以讀為主
數據一致性要求不是非常高

最佳實踐
盡量索引(緩存機制)
調整讀寫優先級,根據實際需求確保重要操作更優先
啟用延遲插入改善大批量寫入性能
盡量順序操作讓insert數據都寫入到尾部,減少阻塞
分解大的操作,降低單個操作的阻塞時間
降低并發數,某些高并發場景通過應用來進行排隊機制
對于相對靜態的數據,充分利用Query Cache可以極大的提高訪問效率
MyISAM的Count只有在全表掃描的時候特別高效,帶有其他條件的count都需要進行實際的數據訪問

InnoDB

特性
具有較好的事務支持:支持4個事務隔離級別,支持多版本讀
行級鎖定:通過索引實現,全表掃描仍然會是表鎖,注意間隙鎖的影響
讀寫阻塞與事務隔離級別相關
具有非常高效的緩存特性:能緩存索引,也能緩存數據
整個表和主鍵以Cluster方式存儲,組成一顆平衡樹
所有Secondary Index都會保存主鍵信息

適用場景
需要事務支持(具有較好的事務特性)
行級鎖定對高并發有很好的適應能力,但需要確保查詢是通過索引完成
數據更新較為頻繁的場景
數據一致性要求較高
硬件設備內存較大,可以利用InnoDB較好的緩存能力來提高內存利用率,盡可能減少磁盤 IO

最佳實踐
主鍵盡可能小,避免給Secondary index帶來過大的空間負擔
避免全表掃描,因為會使用表鎖
盡可能緩存所有的索引和數據,提高響應速度
在大批量小插入的時候,盡量自己控制事務而不要使用autocommit自動提交
合理設置innodb_flush_log_at_trx_commit參數值,不要過度追求安全性
避免主鍵更新,因為這會帶來大量的數據移動

NDBCluster

特性
分布式:分布式存儲引擎,可以由多個NDBCluster存儲引擎組成集群分別存放整體數據的一部分
支持事務:和Innodb一樣,支持事務
可與mysqld不在一臺主機:可以和mysqld分開存在于獨立的主機上,然后通過網絡和mysqld通信交互
內存需求量巨大:新版本索引以及被索引的數據必須存放在內存中,老版本所有數據和索引必須存在與內存中

適用場景
具有非常高的并發需求
對單個請求的響應并不是非常的critical
查詢簡單,過濾條件較為固定,每次請求數據量較少,又不希望自己進行水平Sharding

最佳實踐
盡可能讓查詢簡單,避免數據的跨節點傳輸
盡可能滿足SQL節點的計算性能,大一點的集群SQL節點會明顯多余Data節點
在各節點之間盡可能使用萬兆網絡環境互聯,以減少數據在網絡層傳輸過程中的延時

注:以上三個存儲引擎是目前相對主流的存儲引擎,還有其他類似如:Memory,Merge,CSV,Archive等存儲引擎的使用場景都相對較少,這里就不一一分析了。



注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆德县| 博客| 甘谷县| 肇东市| 仙游县| 新闻| 鹤庆县| 平和县| 清水河县| 霍林郭勒市| 台中县| 延吉市| 余干县| 普宁市| 儋州市| 通海县| 申扎县| 峨眉山市| 安顺市| 衡水市| 申扎县| 庆安县| 芜湖县| 南华县| 祁东县| 孟村| 集贤县| 环江| 泰来县| 顺昌县| 徐汇区| 金门县| 沈阳市| 永济市| 油尖旺区| 洛南县| 达孜县| 缙云县| 自治县| 冕宁县| 新巴尔虎左旗|