05-存储引擎介绍

运行如下命令可查看表的引擎

show table status like 'sys_account' \G

MySQL的存储引擎是可"拔插"的

一. InnoDB
  • 5.5及以后的版本,InnoDB是默认引擎
  • 灾难恢复性好
  • 支持全部四种级别的事务。默认的事务隔离级别是可重复读(Repeatable Read),它的事务支持是通过多版本并发控制(MVCC)来提供的
  • 行级锁
  • 对于InnoDB引擎中的表,其数据的物理组织形式是簇表(Cluster Table),数据按主键来组织,也就是说主键索引和数据是在一起的,数据按主键的顺序物理分布。数据表的另一种常见形式是非簇表,其索引是有序的,而数据是无序的
  • 实现了缓冲管理,不仅能缓冲索引也能缓冲数据,并且会自动创建散列索引以加快数据的获取。相比之下,MyISAM只是缓存了索引
  • 支持外键
  • 支持热备份
二. MyISAM
  • MySQL5.0/5.1的默认引擎
  • 可以配合锁,实现操作系统下的复制备份、迁移
  • 使用表级锁,并发性差
  • 支持全文检索(MySQL InonoDB在5.6以后也支持全文检索)
  • 主机宕机后,MyISAM表易损坏,灾难恢复性不佳
  • 无事务支持
  • 只缓存索引,数据的缓存是利用操作系统缓冲区来实现的。可能引发过多的系统调用且效率不佳
  • 数据紧凑存储,因此可获得更小的索引和更快的全表扫描性能
三. MEMORY
  • MEMORY存储引擎提供“内存”表,也不支持事务、外键

  • 使用内存表(内存引擎)可以显著提高访问数据的速度,可用于缓存会频繁访问的、可以重构的数据、计算结果、统计值、中间结果,但也有如下这些不足之处:

    • 使用的是表级锁,虽然内存访问快,但如果频繁地读写,表级锁可能会成为瓶颈所在
    • 只支持固定大小的行。VARCHAR类型的字段会存储为固定长度的CHAR类型,浪费空间
    • 不支持TEXT、BLOB字段
    • 由于内存资源成本昂贵,一般不建议设置过大的内存表,如果内存表满了,就会在MySQL错误日志里发现类似“Thetable‘table_name’is full”这样的错误,可通过清除数据或调整内存表参数来避免报错
    • 服务器重启后数据会丢失,复制维护时需要小心
四. ARCHIVE
  • ARCHIVE存储引擎是被设计用来存储企业中的大量流水数据的存储引擎
  • 它只支持INSERT和SELECT,支持自增键及其上的索引,不支持其他索引。它适合做日志记录、用户行为分析,不需要UPDATE、DELETE和索引的数据
如何选择合适的引擎

选择引擎事,需考虑下面几点

  • 是否需要事务支持
  • 是否为高并发,InnoDB实现了行锁,这方面的表现大大优于MyISAM
  • 引索
  • 是否需要外键
  • 高效缓冲数据,InnoDB缓冲数据而MyISAM只缓冲了索引
  • 备份,是否需要支持热备份

转载于:https://my.oschina.net/majorx/blog/3035323

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值