亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL存儲引擎中的MyISAM和InnoDB區(qū)別詳解

 更新時間:2015年03月18日 11:58:50   投稿:junjie  
這篇文章主要介紹了MySQL存儲引擎中的MyISAM和InnoDB區(qū)別詳解,本文總結了MyISAM與InnoDB的11點區(qū)別,需要的朋友可以參考下

在使用MySQL的過程中對MyISAM和InnoDB這兩個概念存在了些疑問,到底兩者引擎有何分別一直是存在我心中的疑問。為了解開這個謎題,搜尋了網絡,找到了如下信息:

MyISAM是MySQL的默認數據庫引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的順序訪問方法)所改良。雖然性能極佳,但卻有一個缺點:不支持事務處理(transaction)。不過,在這幾年的發(fā)展下,MySQL也導入了InnoDB(另一種數據庫引擎),以強化參考完整性與并發(fā)違規(guī)處理機制,后來就逐漸取代MyISAM。

InnoDB,是MySQL的數據庫引擎之一,為MySQL AB發(fā)布binary的標準之一。InnoDB由Innobase Oy公司所開發(fā),2006年五月時由甲骨文公司并購。與傳統(tǒng)的ISAM與MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事務(Transaction)功能,類似于PostgreSQL。目前InnoDB采用雙軌制授權,一是GPL授權,另一是專有軟件授權。

MyISAM與InnoDB的區(qū)別是什么?

1、 存儲結構

MyISAM:每個MyISAM在磁盤上存儲成三個文件。第一個文件的名字以表的名字開始,擴展名指出文件類型。.frm文件存儲表定義。數據文件的擴展名為.MYD (MYData)。索引文件的擴展名是.MYI (MYIndex)。
InnoDB:所有的表都保存在同一個數據文件中(也可能是多個文件,或者是獨立的表空間文件),InnoDB表的大小只受限于操作系統(tǒng)文件的大小,一般為2GB。

2、 存儲空間

MyISAM:可被壓縮,存儲空間較小。支持三種不同的存儲格式:靜態(tài)表(默認,但是注意數據末尾不能有空格,會被去掉)、動態(tài)表、壓縮表。
InnoDB:需要更多的內存和存儲,它會在主內存中建立其專用的緩沖池用于高速緩沖數據和索引。

3、 可移植性、備份及恢復

MyISAM:數據是以文件的形式存儲,所以在跨平臺的數據轉移中會很方便。在備份和恢復時可單獨針對某個表進行操作。
InnoDB:免費的方案可以是拷貝數據文件、備份 binlog,或者用 mysqldump,在數據量達到幾十G的時候就相對痛苦了。

4、 事務支持

MyISAM:強調的是性能,每次查詢具有原子性,其執(zhí)行數度比InnoDB類型更快,但是不提供事務支持。
InnoDB:提供事務支持事務,外部鍵等高級數據庫功能。 具有事務(commit)、回滾(rollback)和崩潰修復能力(crash recovery capabilities)的事務安全(transaction-safe (ACID compliant))型表。

5、 AUTO_INCREMENT

MyISAM:可以和其他字段一起建立聯(lián)合索引。引擎的自動增長列必須是索引,如果是組合索引,自動增長可以不是第一列,他可以根據前面幾列進行排序后遞增。
InnoDB:InnoDB中必須包含只有該字段的索引。引擎的自動增長列必須是索引,如果是組合索引也必須是組合索引的第一列。

6、 表鎖差異

MyISAM:只支持表級鎖,用戶在操作myisam表時,select,update,delete,insert語句都會給表自動加鎖,如果加鎖以后的表滿足insert并發(fā)的情況下,可以在表的尾部插入新的數據。
InnoDB:支持事務和行級鎖,是innodb的最大特色。行鎖大幅度提高了多用戶并發(fā)操作的新能。但是InnoDB的行鎖,只是在WHERE的主鍵是有效的,非主鍵的WHERE都會鎖全表的。

7、 全文索引

MyISAM:支持 FULLTEXT類型的全文索引
InnoDB:不支持FULLTEXT類型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。

8、 表主鍵

MyISAM:允許沒有任何索引和主鍵的表存在,索引都是保存行的地址。
InnoDB:如果沒有設定主鍵或者非空唯一索引,就會自動生成一個6字節(jié)的主鍵(用戶不可見),數據是主索引的一部分,附加索引保存的是主索引的值。

9、 表的具體行數

MyISAM:保存有表的總行數,如果select count(*) from table;會直接取出出該值。
InnoDB:沒有保存表的總行數,如果使用select count(*) from table;就會遍歷整個表,消耗相當大,但是在加了wehre條件后,myisam和innodb處理的方式都一樣。

10、 CURD操作

MyISAM:如果執(zhí)行大量的SELECT,MyISAM是更好的選擇。
InnoDB:如果你的數據執(zhí)行大量的INSERT或UPDATE,出于性能方面的考慮,應該使用InnoDB表。DELETE 從性能上InnoDB更優(yōu),但DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除,在innodb上如果要清空保存有大量數據的表,最好使用truncate table這個命令。

11、 外鍵

MyISAM:不支持
InnoDB:支持
通過上述的分析,基本上可以考慮使用InnoDB來替代MyISAM引擎了,原因是InnoDB自身很多良好的特點,比如事務支持、存儲 過程、視圖、行級鎖定等等,在并發(fā)很多的情況下,相信InnoDB的表現肯定要比MyISAM強很多。另外,任何一種表都不是萬能的,只用恰當的針對業(yè)務類型來選擇合適的表類型,才能最大的發(fā)揮MySQL的性能優(yōu)勢。如果不是很復雜的Web應用,非關鍵應用,還是可以繼續(xù)考慮MyISAM的,這個具體情況可以自己斟酌。

相關文章

  • Mysql數據庫的增刪改查、備份、還原等基本操作大全

    Mysql數據庫的增刪改查、備份、還原等基本操作大全

    這篇文章主要介紹了Mysql數據庫的增刪改查、備份、還原等基本操作,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • mysql數據遷移之data目錄復制方法

    mysql數據遷移之data目錄復制方法

    這篇文章主要給大家介紹了關于mysql數據遷移之data目錄復制方法的相關資料,MySQL的data文件是存儲數據庫的核心文件,它包含了所有的表、索引、視圖和其它相關的數據,通過復制這些文件,我們可以將一個MySQL數據庫遷移到另一個地方,需要的朋友可以參考下
    2023-08-08
  • mysql 8.0.18 安裝配置優(yōu)化教程

    mysql 8.0.18 安裝配置優(yōu)化教程

    這篇文章主要為大家詳細介紹了mysql 8.0.18 安裝配置優(yōu)化教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • mysql IS NULL使用索引案例講解

    mysql IS NULL使用索引案例講解

    這篇文章主要介紹了mysql IS NULL使用索引案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • MySQL中按照多字段排序及問題解決

    MySQL中按照多字段排序及問題解決

    這篇文章主要介紹了MySQL中按照多字段排序及問題解決的方法,非常的實用,有需要的小伙伴可以參考下。
    2015-03-03
  • mysql巡檢腳本(必看篇)

    mysql巡檢腳本(必看篇)

    下面小編就為大家?guī)硪黄猰ysql巡檢腳本(必看篇)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • linux/mac安裝mysql忘記密碼的解決辦法

    linux/mac安裝mysql忘記密碼的解決辦法

    這篇文章主要給大家介紹了關于linux/mac安裝mysql忘記密碼的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10
  • 基于Php mysql存儲過程的詳解

    基于Php mysql存儲過程的詳解

    本篇文章是對Php中的mysql存儲過程進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql中Load Data記錄換行問題的解決方法

    mysql中Load Data記錄換行問題的解決方法

    有關mysql中Load Data記錄換行的問題的解決方法, 需要的朋友可以參考下
    2013-02-02
  • linux CentOS6.5 yum安裝mysql5.6

    linux CentOS6.5 yum安裝mysql5.6

    這篇文章主要為大家詳細介紹了linux CentOS6.5 yum安裝mysql5.6的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論