检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
案例:NOT IN转NOT EXISTS NOT IN语句需要使用nestloop anti join来实现,而NOT EXISTS则可以通过hash anti join来实现。在join列不存在null值的情况下,not exists和not in等价。因此在确保没有null值时,可以通过将not
经过SQL改写,性能由2.862s提升0.955s,优化效果明显。需注意,本示例中优化结果仅供参考,由于WindowAgg的不确定性,优化后的结果集跟实际业务相关。 父主题: SQL调优案例
执行去重会消耗大量的时间,因此,在一些实际应用场景中,如果通过业务逻辑已确认两个集合不存在重叠,可用union all替代union以便提升性能。 优化后的SQL查询由两个等值join的子查询构成,而每个子查询都可以走更适合此场景的hashjoin。优化后的执行计划如下 优化后
案例:NOT IN转NOT EXISTS NOT IN语句需要使用nestloop anti join来实现,而NOT EXISTS则可以通过hash anti join来实现。在join列不存在null值的情况下,not exists和not in等价。因此在确保没有null值时,可以通过将not
案例:增加JOIN列非空条件 若Join列上的NULL值较多,可以加上is not null过滤条件,以实现数据的提前过滤,提高Join效率。 优化前 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
GaussDB(DWS)热数据存储和冷数据存储的区别? 热数据存储和冷数据存储最大的区别在于存储介质不同: 热数据存储是直接将频繁被查询或更新,对访问的响应时间要求很高的热数据存储在DN数据盘中。 冷数据存储将不更新,偶尔被查询,对访问的响应时间要求不高的冷数据存储在OBS中。 因为其存储介
排序完全在内存中进行时影响较小,如果无法在内存中完成排序时,会下盘写临时文件,这时就会产生较大的影响。 排序使用的内存通过GUC参数psort_work_mem来设置,可以设置较大的值来使用更大的内存进行排序。 排序的数据量是通过表的存储参数PARTIAL_CLUSTER_ROW
constraint 原因分析 针对上述案例,表t1中的字段b在建表时,设置了非空(not null)约束,那么字段b中不能有空值。而插入数据时b列为空,则执行报错。 解决方案 针对上述案例,有两种解决方案: 方案一:使用ALTER TABLE删除字段b的非空(not null)约束 1
排序完全在内存中进行时影响较小,如果无法在内存中完成排序时,会下盘写临时文件,这时就会产生较大的影响。 排序使用的内存通过GUC参数psort_work_mem来设置,可以设置较大的值来使用更大的内存进行排序。 排序的数据量是通过表的存储参数PARTIAL_CLUSTER_ROW
SQL调优案例 案例:选择合适的分布列 案例:建立合适的索引 案例:增加JOIN列非空条件 案例:使排序下推 案例:设置cost_param对查询性能优化 案例:调整局部聚簇键 案例:调整中间表存储方式 案例:改建分区表 案例:调整GUC参数best_agg_plan 案例:改写SQL排除剪枝干扰
在Java中,读取character类型的表字段时返回类型为什么是byte? 问题现象 数据库中新建一张表,某个表字段使用character类型,在Java中读取character类型的字段时返回类型是byte。 例如,创建示例表table01: 1 2 3 4 CREATE TABLE
出现字段超长,数据同步失败 执行创建OBS外表的SQL语句时,提示Access Denied GDS导入失败后,磁盘占用空间增大 GDS导入数据时,脚本执行报错:out of memory 使用GDS传输数据的过程中,报错:connection failure error 使用DataArts
通常优化器总会选择最优的执行计划,但是众所周知代价估算,尤其是中间结果集的代价估算一般会有比较大的偏差,这种比较大的偏差就可能会导致agg的计算方式出现比较大的偏差,这时候就需要通过best_agg_plan进行agg计算模型的干预。 一般来说,当agg汇聚的收敛度很小时,即结果集的个数在ag
function-call/type-conversion Filter条件中存在表达式(year_mth + 1) > 202008,这种表达式一侧不是单纯的分区键、而是包含分区键的表达式的Filter条件是不能用来剪枝的,因而导致查询语句扫描了几乎整个分区表的数据。 跟原始SQL语句对比,可以确定表达式 '(year_mth
通常优化器总会选择最优的执行计划,但是众所周知代价估算,尤其是中间结果集的代价估算一般会有比较大的偏差,这种比较大的偏差就可能会导致agg的计算方式出现比较大的偏差,这时候就需要通过best_agg_plan进行agg计算模型的干预。 一般来说,当agg汇聚的收敛度很小时,即结果集的个数在ag
导入数据最佳实践 从OBS并行导入数据 将导入数据拆分为多个文件 导入大数据量的数据时,通常需要较长的时间及耗费较多的计算资源。 从OBS上导入数据时,如下方法可以提升导入性能:将数据文件存储到OBS前,尽可能均匀地将文件切分成多个,文件的数量为DN的整数倍更适合。 在导入前后验证数据文件
SQL调优案例 案例:选择合适的分布列 案例:建立合适的索引 案例:增加JOIN列非空条件 案例:使排序下推 案例:设置cost_param对查询性能优化 案例:调整局部聚簇键 案例:调整中间表存储方式 案例:改建分区表 案例:调整GUC参数best_agg_plan 案例:改写SQL排除剪枝干扰
为这些表加载样例数据。 OBS存储桶中提供了本次实践的样例数据。该存储桶向所有经过身份验证的云用户提供了读取权限。请按照下面的步骤加载这些样例数据: 为每个表创建对应的外表。 GaussDB(DWS)应用Postgres提供的外部数据封装器FDW(Foreign Data Wrapper)
function-call/type-conversion Filter条件中存在表达式(year_mth + 1) > 202008,这种表达式一侧不是单纯的分区键、而是包含分区键的表达式的Filter条件是不能用来剪枝的,因而导致查询语句扫描了几乎整个分区表的数据。 跟原始SQL语句对比,可以确定表达式 '(year_mth
支持的数据类型 目前大数据领域,主流文件格式为ORC。GaussDB(DWS)主要支持ORC文件格式。用户利用HIVE将数据导出存储为ORC文件格式,使用GaussDB(DWS)通过只读外表对ORC文件内的数据进行查询分析,因此,需要在ORC文件格式支持的数据类型与GaussDB