INNODB和MYISAM的区别

                                        innodb                           myisam
事务支持事务不支持事务
索引 聚集索引,使用 B+ 树作为索引结构,数据文件和索引绑在一起,必须要有主键。主键索引一次查询;辅助索引两次查询,先查询主键,再查询数据 。非聚集索引,使用 B+ 树作为索引结构,索引和数据文件是分离的。主键索引和辅助索引是独立的。
支持行锁、表锁。行锁是实现在索引上的,如果没有索引,就没法使用行锁,将退化为表锁。支持表锁。

主键

必须有主键,没有指定主键会默认生成一个隐藏列作为主键。可以没有主键。
外键

支持外键

对一个包含外键的InnoDB表转为MyISAM会失败

在大数据高并发场景下,建议都不使用外键,通过应用程序保证完整性。

不支持外键。
并发量并发量较大。并发量较小。

数据库文件

frm是表定义文件,ibd是数据文件。支持两种存储方式:

  • 共享表空间存储:所有表的数据文件和索引都保存在一个表空间里,一个表空间可以有多个文件,通过 innodb_data_file_path和innodb_data_home_dir 参数设置共享表空间的位置和名字,一般共享表空间的名字叫 ibdatal-n。
  • 多表空间存储:每个表都有一个表空间文件用于存储每个表的数据和索引,文件名以表名开关,以.ibd为扩展名。

frm是表定义文件,myd是数据文件,myi是索引文件。支持三种存储格式:静态表(默认,注意数据末尾不能有空格,会被去掉。)、动态表、压缩表。

count(*)

select count(*) from student

会扫描全表。

因为事务特性,在同一时刻表中的行数对不同的事务是不一样的,所以没有保存表的行数。

select count(*) from student

会直接取出该值。

保存了表的行数,但有where条件后,二者引擎的处理逻辑类似,都是扫描全表。

全文索引在5.7及以后的版本中增加了全文索引。支持全文索引。
如何选择表中既有读也有写而且非常的频繁可以考虑。表中绝大多数都只是读查询,可以考虑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值