MySql常用存储引擎,以及它们的区别

MySql存储引擎

在这里插入图片描述

常用引擎的比较

InnoDB(默认)MyISAMMemory
事务支持(默认事务隔离级别:可重复读)不支持不支持
存储限制64TB256TB物理内存
物理外键支持不支持不支持
存储方式表结构放在.frm文件,数据和索引放在.idb文件中表结构放在.frm文件,数据放在myd文件,索引放在.myi文件每一个表和.frm文件关联,不支持blob和text数据类型,只存储在内存(mysql重启后数据消失)
锁粒度默认行锁,也支持表锁仅支持表锁仅支持表锁

补充

  • MySQL表级锁有两种模式: 表共享读锁(Table Read Lock)和表独占写锁(Table Write Lock)。
    对MyISAM表进行读操作时,它不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写操作;而对MyISAM表的写操作,则会阻塞其他用户对同一表的读和写操作。
    InnoDB行锁是通过给索引项加锁来实现的,即只有通过索引条件检索数据,InnoDB才使用行级锁,否则将使用表锁!
  • auto_increment属性的列要求是索引或者复合索引的一部分。复合索引时,innodb存储引擎要求该列必须是复合索引的第一列,而myisam存储引擎则可以是其他列。
  • InnoDB 中不保存表的具体行数,也就是说,执行select count() from table 时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含where条件时,两种表的操作是一样的。
  • MyISAM适合:
    (1)做很多count(*)计算;
    (2)写入不频繁,查询非常频繁,MyISAM是更好的选择
    (3)没有事务。
  • InnoDB适合:
    (1)可靠性要求比较高,或者要求事务;
    (2)读写均衡的场景
    (3)没有事务。
  • MRG_MyISAM是MyISAM的一个变种,将几个相同的MyISAM表合并为一个虚表。常用于日志和数据仓库。
  • ARCHIVE,拥有很好的压缩机制,仅支持插入和查询功能,经常被用来做数据仓库使用。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值