程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫三種經常使用存儲引擎特征比較

MySQL數據庫三種經常使用存儲引擎特征比較

編輯:MySQL綜合教程

MySQL數據庫三種經常使用存儲引擎特征比較。本站提示廣大學習愛好者:(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等存儲引擎的應用場景都絕對較少,這裡就紛歧一剖析了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved