检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
实际调优案例 案例:调整查询重写GUC参数rewrite_rule 案例:调整基于代价的查询重写GUC参数costbased_rewrite_rule 案例:建立合适的索引 案例:增加JOIN列非空条件 案例:改写SQL消除子查询 案例:改写SQL消除in-clause 父主题:
更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。 使用UPDATE命令更新现有行,需要提供以下三种信息: 表的名称和需要更新的字段名 字段的新值 需要更新的行 SQL通常不会为数据行提
Total runtime: 3.587 ms (4 rows) 优化分析 从业务层确认表数据(在time字段上)有明显的日期特征,符合分区表的特征。重新规划normal_date表的表定义:字段time为分区键、月为间隔单位定义分区表normal_date_part。修改后结果如下,性能提升近10倍。
更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行,所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。 使用UPDATE命令更新现有行,需要提供以下三种信息: 表的名称和要更新的字段名 字段的新值 要更新的行 SQL通常不会为数据行提供
案例:改建分区表 现象描述 如下简单SQL语句查询, 性能瓶颈点在dwcjk的Scan上。 优化分析 从业务层确认表数据(在cjrq字段上)有明显的日期特征,符合分区表的特征。重新规划dwcjk表的表定义:字段cjrq为分区键、天为间隔单位定义分区表dwcjk_part。修改后结果如下,性能提升近1倍。
大容量数据库 大容量数据库背景介绍 表分区技术 数据分区查找优化 数据分区运维管理 父主题: 分区表
更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行,所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。 使用UPDATE命令更新现有行,需要提供以下三种信息: 表的名称和要更新的字段名 字段的新值 要更新哪些行 SQL通常不会为数据行提
更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。 使用UPDATE命令更新现有行,需要提供以下三种信息: 表的名称和要更新的字段名 字段的新值 要更新哪些行 SQL通常不会为数据行提
更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。 使用UPDATE命令更新现有行,需要提供以下三种信息: 表的名称和要更新的字段名 字段的新值 要更新的行 SQL通常不会为数据行提供
GZCS from customer_address_001 a; 此SQL性能较差,查看发现执行计划中存在SubPlan,具体如下: 优化说明 此优化的核心就是消除子查询。分析业务场景发现a.ca_address_sk不为null,那么从SQL语义出发,可以等价改写SQL为: 1
将条件下推到子查询中predpush、predpushnormal、predpushforce 通常优化器以查询块为单位进行优化,不同查询块独立优化,如果有涉及到跨查询块的谓词条件,难以从全局角度考虑谓词应用的位置。predpush可以将谓词下推到子查询块中,在父查询块中的数据量较小或子
Filter条件中存在表达式to_char(add_months(to_date(''20170222'','yyyymmdd'), -11),'yyyymm'),这种非常量的表达式是不能用来剪枝的,因而会导致查询语句扫描分区表所有数据。 查询pg_proc发现此处的to_date
Total runtime: 3.587 ms (4 rows) 优化分析 从业务层确认表数据(在time字段上)有明显的日期特征,符合分区表的特征。重新规划normal_date表的表定义:字段time为分区键、月为间隔单位定义分区表normal_date_part。修改后结果如下,性能提升近10倍。
BY ls_pid_cusr1; 优化后的SQL查询由两个等值join的子查询构成,而每个子查询都可以走更适合此场景的hashjoin。优化后的执行计划如下 优化后,从超过1个小时未返回结果优化到7s返回结果。 父主题: 实际调优案例
分析执行计划图1可知,在顺序扫描阶段耗时较多。 多表JOIN中,由于表PS.SDR_WEB_BSCRNC_1DAY的JOIN列“BSCRNC_ID”存在大量空值,JOIN性能差。 建议在语句中手动添加JOIN列的非空判断,修改后的语句如下所示。 1 2 3 4 5 6 7
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
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
Filter条件中存在表达式to_char(add_months(to_date(''20170222'','yyyymmdd'), -11),'yyyymm'),这种非常量的表达式是不能用来剪枝的,因而会导致查询语句扫描分区表所有数据。 查询pg_proc发现此处的to_date
GZCS from customer_address_001 a; 此SQL性能较差,查看发现执行计划中存在SubPlan,具体如下: 优化说明 此优化的核心就是消除子查询。分析业务场景发现a.ca_address_sk不为null,那么从SQL语义出发,可以等价改写SQL为: 1
监控数据库连接 连接监控功能支持监控JDBC端以下指标:应用开启连接的次数、关闭连接的次数、连接异常断开的次数、数据库访问量、客户端机器CPU的使用率、内存的使用率、上下行传输速率、应用端到数据库链路之间的网络时延、抖动、丢包率。此示例将演示如何使用JDBC驱动的连接监控功能。