检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
通常优化器以查询块为单位进行优化,不同查询块独立优化,如果有涉及到跨查询块的谓词条件,难以从全局角度考虑谓词应用的位置。predpush可以将谓词下推到子查询块中,在父查询块中的数据量较小或子查询中可以利用索引的场景下能够提升性能。涉及到predpush的rewrite_rule规则有3个,分别是: pr
'yyyymm'),这种非常量的表达式是不能用来剪枝的,因而会导致查询语句扫描分区表所有数据。 查询pg_proc发现此处的to_date和to_char均为stable类型的函数,根据数据库对函数行为的约定,此类函数不能在预处理阶段转化为Const值,这也是不能导致分区剪枝的根本原因。 根据
runtime: 3.587 ms (4 rows) 优化分析 从业务层确认表数据(在time字段上)有明显的日期特征,符合分区表的特征。重新规划normal_date表的表定义:字段time为分区键、月为间隔单位定义分区表normal_date_part。修改后结果如下,性能提升近10倍。
案例:改建分区表 现象描述 如下简单SQL语句查询, 性能瓶颈点在dwcjk的Scan上。 优化分析 从业务层确认表数据(在cjrq字段上)有明显的日期特征,符合分区表的特征。重新规划dwcjk表的表定义:字段cjrq为分区键、天为间隔单位定义分区表dwcjk_part。修改后结果如下,性能提升近1倍。
ca_address_sk group by a.ca_address_sk; 为了保证改写的等效性,在customer_address_001. ca_address_sk加了not null约束。 父主题: 实际调优案例
典型应用程序开发示例 典型应用场景配置 获取和处理数据库中的数据 批量绑定 高性能绑定类型 开启连接池 父主题: 基于ODBC开发
通常优化器以查询块为单位进行优化,不同查询块独立优化,如果有涉及到跨查询块的谓词条件,难以从全局角度考虑谓词应用的位置。predpush可以将谓词下推到子查询块中,在父查询块中的数据量较小或子查询中可以利用索引的场景下能够提升性能。涉及到predpush的rewrite_rule规则有3个,分别是: pr
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
CLI提出的以C/C++语言来访问数据库的应用程序编程接口。它提供了一种统一的方法,让应用程序可以访问各种数据库管理系统(DBMS),而不用考虑具体的数据库类型或者操作系统平台。ODBC允许应用程序使用SQL来查询、插入、更新和删除数据库中的数据。应用程序通过ODBC提供的API与
CLI提出的以C/C++语言来访问数据库的应用程序编程接口。它提供了一种统一的方法,让应用程序可以访问各种数据库管理系统(DBMS),而不用考虑具体的数据库类型或者操作系统平台。ODBC允许应用程序使用SQL来查询、插入、更新和删除数据库中的数据。应用程序通过ODBC提供的API与
应用程序开发教程 GaussDB应用程序开发教程 开发规范 驱动包获取 基于JDBC开发 基于ODBC开发 基于libpq开发 基于Psycopg开发 基于Go驱动开发 基于ecpg开发 附录
BY ls_pid_cusr1; 优化后的SQL查询由两个等值join的子查询构成,而每个子查询都可以使用更适合此场景的hashjoin。优化后的执行计划如下: 优化后,从超过1个小时未返回结果优化到7s返回结果。 父主题: 实际调优案例
runtime: 23.716 ms (7 rows) 优化分析 分析执行计划可知,在顺序扫描阶段耗时较多。 建议在语句中手动添加JOIN列的非空判断,修改后的语句如下所示: 1 2 3 SELECT * SELECT * FROM join_a a JOIN join_b b ON a
'yyyymm'),这种非常量的表达式是不能用来剪枝的,因而会导致查询语句扫描分区表所有数据。 查询pg_proc发现此处的to_date和to_char均为stable类型的函数,根据数据库对函数行为的约定,此类函数不能在预处理阶段转化为Const值,这也是不能导致分区剪枝的根本原因。 根据
应用程序开发教程 开发规范 驱动包获取 基于JDBC开发 基于ODBC开发 基于libpq开发 基于Psycopg开发 调试
示例:重新执行应用SQL 当主DN故障且10s未恢复时,GaussDB会自动将对应的备DN升主,使集群正常运行。备升主期间正在运行的作业会失败;备升主后启动的作业不会再受影响。如果要做到DN主备切换过程中,上层业务不感知,可参考此示例构建业务层SQL重试机制。执行示例前,需要加载
ca_address_sk group by a.ca_address_sk; 为了保证改写的等效性,在customer_address_001. ca_address_sk加了not null约束。 父主题: 实际调优案例
案例:使排序下推 现象描述 在做场景性能测试时,发现某场景大部分时间是CN端在做window agg,占到总执行时间95%以上,系统资源不能充分利用。研究发现该场景的特点是:将两列分别求sum作为一个子查询,外层对两列的和再求和后做trunc,然后排序。 表结构如下所示: 1 2
char均为stable类型的函数,根据数据库对函数行为的约定,此类函数不能在预处理阶段转化为Const值,这也是不能导致分区剪枝的根本原因。 根据以上分析,优化表达式使其可以进行分区剪枝是性能优化的关键。根据语意将原SQL等价改写为: 1 2 3 4 select count(1)
runtime: 23.716 ms (7 rows) 优化分析 分析执行计划可知,在顺序扫描阶段耗时较多。 建议在语句中手动添加JOIN列的非空判断,修改后的语句如下所示。 1 2 3 SELECT * SELECT * FROM join_a a JOIN join_b b ON a