检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
test1 t1, test2 t2 WHERE t1.a = t2.b ); 优化后的SQL查询由两个等值join的子查询构成,而每个子查询都可以走更适合此场景的hashjoin。优化后的执行计划如下 1 2 3 4 5 6 7 8 9 10 11 12 13
通常优化器总会选择最优的执行计划,但是众所周知代价估算,尤其是中间结果集的代价估算一般会有比较大的偏差,这种比较大的偏差就可能会导致agg的计算方式出现比较大的偏差,这时候就需要通过best_agg_plan进行agg计算模型的干预。 一般来说,当agg汇聚的收敛度很小时,即结果集的个数在ag
Total runtime: 3.587 ms (4 rows) 优化分析 从业务层确认表数据(在time字段上)有明显的日期特征,符合分区表的特征。重新规划normal_date表的表定义:字段time为分区键、月为间隔单位定义分区表normal_date_part。修改后结果如下,性能提升近10倍。
key,在导入时会增加排序计算,会对导入性能产生影响。当排序可以完全在内存中进行时影响较小,如果无法在内存中完成排序时,会下盘写临时文件,这时就会产生较大的影响。 排序使用的内存通过GUC参数psort_work_mem来设置,可以设置较大的值来使用更大的内存进行排序。 排序的数据量是通过表的存储参
Total runtime: 3.587 ms (4 rows) 优化分析 从业务层确认表数据(在time字段上)有明显的日期特征,符合分区表的特征。重新规划normal_date表的表定义:字段time为分区键、月为间隔单位定义分区表normal_date_part。修改后结果如下,性能提升近10倍。
分析执行计划图1可知,在顺序扫描阶段耗时较多。 多表JOIN中,由于表PS.SDR_WEB_BSCRNC_1DAY的JOIN列“BSCRNC_ID”存在大量空值,JOIN性能差。 建议在语句中手动添加JOIN列的非空判断,修改后的语句如下所示。 1 2 3 4 5 6 7 8 9 10 11 12
案例:改建分区表 现象描述 如下简单SQL语句查询, 性能瓶颈点在dwcjk的Scan上。 优化分析 从业务层确认表数据(在cjrq字段上)有明显的日期特征,符合分区表的特征。重新规划dwcjk表的表定义:字段cjrq为分区键、天为间隔单位定义分区表dwcjk_part。修改后结果如下,性能提升近1倍。
其中two_sum()函数无法下推,导致走到RemoteQuery的计划: 首先下发select c1 from t1 where true语句到DN读取全部t1表的数据。 然后下发select c2 from t2 where true语句到DN读取全部t2表的数据。 获取需要的数据之后,在CN上做HASH JOIN。
通常优化器总会选择最优的执行计划,但是代价估算,尤其是中间结果集的代价估算一般会有比较大的偏差,这种比较大的偏差就可能会导致agg的计算方式出现比较大的偏差,这时候就需要通过best_agg_plan进行agg计算模型的干预。 一般来说,当agg汇聚的收敛度很小时,即结果集的个数在agg之
导致走到RemoteQuery的计划: 首先下发select c1 from t1 where true语句到DN读取全部t1表的数据。 然后下发select c2 from t2 where true语句到DN读取全部t2表的数据。 获取需要的数据之后,在CN上做HASH JOIN。
应用程序是否需要支持自动重连GaussDB数据库 建议您的应用程序支持自动重连数据库,当数据库重启后,无需人工介入,应用会自动恢复,提供更高的可用性。 同时建议您的应用程序采用长连接方式连接数据库,以降低资源消耗,提高性能。 父主题: 数据库连接
案例:使排序下推 现象描述 在做场景性能测试时,发现某场景大部分时间是CN端在做window agg,占到总执行时间95%以上,系统资源不能充分利用。研究发现该场景的特点是:将两列分别求sum作为一个子查询,外层对两列的和再求和后做trunc,然后排序。 表结构如下所示: 1 2
rows) 由于目标列中的相关子查询(select avg(c2) from t2 where t2.c2=t1.c2)无法提升的缘故,导致每扫描t1的一行数据,就会触发子查询的一次执行,效率低下。如果打开intargetlist参数会把子查询提升转为JOIN,来提升查询的性能: openGauss=#
应用层SQL重试 当主数据库节点故障且10s未恢复时,GaussDB会将对应的备数据库节点升主,使数据库正常运行。备升主期间正在运行的作业会失败,备升主后启动的作业不会再受影响。如果要做到数据库节点主备切换过程中,上层业务不感知,可参考此示例构建业务层SQL重试机制。 代码运行的
通常优化器总会选择最优的执行计划,但是众所周知代价估算,尤其是中间结果集的代价估算一般会有比较大的偏差,这种比较大的偏差就可能会导致agg的计算方式出现比较大的偏差,这时候就需要通过best_agg_plan进行agg计算模型的干预。 一般来说,当agg汇聚的收敛度很小时,即结果集的个数在ag
应用层SQL重试 当主数据库节点故障且10s未恢复时,GaussDB会将对应的备数据库节点升主,使数据库正常运行。备升主期间正在运行的作业会失败,备升主后启动的作业不会再受影响。如果要做到数据库节点主备切换过程中,上层业务不感知,可参考此示例构建业务层SQL重试机制。 代码运行的
rows) 由于目标列中的相关子查询(select avg(c2) from t2 where t2.c2=t1.c2)无法提升的缘故,导致每扫描t1的一行数据,就会触发子查询的一次执行,效率低下。如果打开intargetlist参数会把子查询提升转为JOIN,来提升查询的性能: gaussdb=#
查询参数模板的应用记录 功能介绍 查询参数模板的应用记录。 调用接口前,您需要了解API 认证鉴权。 调用接口前,您需要提前获取到地区和终端节点,即下文中的Endpoint值。 调试 您可以在API Explorer中调试该接口。 URI GET https://{Endpoin
应用参数模板 功能介绍 应用参数模板。 调用接口前,您需要了解API 认证鉴权。 调用接口前,您需要提前获取到地区和终端节点,即下文中的Endpoint值。 调试 您可以在API Explorer中调试该接口。 URI PUT https://{Endpoint}/v3/{pro
分析执行计划图1可知,在顺序扫描阶段耗时较多。 多表JOIN中,由于表PS.SDR_WEB_BSCRNC_1DAY的JOIN列“BSCRNC_ID”存在大量空值,JOIN性能差。 建议在语句中手动添加JOIN列的非空判断,修改后的语句如下所示。 1 2 3 4 5 6 7 8 9 10 11 12