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

首頁 > 數據庫 > MySQL > 正文

高性能Mysql-存儲引擎(InnoDB)

2024-07-24 13:00:01
字體:
來源:轉載
供稿:網友

MySQL將每個數據庫(也可以稱為schema)保存為數據目錄下的一個子目錄,創建表時,MySQL會在數據庫子目錄下創建一個和表同名的 .frm文件保存表的定義。(也因此MySQL數據庫和表的定義對大小寫的敏感性與具體平臺密切相關)

一、InnoDB InnoDB是MySQL的默認事務型引擎,也是最重要,使用最廣泛的存儲引擎。他是用來處理大量的短期事務,短期事務大部分情況是正常提交的,很少會被回滾。 InnoDB的性能和自動崩潰恢復特性,使得它在非事務型的需求中也很流行。

InnoDB的歷史: 2008年發布InnoDB plugin,適用于MySQL 5.1 版本,但當時MySQL默認還是使用舊的InnoDB引擎。在Oracle收購Sun后發布的MySQL5.5中才徹底使用InnoDB plugin替代了舊版本的InnoDB

這個新版本支持一些新特性,例如利用排序創建索引、刪除或者增加索引時不需要復制全表數據、新的支持壓縮的存儲格式,新的大型列值如BLOB的存儲方式,以及文件格式管理等。

InnoDB的數據存儲在表空間中,表空間是由InnoDB管理的一個黑盒子,由一系列的數據文件組成,可以將每個表的數據和索引存放在單獨的文件中。

采用MVCC來支持高并發,并且實現4個標準的隔離級別,默認級別是REPEATABLE READ(可重復讀),并且通過間隙鎖策略防止幻讀的出現。

InnoDB表示基于聚族索引建立的,聚族索引對主鍵查詢有很高的性能,若表上的索引較多的話,主鍵應當盡可能的小。

二、MyISAM 5.1之前版本采用的存儲引擎,提供了包括全文索引,壓縮,空間函數等,但MyISAM不支持事務和行級鎖,而且有個缺陷就是崩潰后無法安全恢復。MyISAM會將表存儲在兩個文件中:數據文件和索引文件,分別以.MYD和.MYI為擴展名

三、MySQL內建的其他存儲引擎 Archive引擎 只支持Insert和select操作,select查詢需要執行全表掃描,適合日志和數據采集類應用。支持行級鎖和高并發的插入。

Blackhole引擎 CSV引擎 Federated引擎 Memory引擎 Merge 引擎 NDB集群引擎

四、如何選擇合適的引擎 大部分情況下,InnoDB都是正確的選擇 除非需要用到某些InnoDB不具備的特性,并且沒有其他辦法可以替代,否則都應該優先選擇InnoDB引擎。例如,要用到全文索引,建議優先考慮InnoDB加上Sphinx的組合。

除非萬不得已,否則建議不要混合使用多種存儲引擎,否則可能帶來一系列復雜的問題,以及一些潛在的bug和邊界問題。

日志型應用

假設需要實時地記錄一臺中心電話交換機的每一通電話的日志到MySQL中,或者通過Apache的mod_log_sql模塊將網站的所有訪問信息直接記錄到表中。

這一類應用的插入速度有很高的要求,數據庫不能成為瓶頸。MyISAM或者Archive存儲引擎對這類應用比較合適,因為他們開銷低,插入速度非常快。

做分析報表時,利用MySQL內置的復制方案將數據復制一份到備庫,然后在備庫,然后在備庫上執行比較消耗時間和CPU的查詢。

不要輕易相信“MyISAM比InnoDB快”之類的經驗之談,這個結論往往不是絕對的。在很多我們已知的場景中,InnoDB的速度都可以讓MyISAM望塵莫及。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 准格尔旗| 晋州市| 南部县| 新巴尔虎右旗| 秦皇岛市| 尼木县| 沿河| 邓州市| 盐池县| 河津市| 乌拉特前旗| 临泉县| 宁阳县| 贵溪市| 建始县| 建宁县| 丽水市| 灵石县| 黄大仙区| 浪卡子县| 汉阴县| 登封市| 孟连| 沈丘县| 怀仁县| 汉源县| 甘南县| 台北县| 华亭县| 凌源市| 金坛市| 淮南市| 灵丘县| 鹿泉市| 广汉市| 原阳县| 马公市| 武夷山市| 奇台县| 军事| 土默特右旗|