MySQL 数据库中MyISAM 和 InnoDB 的区别
admin
2023-06-01 19:22:00
0

首先要明白,在MySQL数据库忠中的存储引擎是基于表的,而不是基于数据库的。


讲述两者区别:

    InnoDB 存储引擎,主要面向 OLTP(Online Transaction Processing,在线事务处理)方面的应用,是第一个完整支持 ACID 事务的存储引擎(BDB 第一个支持事务的存储引擎,已经停止开发)。

    特点:

行锁设计、支持外键;

支持类似于 Oracle 风格的一致性非锁定读(默认情况下读取操作不会产生锁);

    InnoDB 将数据放在一个逻辑的表空间中,由 InnoDB 自身进行管理。从MySQL4.1 版本开始,可以将每个 InnoDB 存储引擎的表单独存放到一个独立的ibd 文件中;

    InnoDB 通过使用 MVCC(多版本并发控制:读不会阻塞写,写也不会阻塞读)来获得高并发性,并且实现了 SQL 标准的 4 种隔离级别(默认为 REPEATABLE 级别);

    InnoDB 还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能;

    InnoDB 采用了聚集(clustered)的方式来存储表中的数据,每张标的存储都按主键的顺序存放(如果没有显式的在建表时指定主键,InnoDB 会为每一行生成一个 6 字节的 ROWID,并以此作为主键);

    InnoDB 表会有三个隐藏字段:除了上面提到了 6 字节的 DB_ROW_ID 外,还有6 字节的B_TX_ID(事务 ID)和 7 字节的 DB_ROLL_PTR(指向对应回滚段的地址)。这个可以通过 innodb monitor 看到;

    MyISAM 存储引擎是 MySQL 官方提供的存储引擎,主要面向OLAP(Online Analytical Processing,在线分析处理)方面的应用。

特点:

    不支持事务,支持表所和全文索引。操作速度快;

    MyISAM 存储引擎表由 MYD 和 MYI 组成,MYD 用来存放数据文件,MYI 用来存放索引文件。    

    MySQL 数据库只缓存其索引文件,数据文件的缓存交给操作系统本身来完成;

    MySQL5.0 版本开始,MyISAM 默认支持 256T 的单表数据;


最后总结一下:

    1、InnoDB支持事物,而MyISAM不支持事物;

    2、InnoDB支持行级锁,而MyISAM支持表级锁;

    3、InnoDB支持MVCC, 而MyISAM不支持;

    4、InnoDB支持外键,而MyISAM不支持;

    5、InnoDB不支持全文索引,而MyISAM支持。


相关内容

热门资讯

前台老员工侵占酒店70余万,还... 作为一名在酒店工作十余年的老员工,酒店前台工作人员韦某共侵占了酒店的房款74万余元,在被酒店经营者发...
田间化粪池盖板突然断裂,老人坠... 极目新闻记者 李贤诚一口近3米深的化粪池,竟成了家中67岁老人的殒命之地。5月22日,山东泰安的武先...
特朗普打了一通电话,美国突然宣... 据美国《华尔街日报》报道,美国总统特朗普5月22日宣布,计划向波兰增派5000名美军。报道称,在此之...
民进党称对暂缓军售不知情?国民... 据凤凰卫视报道,美国称暂缓对台军售,对此,中国外交部发言人5月22日在记者会上重申,中方坚决反对美国...
高考前你必须知道的几个教育关键... 师范类高校突然“变脸”了。最近,一大批师范院校,正在用最快的速度,甩出新增专业清单,密集开设人工智能...
视频丨硬核科创+诗意“村游” ... 今年是长三角一体化发展上升为国家战略的第八年,三省一市产业链协作愈加紧密。昨天,第三批长三角创新联合...
柳州遭遇331年来最强震:自建... 极目新闻记者 刘毅 丁伟2026年5月18日,广西柳州遭遇331年来“最强地震”。一天之内,两次5....
超越美国,中国去年成为德国最大... 【文/观察者网 柳白】随着中国企业加速“出海”,中国去年超过美国,成为德国最大外资项目来源国。据香港...
政府行政允诺成“空头支票”,最... 作者 | 第一财经 安然然当政府作出的行政允诺变成“空头支票”,企业如何寻求赔偿?在一个被公开披露多...
2026如何提升专业能力让你成... 2026年,优秀产品经理不再只是“写需求、画原型”的岗位,而是要能理解业务、洞察用户、用数据驱动决策...