随笔分类 -  性能相关

摘要:概述 快速删除表中的数据 delete语句删除数据 表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放。 这种删除缺点是:删除效率比较低。 这种删除优点是:支持删除部分数据,支持回滚。 truncate语句删除数据 这种删除效率比较高,表被一次截断,物理删除。 这种删除缺点:不支持删除 阅读全文
posted @ 2022-08-27 10:08 KINGBASE研究院 阅读(570) 评论(1) 推荐(0) 编辑
摘要:在帮助用户优化应用过程中,发现用户大量使用union all 导致SQL解析非常缓慢的问题。考虑到这个问题很有代表意义,我觉得很有必要对于问题进行总结。 一、用户例子 WITH company_user_temp AS (SELECT '00629999000100260000' AS compan 阅读全文
posted @ 2022-06-08 18:46 KINGBASE研究院 阅读(833) 评论(0) 推荐(0) 编辑
摘要:KingbaseES 提供了对于分区表 global index 的支持。global index 不仅提供了对于唯一索引功能的改进(无需包含分区键),而且在性能上相比非global index (local index)有很大的提升(无法提供分区条件情况下)。以下举例说明二者在性能方面的差异。 1 阅读全文
posted @ 2022-06-01 13:48 KINGBASE研究院 阅读(150) 评论(0) 推荐(0) 编辑
摘要:一、前言 对于含有union , group by 等的视图,我们称之为复杂视图。 这类的视图会影响优化器对于视图的提升,也就是视图无法与父查询进行合并,从而影响访问路径、连接方法、连接顺序等。本文通过例子,给大家展示PostgreSQL这类问题及针对该问题的优化方法。 二、Union 视图的优化 阅读全文
posted @ 2022-05-25 18:36 KINGBASE研究院 阅读(222) 评论(0) 推荐(0) 编辑
摘要:前言 对于多列分区,可以选择单级多列的范围分区,也可以选择范围加子分区的方式。但二者在不同场景下对于性能是有差异的,这里的性能差异主要是分区裁剪引起的差异。 例子 创建两张分区表,采取不同的分区策略: create table t1_part_ranage(id1 integer,id2 integ 阅读全文
posted @ 2022-05-24 15:20 KINGBASE研究院 阅读(191) 评论(0) 推荐(0) 编辑
摘要:一、什么是扩展统计 扩展统计对象, 追踪指定表、外部表或物化视图的数据。 目前支持的种类: 启用n-distinct统计的 ndistinct。 启用功能依赖性统计的dependencies。 启用最常见的值列表的mcv。 本文仅讨论n-distinct统计信息,在优化器中的作用。手工修改统计信息, 阅读全文
posted @ 2022-05-23 08:54 KINGBASE研究院 阅读(187) 评论(0) 推荐(0) 编辑
摘要:今天我们要探讨的是 custom执行计划和通用执行计划。这一技术在 Oracle中被称为绑定变量窥视。但 Kingbase中并没有这样的定义,更严格地说,Kingbase叫做custom执行计划和通用执行计划。 什么是custom执行计划,什么是通用执行计划,我们先来看一个例子,我创建了一个1000 阅读全文
posted @ 2022-05-20 11:00 KINGBASE研究院 阅读(201) 评论(0) 推荐(0) 编辑
摘要:1、前言 PostgreSQL 聚合算法有两种,HashAggregate and GroupAggregate 。我们知道GroupAggregate 需要对记录进行排序,而 HashAggregate 则无需进行排序,通常 HashAggregate 要快很多。 但是,我们经常会看到优化器使用  阅读全文
posted @ 2022-05-20 09:01 KINGBASE研究院 阅读(388) 评论(0) 推荐(1) 编辑
摘要:对于Oracle,对于数据修改的操作通过存储过程处理,而对于函数一般不进行数据修改操作。同时,函数可以通过 Select 进行调用,而存储过程则不行。 一、对于volatile 函数的行为 1、Oracle 行为 创建函数: create or replace function fun01 retu 阅读全文
posted @ 2022-05-07 17:15 KINGBASE研究院 阅读(326) 评论(0) 推荐(0) 编辑
摘要:对于重复执行的SQL,需要使用绑定变量,避免SQL的重复解析。但是,并不是说使用了绑定变量,就一定能避免硬解析。具体可以参见:https://www.cnblogs.com/kingbase/p/16191668.html 以下举例说明 参数 plan_cache_mode 对于游标共享的影响。 使 阅读全文
posted @ 2022-04-26 10:10 KINGBASE研究院 阅读(102) 评论(0) 推荐(0) 编辑
摘要:概述: 对于数据严重倾斜的,极端如以下例子,不同的传入值,可能执行计划不同,制定执行计划时,就要求知道变量的值。对于绑定变量的情况,我们知道Oracle 有 _optim_peek_user_binds 参数,控制是否启用变量窥探。KingbaseES 也有类似参数,控制是否启用变量窥探。 窥探机制 阅读全文
posted @ 2022-04-25 19:07 KINGBASE研究院 阅读(182) 评论(0) 推荐(0) 编辑
摘要:Stable 函数不能修改数据库,单个Query中所有行给定同样的参数确保返回相同的结果。这种稳定级别允许优化器将多次函数调用转换为一次。在索引扫描的条件中使用这种函数是可行的,因为索引扫描只计算一次比较值(comparison value),而不是每行都计算一次。 Immutable 函数不能修改 阅读全文
posted @ 2022-04-19 14:25 KINGBASE研究院 阅读(146) 评论(0) 推荐(0) 编辑
摘要:概述 KingbaseES 对于where 条件的解析严格遵守“从左到右”的原则,因此,对于选择性比较强的条件,进行最先过滤是有利于性能的。 一、KingbaseES 1、条件顺序影响执行效率 例子: create table t1(id1 integer,id2 integer); insert 阅读全文
posted @ 2022-04-18 16:59 KINGBASE研究院 阅读(113) 评论(0) 推荐(0) 编辑
摘要:一、背景 这个复杂的查询SQL语句,已经进行语法优化,写入应用程序中,且不希望修改代码,实现执行速度大幅度提升。 查询语句中,使用了用户自定义函数,多个视图嵌套,代码逻辑复杂,运行时长过长。 分析方向,基于查询计划,定位耗时较多的节点,通过改变调用对象,实现优化查询性能。 二、查询语句,优化前后的计 阅读全文
posted @ 2022-03-17 09:10 KINGBASE研究院 阅读(138) 评论(0) 推荐(0) 编辑
摘要:背景:客户现场的一次艰苦的调优过程(https://www.cnblogs.com/kingbase/p/16015834.html),让我觉得非常有必要让数据库用户了解函数的不同稳定性属性,及其对于SQL性能可能带来的影响。很多DBA、开发人员根本就不在意,或者根本就没意识到函数稳定性对于性能的影 阅读全文
posted @ 2022-03-02 15:24 KINGBASE研究院 阅读(172) 评论(0) 推荐(0) 编辑
摘要:一、概述 优化拥有大量的分组和去重列的SQL时,这些排序列的次序,也是可以优化的地方。 测试数据结构 kingbase=# select count(distinct txt1 ) txt1, avg(length(txt1))::int ln1, count(distinct txt3 ) txt 阅读全文
posted @ 2022-02-25 14:03 KINGBASE研究院 阅读(134) 评论(0) 推荐(0) 编辑
摘要:我们知道 volatile 函数会影响SQL的执行性能,比如:volatile 类型函数无法建函数索引、volatile 函数针对每条记录都要执行一次。本篇的例子主要讲述 volatile 类型的函数还会影响子查询的提升。 1、构建例子 create table t1(id1 integer,nam 阅读全文
posted @ 2022-02-10 20:43 KINGBASE研究院 阅读(60) 评论(0) 推荐(0) 编辑
摘要:对于大对象,如果数据是外部存储的,在custom 方式导出时,你会发现导出效率非常低。本文测试各种导出场景,验证各种情况下的导出效率。 为保证测试结果可比性,本测试三个场景测试数据量都一样(3.2G),只是单行大小的差异。 一、Inline 存储的导出效率 inline 存储表示行内存储,其行大小不 阅读全文
posted @ 2021-12-21 19:14 KINGBASE研究院 阅读(105) 评论(0) 推荐(0) 编辑
摘要:gin索引字段entry构造的TREE,在末端posting tree|list 里面存储的是entry对应的行号. 别无其他信息。rum索引,与GIN类似,但是在posting list|tree的每一个ctid(itempoint)后面会追加一些属性值。因此,有些场景,使用rum 索引,性能会优 阅读全文
posted @ 2021-12-21 12:04 KINGBASE研究院 阅读(153) 评论(0) 推荐(0) 编辑
摘要:Oracle 的存储过程或函数提供了两种执行方式: 解释执行:将源代码逐条转换成目标代码,解释一条,执行一条的过程。PLPGSQL将语句翻译成中间形式的系统代码,并在运行时进行解释。 编译执行:将源代码一次性转换成目标代码,然后执行目标代码的过程。PLPGSQL将语句编译成动态库并存储在catalo 阅读全文
posted @ 2021-12-07 18:59 KINGBASE研究院 阅读(278) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示