美文网首页
Mysql引擎

Mysql引擎

作者: 雪飘千里 | 来源:发表于2020-03-16 12:17 被阅读0次

Innodb引擎:MySQL5.5之后的默认存储引擎。

特点:

  • 具有提交(Commit)、回滚(Rollback)、崩溃恢复能力的事务安全
  • 提供了行级锁和外键约束
  • 没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表

MyIASM引擎 :MySQL5.5之前的默认存储引擎,

特点:

  • 不支持数据库事务,也不支持行级锁和外键,因此当INSERT(插入)或UPDATE(更新)数据时即写操作需要锁定整个表,效率便会低一些。

  • MyIASM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。

  • 访问(SELECT)速度快
    如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选择

MEMORY引擎

MEMORY存储引擎是用保存在内存中的数据来创建表,每个memory表对应一个磁盘文件。格式是.frm

特点:由于他的数据是存放在内存中的,并且默认使用HASH索引,所以它的访问速度特别快,同时也造成了他的缺点,就是数据库服务一旦关闭,数据就会丢失,另外对表的大小有限制

每个memary表中可存储数据量的大小,受到max_heap_table_size变量的约束,他的初始值是16MB,可以在定义Memary表的时候通过max_rows指定表的最大行数

主要区别

  • 1、MyIASM是非事务安全的,而InnoDB是事务安全的
  • 2、MyIASM锁的粒度是表级的,而InnoDB支持行级锁
  • 3、MyIASM支持全文类型索引,而InnoDB不支持全文索引
  • 4、MyIASM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyIASM
  • 5、MyIASM表保存成文件形式,跨平台使用更加方便
  • 6、InnoDB写的处理效率差一点,并且会占用更多的磁盘空间来存储数据和索引
image.png

应用场景:

  • InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

  • MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。
    如果应用的完整性、并发性要求比 较低,也可以使用。

  • MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。比如,作为统计操作的中间结果表,便于利用它速率快的优势高效的对中间结果进分析。

注意,同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。

相关文章

网友评论

      本文标题:Mysql引擎

      本文链接:https://www.haomeiwen.com/subject/qttwehtx.html