存储引擎

存储引擎


1. 存储引擎是什么?
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的 存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

2. 存储引擎的分类

  1. MyISAM: 拥有较高的插入,查询速度,但不支持事务
  2. InnoDB :5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持行级锁定
  3. BDB: 源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性
  4. Memory :所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量正比的内存空间。并且其内容会在Mysql重新启动时丢失
  5. Merge :将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用
  6. Archive :非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有效的插入速度,但其对查询的支持相对较差
  7. Federated: 将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用
  8. Cluster/NDB :高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数量大,安全和性能要求高的应用
  9. CSV: 逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个.CSV文件这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。
  10. BlackHole :黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继另外,Mysql的存储引擎接口定义良好。有兴趣的开发者通过阅读文档编写自己的存储引擎。

3.MySQL中MyISAM与InnoDB区别

  1. 存储结构
    每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出件类型。 .frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。 索引文件的扩展名是.MYI (MYIndex)。
  2. 存储空间
    MyISAM:可被压缩,存储空间较小。 InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小
  3. InnoDB:
    支持事务处理等
    不加锁读取
    支持外键
    支持行锁
    不支持FULLTEXT类型的索引
    不保存表的具体行数,扫描表来计算有多少行
    DELETE 表时,是一行一行的删除
    InnoDB 把数据和索引存放在表空间里面
    跨平台可直接拷贝使用
    InnoDB中必须包含AUTO_INCREMENT类型字段的索引
    表格很难被压缩
  4. MyISAM:
    不支持事务,回滚将造成不完全回滚,不具有原子性
    不支持外键
    不支持外键
    支持全文搜索
    保存表的具体行数,不带where时,直接返回保存的行数
    DELETE 表时,先drop表,然后重建表
    MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI(MYIndex)引伸
    跨平台很难直接拷贝
    MyISAM中可以使AUTO_INCREMENT类型字段建立联合索引
    表格可以被压缩
  5. 选择:
    因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。那么MyISAM最好的选择。且MyISAM恢复速度快。可直接用备份覆盖恢复。
    如果系统读少,写多的时候,尤其是并发写入高的时候。InnoDB就是首选了。
    两种类型都有自己优缺点,选择那个完全要看自己的实际类弄。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值