存储引擎是指表的类型,数据库的存储引擎决定了表在计算机中的存储方式。本文为您介绍云数据库 MySQL 支持的存储引擎。
InnoDB 引擎
InnoDB 引擎,是最常用的 OLTP 存储引擎,采用了多版本并发控制(MVCC)和行级锁定技术,以提供高性能和可靠的事务处理能力。相对于 MySQL 的其他存储引擎,InnoDB 支持更好的数据完整性,包括外键和回滚等,还提供了更高级别的查询功能,同时腾讯云对 InnoDB 做了很多内核优化,使其具有更加明显的性能优势,被广泛应用于高性能、高并发的应用场景中。
云数据库 MySQL 默认支持 InnoDB 存储引擎,并在 MySQL5.6及以上的版本中,不再支持 MyISAM 引擎和 Memory 引擎。主要原因如下:
在目前的 MySQL 版本中,TencentDB 对 InnoDB 做了很多内核优化,已经具有明显的性能优势。
MyISAM 采用的是表级锁机制,而 InnoDB 是行级锁机制,通常情况下 InnoDB 具有更高的写入效率。
说明:
表级锁是 MySQL 中锁定粒度最大的一种锁,表示对当前操作的整张表加锁。
行级锁是 MySQL 中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。
MyISAM 对数据完整性的保护存在缺陷,且这些缺陷会导致数据库数据的损坏甚至丢失。另外,这些缺陷很多是设计问题,无法在不破坏兼容性的前提下修复。
MyISAM 和 Memory 向 InnoDB 的迁移代价低,大多数应用仅需要改动建表的代码即可完成迁移。
MyISAM 的发展在向 InnoDB 转移,在最新的官方 MySQL8.0版本中,系统表均已采用 InnoDB。
Memory 无法保证数据的完整性,实例发生重启或者主备切换时,表中的所有数据都会丢失,建议您尽快迁移至 InnoDB。
RocksDB 引擎
RocksDB 是一个非常流行的高性能持久化 KV(key-value)存储,TXRocks 是腾讯 TXSQL 团队基于此开发的事务型存储引擎。TXRocks 事务型存储引擎得益于 RocksDB LSM Tree 存储结构,既减少了 InnoDB 页面半满和碎片浪费,又可以使用紧凑格式存储,因此 TXRocks 在保持与 InnoDB 接近的性能前提下,存储空间相比 InnoDB 可以节省一半甚至更多,更适合对事务读写性能有要求,且数据存储量大的业务。
更节省存储空间
相比 InnoDB 使用的 B+Tree 索引结构,LSM Tree 可以节省相当比例的存储空间。
写放大更低
InnoDB 采用 In-Place 的修改方式,即使仅修改一行记录也可能要刷盘一整个页面,导致比较高的写入放大和随机写。RocksDB 采用 Append-Only 方式,相比而言写入放大更低。
各引擎支持的版本与架构
引擎 | 数据库版本 | 架构 |
InnoDB 引擎 | MySQL5.6、5.7、8.0 | 单节点、双节点、三节点 |
RocksDB 引擎 | MySQL5.7、8.0 | 双节点 |