论文部分内容阅读
数据库压缩是一种常用的提升关系数据库性能和节省存储空间的技术。MySQL数据库几乎是应用最为广泛的开源数据库,针对目前MySQL数据库存在的磁盘访问密集且CPU利用率不足的情况,利用数据压缩的方法来减少数据库系统中的磁盘访问,同时提高CPU的利用率,是一种有效的优化方式。数据库压缩技术将数据表进行压缩存储,不仅节约了磁盘的空间占用量,又使得内存中能够容纳更多的热数据,提高cache命中率,减少磁盘I/O,另外,数据库系统中一次I/O操作读取的记录数据也变得更多,读取数据库表的I/O次数将会更少。数据库压缩技术将沉重的磁盘压力部分转移给空闲的CPU,达到服务器I/O子系统和计算子系统之间相对负载均衡。 本文对MySQL以页面为单位的数据压缩方案进行了详细分析,建立性能分析模型,着重研究硬件和算法参数对数据库性能的影响。该分析模型定量描述系统参数和这些性能指标之间的关系,通过模型指导压缩方案的设计和优化。针对数据库实际数据特点研究有针对性的高效压缩/解压算法,本文提出选择更适合数据库写少读多应用场景的LZ4压缩算法,实现完整的MySQL cache压缩方案,提高cache命中率;设计异步压缩算法减少写数据库引发压缩的同步延迟,推迟数据库性能下降;设计提前分裂算法(自适应页面调整算法)以保证压缩成功率,降低压缩失败带来的访问延迟。 最后使用真实数据集在压缩数据页上进行查询插入压力测试。压缩率测试的实验表明,将MySQL页面级压缩算法由原有的Zlib压缩算法替换为LZ4压缩算法后依然可以获得较高的压缩率;查询操作的实验表明,由于I/O次数的减少,压缩数据库系统的查询效率在HDD和SSD平台上都可以获得较大提升;插入操作的实验表明,引入压缩对数据库写性能有一定程度上的影响,但是异步压缩和提前分裂的策略大大的降低了写入性能。