love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

MogDB/openGauss学习笔记之 – SQL Patch

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: MogDB/openGauss学习笔记之 – SQL Patch

MogDB 继承了openGauss 3.0引入等SQL Patch功能,并进行了一些增强。我们都知道在数据库优化过程中,尤其是之前在进行Oracle 数据库优化时,需要经常去干预SQL 执行计划,确保应用SQL 走正常的执行计划。因此去固定sql的执行计划就显得十分的重要,这方面Oracle做的非常强大。不过现在MogDB也具备相应的功能了,这简直是DBA的一大福音。下面进行简单的 测试验证:

首先准备好测试表:

这里我们单独一个窗口来执行创建sql patch的操作:

创建完毕后,我们来简单验证一下:

如果是indexonlyscan的情况下,能否改成indexscan呢,我们删除sql patch并重建一下:

再次验证一下执行计划:

我们可以看有warning提示,说明这种情况下并没起作用,仍然使用了indexonlyscan.

为了查询慢sql监控信息,这里我调整了如下的相关参数:
enable_resource_track=on
instr_unique_sql_count=10000
resource_track_level=query
log_duration=on
log_min_duration_statement=1

除了简单的 控制索引使用,能否支持控制连接方式呢?比如强制使用hash join? 再测一下:

从测试来看似乎没有识别到我们的hint。可能是写法不对,改成别名试试看。

此时正是我们需要的执行计划,强制其走hash join。

从官方文档来看,目前MogDB SQL Patch支持多种操作;例如 支持行数、扫描方式、连接方式、连接顺序、PBE custom/generic计划选择、语句级参数等。
基本上跟Oracle SQL patch接近了。

Leave a Reply

You must be logged in to post a comment.