开发者社区 > 数据库 > 正文

转储操作对存储引擎的稳定性、性能和空间效率有哪些影响?

已解决

转储操作对存储引擎的稳定性、性能和空间效率有哪些影响?

展开
收起
云上静思 2022-09-15 17:21:22 610 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    第一,通过将内存中的数据移出,转储操作会降低内存中的空间占用,释放出可供新增数据或缓存使用的内存空间。反之,如果转储操作无法被及时地执行,当有新数据持续写入时,内存空间占用会不断上升,直至系统无法存储更多的新数据,带来数据库不可用的风险。

    第二,转储操作本身的开销与查询的开销之间存在显著的权衡关系。保证磁盘上的数据始终完全按主键值排序,且同一个层次内各个数据块之间没有主键范围的交叠,可确保主键值在任意范围内的数据记录最多只存在于一个数据块中,这样可以使 得该层次上的点查询操作只需至多读取一个数据块,并将范围查询需要读取的数据块数量减为最少。但是,为了实现并保持这种全排序,每一个转储任务都要将从内存移出的固化内存表中的数据与磁盘上主键范围存在交叠的数据块进行合并,合并操作会消耗很多的CPU 与I/O 资源,且反复合并会带来I/O 写放大导致加剧I/O 消耗。这种现象会造成转储开销大、耗时长,并占用更多的系统资源,影响数据库性能的稳定性。如果弱化对磁盘上数据全排序的要求,转储开销下降,但查询开销就会提高。XEngine 引擎因此对转储操作的开销与查询开销之间的权衡进行了优化。

    以上内容摘自《云原生数据库原理与实践》,这本书可以在电子工业出版社天猫店购买。

    2022-09-15 22:01:40
    赞同 展开评论 打赏
问答分类:
问答地址:

数据库领域前沿技术分享与交流

相关电子书

更多
企业数据的存储类型选择与成本优化 立即下载
重新出发:阿里云数据库开源整体策略 立即下载
基于etcd的超大规模生产级弹性键值存储实践与优化 立即下载