重慶分公司,新征程啟航
為企業(yè)提供網站建設、域名注冊、服務器等服務
為企業(yè)提供網站建設、域名注冊、服務器等服務
Mysql數據庫3種存儲(MyISAM、MEMORY、InnoDB)引擎區(qū)別:
為廣陽等地區(qū)用戶提供了全套網頁設計制作服務,及廣陽網站建設行業(yè)解決方案。主營業(yè)務為網站制作、網站建設、廣陽網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
1、Myisam是Mysql的默認存儲引擎,當create創(chuàng)建新表時,未指定新表的存儲引擎時,默認使用Myisam。MEMORY、InnoDB不是默認存儲引擎。
2、InnoDB存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比Myisam的存儲引擎,InnoDB寫的處理效率差一些并且會占用更多的磁盤空間以保留數據和索引。
Mysql數據庫3種存儲(MyISAM、MEMORY、InnoDB)區(qū)別對比:
1、MyISAM
它不支持事務,也不支持外鍵,尤其是訪問速度快,對事務完整性沒有要求或者以SELECT、INSERT為主的應用基本都可以使用這個引擎來創(chuàng)建表。
數據文件和索引文件可以放置在不同的目錄,平均分配IO,獲取更快的速度。要指定數據文件和索引文件的路徑,需要在創(chuàng)建表的時候通過DATA DIRECTORY和INDEX DIRECTORY語句指定,文件路徑需要使用絕對路徑。
2、MEMORY
memory使用存在內存中的內容來創(chuàng)建表。每個MEMORY表實際對應一個磁盤文件,格式是.frm。MEMORY類型的表訪問非常快,因為它到數據是放在內存中的,并且默認使用HASH索引,但是一旦服務器關閉,表中的數據就會丟失,但表還會繼續(xù)存在。
默認情況下,memory數據表使用散列索引,利用這種索引進行“相等比較”非常快,但是對“范圍比較”的速度就慢多了。因此,散列索引值適合使用在"="和"="的操作符中,不適合使用在""或""操作符中,也同樣不適合用在order by字句里。如果確實要使用""或""或betwen操作符,可以使用btree索引來加快速度。
存儲在MEMORY數據表里的數據行使用的是長度不變的格式,因此加快處理速度,這意味著不能使用BLOB和TEXT這樣的長度可變的數據類型。VARCHAR是一種長度可變的類型,但因為它在MySQL內部當作長度固定不變的CHAR類型,所以可以使用。
3、InnoDB
InnoDB存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比MyISAM的存儲引擎,InnoDB寫的處理效率差一些并且會占用更多的磁盤空間以保留數據和索引。
(1)自動增長列:
InnoDB表的自動增長列可以手工插入,但是插入的如果是空或0,則實際插入到則是自動增長后到值。可以通過"ALTER TABLE...AUTO_INCREMENT=n;"語句強制設置自動增長值的起始值,默認為1,但是該強制到默認值是保存在內存中,數據庫重啟后該值將會丟失。
可以使用LAST_INSERT_ID()查詢當前線程最后插入記錄使用的值。如果一次插入多條記錄,那么返回的是第一條記錄使用的自動增長值。對于InnoDB表,自動增長列必須是索引。如果是組合索引,也必須是組合索引的第一列,但是對于MyISAM表,自動增長列可以是組合索引的其他列,這樣插入記錄后,自動增長列是按照組合索引到前面幾列排序后遞增的。
(2)外鍵約束:
MySQL支持外鍵的存儲引擎只有InnoDB,在創(chuàng)建外鍵的時候,父表必須有對應的索引,子表在創(chuàng)建外鍵的時候也會自動創(chuàng)建對應的索引。
一般情況下,mysql會默認提供多種存儲引擎,你可以通過下面的查看:\x0d\x0a\x0d\x0a看你的mysql現在已提供什么存儲引擎:\x0d\x0amysql show engines;\x0d\x0a\x0d\x0a看你的mysql當前默認的存儲引擎:\x0d\x0amysql show variables like '%storage_engine%';\x0d\x0a\x0d\x0a你要看某個表用了什么引擎(在顯示結果里參數engine后面的就表示該表當前用的存儲引擎):\x0d\x0amysql show create table 表名;
查看當前表的默認存儲引擎,可以使用如下圖所示的命令。查詢之后,我們可以查看筆者這里這個表默認的存儲引擎是:InnoDB.
如果我們想知道當前MySQL提供什么存儲引擎,可以使用如下圖所示的命令。通過查詢我們知道,筆者所安裝的MySQL提供了9種不同的存儲引擎。
如果我們想要知道當前數據庫默認的是什么存儲引擎,可以使用如下圖所示的命令。通過查詢我們知道,筆者所安裝的MySQL默認的存儲引擎是InnoDB。
給一個新建的表指定特定的存儲引擎,比如我們要新建一個“t2”表,我們希望這個表的存儲引擎是MyISAM,具體操作如下圖所示。
修改一個已經存在表的存儲引擎,假設這里我們想要修改“t1”表的存儲引擎。我們就可以按下圖所示的命令來操作。執(zhí)行之后,我們的t1表的存儲引擎,就從默認的InnoDB變?yōu)榱薈SV.