文摘:mysql存储引擎innodb和myisam区别

mysql存储引擎innodb和myisam区别

MySQL的InnoDB和MyISAM存储引擎之间存在显著的区别,主要体现在事务支持、外键约束、锁机制、存储方式、全文索引支持、存储类型、存储空间、表主键、表的具体行数等方面。12

  1. 事务支持:InnoDB支持事务处理,能够使用ACID(原子性、一致性、隔离性、持久性)来保证数据的完整性和一致性。而MyISAM不支持事务处理,因此不能保证数据的一致性。

  2. 外键约束:InnoDB支持外键约束,可以通过外键约束实现关联查询和级联删除等功能。MyISAM则不支持外键约束。

  3. 锁机制:InnoDB采用行级锁定,只锁定需要修改的行,提高并发性能。而MyISAM采用表级锁定,会锁定整个表,如果多个用户同时访问一个表,就会出现互相等待的情况,降低并发性能。

  4. 存储方式:MyISAM在磁盘上存储成三个文件,包括表结构定义、数据文件和索引文件。InnoDB的所有表都保存在同一个数据文件中(或多个文件,或独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。

  5. 全文索引支持:MyISAM只支持全文索引。InnoDB在5.5版本以前不支持全文索引,但从5.5版本开始支持全文索引。

  6. 存储空间:MyISAM支持三种不同的存储格式,包括静态表、动态表和压缩表,可以极大减少磁盘的空间占用。InnoDB需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。

  7. 表主键:MyISAM允许没有任何索引和主键的表存在,索引都是保存行的地址。InnoDB如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。

  8. 表的具体行数:MyISAM保存有表的总行数,如果执行select count() from table;会直接取出该值。InnoDB不存储总行数。

这些区别使得InnoDB和MyISAM各自适用于不同的应用场景,InnoDB因其支持事务处理和外键约束等功能,被广泛应用于需要支持事务处理的应用程序中,而MyISAM则因其简单和较小的存储需求,在某些轻量级应用中仍有一定的使用场景。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值