MySQL是我們經(jīng)常使用的數(shù)據(jù)庫處理系統(tǒng)(DBMS),不知小伙伴們有沒有注意過其中的“存儲引擎”(storage_engine)呢?有時候面試題中也會問道MySQL幾種常用的存儲引擎的區(qū)別。這次就簡短侃一下存儲引擎那些事兒。 先去查一下“引擎”概念。 引擎(Engine)是電子平臺上開發(fā)程序或系統(tǒng)的核心組件。利用引擎,開發(fā)者可迅速建立、鋪設程序所需的功能,或利用其輔助程序的運轉(zhuǎn)。一般而言,引擎是一個程序或一套系統(tǒng)的支持部分。常見的程序引擎有游戲引擎,搜索引擎,殺毒引擎等。 一.InnoDB存儲引擎 InnoDB給MySQL的表提供了事務處理、回滾、崩潰修復能力和多版本并發(fā)控制的事務安全。在MySQL從3.23.34a開始包含InnnoDB。它是MySQL上第一個提供外鍵約束的表引擎。而且InnoDB對事務處理的能力,也是其他存儲引擎不能比擬的。靠后版本的MySQL的默認存儲引擎就是InnoDB。 InnoDB存儲引擎總支持AUTO_INCREMENT。自動增長列的值不能為空,并且值必須唯一。MySQL中規(guī)定自增列必須為主鍵。在插入值的時候,如果自動增長列不輸入值,則插入的值為自動增長后的值;如果輸入的值為0或空(NULL),則插入的值也是自動增長后的值;如果插入某個確定的值,且該值在前面沒有出現(xiàn)過,就可以直接插入。 二.MyISAM存儲引擎 MyISAM是MySQL中常見的存儲引擎,曾經(jīng)是MySQL的默認存儲引擎。MyISAM是基于ISAM引擎發(fā)展起來的,增加了許多有用的擴展。 MyISAM的表存儲成3個文件。文件的名字與表名相同。拓展名為frm、MYD、MYI。其實,frm文件存儲表的結構;MYD文件存儲數(shù)據(jù),是MYData的縮寫;MYI文件存儲索引,是MYIndex的縮寫。 三.MEMORY存儲引擎 MEMORY是MySQL中一類特殊的存儲引擎。它使用存儲在內(nèi)存中的內(nèi)容來創(chuàng)建表,而且數(shù)據(jù)全部放在內(nèi)存中。這些特性與前面的兩個很不同。 每個基于MEMORY存儲引擎的表實際對應一個磁盤文件。該文件的文件名與表名相同,類型為frm類型。該文件中只存儲表的結構。而其數(shù)據(jù)文件,都是存儲在內(nèi)存中,這樣有利于數(shù)據(jù)的快速處理,提高整個表的效率。值得注意的是,服務器需要有足夠的內(nèi)存來維持MEMORY存儲引擎的表的使用。如果不需要了,可以釋放內(nèi)存,甚至刪除不需要的表。 MEMORY默認使用哈希索引。速度比使用B型樹索引快。當然如果你想用B型樹索引,可以在創(chuàng)建索引時指定。 注意,MEMORY用到的很少,因為它是把數(shù)據(jù)存到內(nèi)存中,如果內(nèi)存出現(xiàn)異常就會影響數(shù)據(jù)。如果重啟或者關機,所有數(shù)據(jù)都會消失。因此,基于MEMORY的表的生命周期很短,一般是一次性的。 |
免責聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業(yè)用途,如果損害了您的權利,請聯(lián)系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長轉(zhuǎn)型升級,為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營銷服務,與站長一起進步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨!
掃一掃,關注站長網(wǎng)微信