关键词:
数据库
人工智能
深度学习
强化学习
查询优化
摘要:
传统的关系型数据库优化技术(如连接顺序选择、节点调整、成本估算、索引和视图选择)已经无法满足大数据时代各种业务的高性能需求,尤其是云上的需求。由于人工智能技术拥有学习能力,所以在数据库领域展现出了巨大潜力以及研究前景。本文首先介绍了人工智能应用于关系型数据库的主流方向;其次,探讨基于学习的数据库优化过程中可能遇到的挑战。进而,综述关系型数据库优化的现状及具体技术,并对数据库优化技术的发展进行了展望。重点综述配置优化与查询优化技术:(1)针对数据库配置优化,主要综述索引推荐、视图推荐以及节点调整。索引推荐包括静态推荐和动态推荐。静态推荐依赖于DBA(Database Administrator)从查询日志中选取常见的查询作为代表性工作负载,并基于工作负载选择合适的索引;动态推荐可以使用贪心算法或者动态规划(Dynamic Programming,DP),根据工作负载的变化动态更新索引方案,也可以配合DBA的反馈进行动态调整,基于学习的动态推荐方法可以自动从历史数据中学习,而不依赖于DBA的反馈。视图推荐主要有两个任务,候选视图生成和视图选择,候选视图生成通过分析历史工作负载或重写子查询生成高质量候选视图;视图选择在资源限制下优化子集物化,最小化查询成本。节点调整包括基于搜索的方法、传统机器学习法以及强化学习法。基于搜索的方法可以得到一个较好的节点组合,但可能无法在有限的时间内找到最优的节点值;传统机器学习法可以自动优化节点,但需要优质样本;强化学习可以与环境的持续交互来提高泛化能力,仅需要少量样本进行自动调参;(2)针对查询优化,主要综述基数/代价估计以及连接顺序选择。基数/代价估计分为传统方法与基于学习的方法。传统方法包括直方图、数据画像以及索引采样,现有方法很难支持涉及多表/多列的连接查询,且需要额外空间存放样本;基于学习的方法可以更好地获取表与表、列与列之间的高维关系,并且可以适当地与采样方法结合,达到更好的效果。连接顺序选择包括传统方法、静态学习法以及动态学习法。传统方法通过穷举法、贪心算法或者动态规划来选择一个较好的顺序,但是开销大,无法在短时间选择一个最佳计划;静态学习法可以从历史的查询中学习,以提高未来查询的性能;动态学习法侧重于使用自适应查询处理来学习连接顺序,即使在执行查询时也可以更改连接顺序。