mysql常用存储引擎简介

1.InnoDB
从mysql 5.5版本开始,innodb是mysql默认的存储引擎。innodb具有以下优点
灾难恢复性好
支持事务,默认的事务隔离级别是可重复读,其事务控制是通过多版本并发控制来实现的。
使用行级锁
对于InnoDB引擎中的表, 其数据的物理组织形式是簇表(Cluster Table) , 数据按主键来组织, 也就是说主键索引和数据是在一起的, 数据按主键的顺序物理分布。 数据表的另一种常见形式是非簇表, 其索引是有序的, 而数据是无序的。
实现了缓冲管理, 不仅能缓冲索引也能缓冲数据, 并且会自动创建散列索引以加快数据的获取。 相比之下, MyISAM只是缓存了索引。
支持外键。
支持热备份
2.MyISAM引擎
可以配合锁, 实现操作系统下的复制备份、 迁移。
使用表级锁, 并发性差。
支持全文检索(MySQL InonoDB在5.6以后也支持全文检索) 。
主机宕机后, MyISAM表易损坏, 灾难恢复性不佳。
无事务支持。
只缓存索引, 数据的缓存是利用操作系统缓冲区来实现的。 可能引发过多的系统调用且效率不佳。
数据紧凑存储, 因此可获得更小的索引和更快的全表扫描性能。
3.MEMORY引擎
MEMORY存储引擎提供“内存”表, 也不支持事务、 外键。
使用内存表(内存引擎) 可以显著提高访问数据的速度, 可用于缓存会频繁访问的、 可以重构的数据、 计算结果、 统计值、 中间结果, 但也有如下这些不足之处。
使用的是表级锁, 虽然内存访问快, 但如果频繁地读写, 表级锁可能会成为瓶颈所在。
只支持固定大小的行。 VARCHAR类型的字段会存储为固定长度的CHAR类型, 浪费空间。
不支持TEXT、 BLOB字段。 当有些查询需要使用到临时表(使用的也是MEMORY存储引擎) 时如果表中有TEXT、 BLOB字段, 那么会转化为基于磁盘的MyISAM表, 严重降低性能。
由于内存资源成本昂贵, 一般不建议设置过大的内存表, 如果内存表满了, 就会在MySQL错误日志里发现类似“Thetable‘table_name’is full”这样的错误, 可通过清除数据或调整内存表参数来避免报错。
服务器重启数据会丢失
4.ARCHIVE引擎
ARCHIVE存储引擎是被设计用来存储企业中的大量流水数据的存储引擎。 ARCHIVE引擎使用zlib无损数据压缩, 让数据都保存在压缩的存档表中。 当数据被插入时, 它们被压缩。
它只支持INSERT和SELECT, 支持自增键及其上的索引, 不支持其他索引。 它适合做日志记录、 用户行为分析, 不需要UPDATE、 DELETE和索引的数据

mysql的存储引擎有很多,我们在实际使用的过程需要按照自己的需求去选择,选择的时候需要考虑以下因素
是否需要事务支持。
是否为高并发, InnoDB实现了行锁, 这方面的表现大大优于MyISAM。
索引, 不同存储引擎的索引实现不尽相同。
是否需要外键。
高效缓冲数据, InnoDB缓冲数据而MyISAM只缓冲了索引。
备份, 是否需要支持热备份。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值