检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
语句的可读性。 【建议】尽量避免使用笛卡尔积和Full join。这些操作会造成结果集的急剧膨胀,同时其执行性能也很低。 【关注】NULL值的比较只能使用IS NULL或者IS NOT NULL的方式判断,其他任何形式的逻辑判断都返回NULL。例如:NULL<>NULL、NULL
发送语句的分布式执行计划:上述两种方式都不可行时,将可下推的查询部分组成查询语句(多为基表扫描语句)下推到DN进行执行,获取中间结果到CN,然后在CN执行剩下的部分。 在“发送语句的分布式执行计划”策略中,要将大量中间结果从DN发送到CN,并且要在CN运行不能下推的部分语句,会
对复杂SQL语句进行拆分。 对于过于复杂并且不易通过以上方法调整性能的SQL可以考虑拆分的方法,把SQL中某一部分拆分成独立的SQL并把执行结果存入临时表,拆分常见的场景包括但不限于: 作业中多个SQL有同样的子查询,并且子查询数据量较大。 Plan cost计算不准,导致子查询hash
WRITE接口参数说明 参数 说明 lob_loc 待写入的指定的LOB类型的对象。 amount 写入长度。 说明: 如果写入长度小于1或写入长度大于待写入的内容长度,则报错。 offset 指定从LOB内容的哪个位置开始写入的偏移(即相对LOB内容起始位置的字节数)。 说明: 如果偏移量小于1或偏移量大于LOB类型最大长度,则报错。
VALUE接口参数说明 参数 描述 low 指定随机数大小的下边界,生成的随机数大于或等于low。 high 指定随机数大小的上边界,生成的随机数小于high。 实际上,只要求这里的参数类型是NUMERIC即可,对于左右边界的大小并没有要求。 示例 生成0到1之间的随机数: 1 SELECT DBMS_RANDOM
curosorid 执行的游标ID DBMS_SQL.DEFINE_COLUMN 该函数用来定义从给定游标返回的列,该接口只能应用于SELECT定义的游标中。定义的列通过查询列表的相对位置来标识,传入变量的数据类型决定了该列被定义的类型。 DBMS_SQL.DEFINE_COLUMN函数的原型为:
一个查询语句要经过多个算子步骤才会输出最终的结果。由于个别算子耗时过长导致整体查询性能下降的情况比较常见。这些算子是整个查询的瓶颈算子。通用的优化手段是EXPLAIN ANALYZE/PERFORMANCE命令查看执行过程的瓶颈算子,然后进行针对性优化。 如下面的执行过程信息中,Hashagg算子的执行时间占总时间的:(51016-13535)/
控制优化器对仅索引扫描规划类型的使用。 enable_seqscan=on 控制优化器对顺序扫描规划类型的使用。完全消除顺序扫描是不可能的,但是关闭这个变量会让优化器在存在其他方法的时候优先选择其他方法。 enable_sort=on 控制优化器使用的排序步骤。该设置不可能完全消除明确的排序,但是关
现基表快速扫描的索引技术。Partial Cluster Key可以指定多列,但是一般不建议超过2列。PCK适用于列存大表点查询加速。 优化前 创建一个无局部聚簇(以下称为PCK)的列存表orders_no_pck,表定义如下: 执行以下SQL语句,查询某个点查询的执行计划: 1
bind_argument,用于指定存放传递给存储过程参数值的变量。bind_argument前的修饰符与对应参数的修饰符一致。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
WRITE接口参数说明 参数 说明 lob_loc 待写入的指定的LOB类型的对象。 amount 写入长度。 说明: 如果写入长度小于1或写入长度大于待写入的内容长度,则报错。 offset 指定从LOB内容的哪个位置开始写入的偏移(即相对LOB内容起始位置的字节数)。 说明: 如果偏移量小于1或偏移量大于LOB类型最大长度,则报错。
VALUE接口参数说明 参数 描述 low 指定随机数大小的下边界,生成的随机数大于或等于low。 high 指定随机数大小的上边界,生成的随机数小于high。 实际上,只要求这里的参数类型是NUMERIC即可,对于左右边界的大小并没有要求。 示例 生成0到1之间的随机数: 1 SELECT DBMS_RANDOM
tor上调度和执行),其他coordinator不会调度和执行该job。所有coordinator都可以查看、修改、删除其他CN创建的job。 job只能通过dbms_job高级包提供的接口进行创建、更新、删除操作,因为高级包的接口中会考虑所有CN间job信息的同步和pg_job
通常优化器总会选择最优的执行计划,但是众所周知代价估算,尤其是中间结果集的代价估算一般会有比较大的偏差,这种比较大的偏差就可能会导致agg的计算方式出现比较大的偏差,这时候就需要通过best_agg_plan进行agg计算模型的干预。 一般来说,当agg汇聚的收敛度很小时,即结果集的个数在ag
临时文件,这时就会产生较大的影响。 排序使用的内存通过GUC参数psort_work_mem来设置,可以设置较大的值来使用更大的内存进行排序。 排序的数据量是通过表的存储参数PARTIAL_CLUSTER_ROWS来设置,降低这个数值,可减少一次排序的数据量。这个参数通常与存储参
有的事务已经提交。 释放连接 【建议】推荐使用连接池限制应用程序的连接数。每执行一条SQL就连接一次数据库,是一种不好的编写习惯。 【建议】在应用程序完成作业任务之后,应当及时断开和GaussDB(DWS)的连接,释放资源。建议在任务中设置session超时时间参数。 【建议】使
原因分析 在同一条ALTER TABLE PARTITION语句中,既存在DROP PARTITION又存在ADD PARTITION时,无论它们的相对顺序是什么,GaussDB(DWS)总会先执行DROP PARTITION再执行ADD PARTITION。执行完DROP PARTITION删除末尾分区后,再执行ADD
在经常需要搜索查询的列上创建索引,可以加快搜索的速度。 在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构。 在经常使用连接的列上创建索引,这些列主要是一些外键,可以加快连接的速度。 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。 在经常
查看GaussDB(DWS)系统表 除了创建的表以外,数据库还包含很多系统表。这些系统表包含集群安装信息以及GaussDB(DWS)上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。 查看数据库中包含的表 例如,在PG_TABLES系统表中查看public schema中包含的所有表。 1
DEFAULT和NULL约束 【建议】如果能够从业务层面补全字段值,则不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。 【建议】给明确不存在NULL值的字段加上NOT NULL约束,优化器会在特定场景下对其进行自动优化。 【建议】给可以显式命名的约束显式命名。除了NOT