阿里云X-Engine引擎:优化大规模电子商务交易处理的新选择
随着电子商务的飞速发展,数据量的爆发式增长使得数据库面临着巨大的挑战。为了解决这个问题,阿里云数据库产品事业部研发了自研的联机事务处理OLTP(On-Line Transaction Processing)数据库存储引擎——X-Engine。作为PolarDB的存储引擎之一,X-Engine已经广泛应用在阿里集团内部诸多业务系统中,大幅缩减了业务成本,同时也作为双十一大促的关键数据库技术,挺过了数百倍平时流量的冲击。
X-Engine采用分层存储架构(LSM-Tree),这种架构的热点数据集更小,写入性能更高。同时,底层持久化的数据页是只读的,数据页采用紧凑存储格式,同时默认进行压缩,存储成本更低。除了LSM-Tree架构自身的优势之外,X-Engine在工程实现上也进行了大量的创新。
首先,X-Engine利用先天性的优势,持续优化写入性能,相比同为LSM-tree架构的Rocksdb,有超过10倍的性能提升。其次,X-Engine在存储层引入数据复用技术等,优化Compaction的性能,降低传统LSM-tree架构中Compaction动作对系统资源的冲击,保持系统性能平稳。此外,X-Engine支持在同一实例中混合部署SSD/HDD等不同IO能力的存储设备,利用天然分层结构的特点,结合不同存储硬件的IO读写性能,智能地进行数据的冷热分离存储,在不降低性能的前提下,降低综合成本。最后,X-Engine引入多个层级Cache,同时结合Cach回填和预取机制,利用精细化访问机制和缓存技术,弥补传统LSM-tree引擎的读性能短板。
通过以上多方面的工程优化,X-Engine成为传统InnoDB引擎的一个替代选项,既支持事务,同时又能够显著的降低业务存储成本(依据数据特征,存储空间可降低至10%~50%),特别适合数据容量巨大,同时又要保证一定事务读写性能的业务。
目前,X-Engine引擎适用于RDS MySQL 8.0高可用系列或基础系列。如果需要使用X-Engine引擎,请在购买RDS实例时,基础资源页面选择实例类型为MySQL 8.0,然后在实例配置页面选择存储引擎为X-Engine(高压缩率)。
对于RDS MySQL 5.5、5.6、5.7的用户,如果需要使用X-Engine引擎,需要先迁移至RDS MySQL 8.0版本实例,详情请参见RDS实例间的数据迁移。同时,也可以参考相关的文档进行InnoDB/TokuDB/Myrocks引擎转换为X-Engine引擎的操作。
总的来说,X-Engine引擎为大规模电子商务交易处理提供了新的优化选择,其强大的性能和优化的存储结构使得它成为了数据库领域的有力竞争者。