基于深度强化学习(DRL)的查询优化最近已成为热门研究主题。尽管取得了令人鼓舞的进展,但DRL优化者仍然面临着强有力地制定有效计划的巨大挑战,这是因为连接订单和操作员选择的巨大搜索空间以及将其作为反馈信号的高度变化的执行延迟。在本文中,我们提出了Loger,这是一个赢得的效果,以使能力和r ubust计划有效,旨在生产有效的加入订单和运营商。Loger首先利用图形变压器来捕获表和谓词之间的关系。然后,搜索空间进行了重组,Loger学会了限制特定的操作员,而不是直接选择每个连接的操作员,同时利用DBMS内置的优化器在修复下选择物理操作员。这种策略利用专家知识来提高计划生成的鲁棒性,同时提供足够的计划搜索灵活性。此外,Loger介绍了𝜖 -beam搜索,该搜索可在进行指导探索时保留多个搜索路径,以保留有希望的计划。最后,Loger引入了损失功能,并通过奖励加权引入损失功能,从而通过减少差的操作员造成的波动,并记录转换以压缩奖励范围,从而进一步提高性能。我们对加入订单基准(JOB),TPC-DS和堆栈溢出进行实验,并证明Loger可以比现有学习的查询优化器更好地实现性能,而与PostgreSQL相比,工作速度为2.07倍。
开发人员经常部署特定于数据库的网络代理,这样应用程序就可以透明地连接到代理,而不是直接连接到数据库管理系统 (DBMS)。这种间接连接通过连接池、负载平衡和其他特定于 DBMS 的优化提高了系统性能。这些代理不是简单地转发数据包,而是实现 DBMS 协议逻辑(即在应用程序层)来实现此行为。因此,现有的代理是用户空间应用程序,它们在请求到达网络套接字时处理请求并将其转发到适当的目的地。这种方法会导致效率低下,因为内核会在用户空间和内核空间之间反复复制缓冲区,并且相关的系统调用会增加 CPU 开销。本文介绍了用户旁路,这是一种通过利用支持自定义代码执行的现代操作系统功能来消除这些开销的技术。用户旁路通过 Linux 的 eBPF 基础设施将应用程序逻辑推送到内核空间。为了展示其优势,我们实现了 Tigger,这是一个与 PostgreSQL 兼容的 DBMS 代理,它使用用户旁路来消除传统代理设计的开销。我们将 Tigger 的性能与实际部署中广泛使用的其他最先进的代理进行了比较。我们的实验表明,Tigger 优于其他代理 — 在一种情况下,它实现了最低的事务延迟(最多减少 29%)和最低的 CPU 利用率(最多减少 42%)。结果表明,像 Tigger 这样的用户旁路实现非常适合 DBMS 代理的独特要求。