在 Oracle 18c 以及 Oracle 19c 的产品中,机器学习 成为一个重要的 战略技术点,Larry Ellison 在演讲中也不断提到 Machine Learning,那么机器学习在 Oracle 数据库中到底有什么样的应用?是 纸上谈兵 还是 性能利器?
在最近 Oracle 活动的一页 PPT 上,我们看到了一些信息,云和恩墨的专家们在这些活动中和 Oracle 研发领袖们不断探讨,以其将这些变化呈现给社区。
自治数据库的负载优化 - Autonomous Workload Optimization ,基于机器学习,提供以下 五大功能。
自我优化 Self-Tuning ,例如自动创建和监控索引,当然这个过程可以人工干预,以防止误判。Automatic creation and monitoring of indexes with manual override。这个特性如果成熟,大家可以知道为我们带来的可能变革,索引是最影响性能,也最为重要,如果索引能够实现自治,这将是优化的一大福音。
统计( Statistics),实时维护优化统计信息,让统计信息更及时,Real-time maintenance of optimizer statistics;
执行计划(Plans),当执行计划改变时自动检测和回归修正,Automatic detection and correction of regressions due to plan changes;
配置( Configuration ),自动调优内存,进程,会话... ,Automatically tune memory ,process,session,etc,
失控SQL (Runaway SQL)控制,自动杀掉失控SQL并阻止执行,直至优化完成,Automatically kill runaway SQL and prevent re-execution until tuned.
当机器学习可以通过自我驱动实现这些特性,那么数据库维护的工作量真的就可以大幅度降低了。
补充一张 Larry Ellison 的 PPT,描绘了类似的功能。这张蓝图预计是在 Oracle 19c 中实现的。
通过机器学习的算法(Machine Learning),可以随时监控系统的负载变化,识别潜在的风险,对于SQL执行计划和索引做出自动调节。
自治优化的三个步骤:识别问题(Identify Candidate Improvements),测试改进(Test Improvement to Ensure Benifit),验证改进(Validate Change for Each SQL).
•机器学习 持续监控工作负载并且识别潜在新的SQL执行计划和索引Machine Learning continuously monitors workload and identifies potential new SQL plans and indexes
-执行计划就像新的驾驶方向,索引就像新的道路。Plans are like driving directions, indexes are like new roads
•SQL执行计划和索引的改变是具有风险的 However, SQL plan and index changes are risky
-即使一个改变让千分之一的SQL性能受损,那都不可接受。Changes that improve 999 cases but hurt 1 are unacceptable
•自治的目标是避免所有的性能衰减。Goal of Autonomous is to avoid ALL slowdowns
•建议的修改在工作负载时间之外测试验证。Proposed changes tested outside application workload
•在第一次执行变更SQL时验证受益。Then benefit is validated on first execute of every changed SQL
-如果性能受损则立即恢复原有执行计划。If performance regresses then old plan is restored
这就是机器学习在Oracle数据库中的实践。