首页 > 其他分享 >KingbaseES性能调优《索引优化建议》

KingbaseES性能调优《索引优化建议》

时间:2022-12-09 10:13:42浏览次数:29  
标签:插件 cost t1 sys 索引 调优 qualstats KingbaseES id

本文主要介绍KingbaseES使用插件(索引优化建议)进行数据库性能调优。

一、插件 sys_qualstats

1、简介
sys_qualstats 是一个 KingbaseES 的扩展,用于保存 WHERE 语句和 JOIN 子句中谓词的统计信息。
如果希望能够分析数据库中最常执行的 quals(谓词),这非常的有用,该插件利用这点来提供索引建议。

2、插件 sys_qualstats 加载方式
在使用 sys_qualstats 之前,我们需要将他添加到 kingbase.conf 文件的 shared_preload_libraries 中,并重启KingbaseES 数据库。

shared_preload_libraries = 'sys_qualstats,sys_stat_statements' # (change requires restart)

3、创建插件

create extension sys_qualstats;
create extension sys_stat_statements;

系统自动创建 sys_stat_statements 插件。

二、使用sys_qualstats插件

1、修改数据库参数配置
kingbase.conf 中设置

shared_preload_libraries = 'sys_qualstats,sys_stat_statements,sys_hypo' # (change requires restart)
sys_stat_statements.track='top'
sys_qualstats.sample_rate=1

2、创建插件

create extension sys_qualstats;
create extension sys_hypo;
create extension sys_stat_statements; --插件 sys_stat_statements 由系统自动创建

三、测试案例

1、准备测试数据

create table t1(id int, name text);
INSERT INTO t1 SELECT generate_series(1, 1000000), md5(generate_series(1, 1000000)::text);

2、查询SQL

select * from t1 where id = 100;
id | name
-----+----------------------------------
100 | f899139df5e1059396431415e770c6dd
(1 行记录)

3、查看执行计划

explain analyze Select * from t1 where id = 100;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------
Gather (cost=1000.00..14612.43 rows=1 width=37) (actual time=0.199..45.577 rows=1 loops=1)
Workers Planned: 2
Workers Launched: 2
-> Parallel Seq Scan on t1 (cost=0.00..13612.33 rows=1 width=37) (actual time=11.960..24.969 rows=0 loops=3)
Filter: (id = 100)
Rows Removed by Filter: 333333
Planning Time: 0.041 ms
Execution Time: 45.611 ms
(8 行记录)

4、查看索引建议
new_cost: 创建索引以后的 cost 值
old_cost 无索引情况的 cost 值
ddl_index 创建 index 的 sql 语句
benefit 创建索引后的收益值

test=# \x
扩展显示已打开.
test=# select * from index_recommendation_by_qual;
-[ RECORD 1 ]---+-------------------------------------------
nspname | public
relid | t1
attnames | {id}
possible_types | {bitmap,brin,btree,hash}
execution_count | 1000000
queryid | 6060413669021853650
query | select * from t1 where id = 100;
ddl_index | CREATE INDEX ON public.t1 USING btree (id)
old_cost | 14612.43
new_cost | 8.07
benefit | 99.94 %

5、根据索引建议创建索引

CREATE INDEX ON public.t1 USING btree (id);

6、查看创建完索引后的执行计划

test=# explain analyze Select * from t1 where id = 100;
                                                  QUERY PLAN
---------------------------------------------------------------------------------------------------------------
 Index Scan using t1_id_idx on t1  (cost=0.42..8.44 rows=1 width=37) (actual time=0.021..0.022 rows=1 loops=1)
   Index Cond: (id = 100)
 Planning Time: 0.068 ms
 Execution Time: 0.049 ms
(4 行记录)

7、再次查看索引建议

test=# select * from index_recommendation_by_qual;
nspname | relid | attnames | possible_types | execution_count | queryid | query | ddl_index | old_cost | new_cost | benefit
---------+-------+----------+----------------+-----------------+---------+-------+-----------+----------+----------+---------
(0 行记录)

 

  

标签:插件,cost,t1,sys,索引,调优,qualstats,KingbaseES,id
From: https://www.cnblogs.com/happy-0824/p/16968137.html

相关文章

  • MYSQL-INNODB索引构成详解
    作者:郑啟龙摘要:对于MYSQL的INNODB存储引擎的索引,大家是不陌生的,都能想到是B+树结构,可以加速SQL查询。但对于B+树索引,它到底“长”得什么样子,它具体如何由一个个字节构成......
  • 一步步带你设计MySQL索引数据结构
    前言MySQL的索引是一个非常重要的知识点,也基本上是面试必考的一个技术点,所以非常重要。那你了解MySQL索引的数据结构是怎么样的吗?为什么要采用这样的数据结构?现在化身为M......
  • (17)索引
    oracle索引总结 (javascript:void(0))索引分类1、B树索引 2、位图索引3、单列索引和复合索引4、函数索引 --创建createindex索引名on表名(列名);--组合创建create......
  • MYSQL-INNODB索引构成详解
    作者:郑啟龙摘要:对于MYSQL的INNODB存储引擎的索引,大家是不陌生的,都能想到是B+树结构,可以加速SQL查询。但对于B+树索引,它到底“长”得什么样子,它具体如何由一个个字节构成的,......
  • MongoDb索引
    Mongo索引语法:db.collection.ensureIndex({filed:1});注:1.默认是曾序索引    2.默认索引是用btree组织说明:1代表asc升序索引-1降序子文档创建索引:db.coll......
  • mysql 表增加索引
    1.PRIMARYKEY(主键索引)mysql>ALTERTABLE`table_name`ADDPRIMARYKEY(`column`)2.UNIQUE(唯一索引)mysql>ALTERTABLE`table_name`ADD......
  • Kafka技术专题之「性能调优篇」消息队列服务端出现内存溢出OOM以及相关性能调优实战分
    内存问题本篇文章介绍Kafka处理大文件出现内存溢出java.lang.OutOfMemoryError:Directbuffermemory,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮......
  • 分布式搜索引擎
    DSL查询文档elasticsearch的查询依然是基于JSON风格的DSL来实现的。1.DSL查询分类查询所有:查询出所有数据,一般测试用。例如:match_all全文检索(fulltext)查询:利用分......
  • JVM调优
    0.准备0.1三个属性(吞吐量、延迟、内存)中选择其中两个进行jvm调优,称之为GC调优3选2.吞吐量:用户代码时间/(用户代码执行时间+垃圾回收时间)。是评价垃圾收集器能力的重要......
  • es对日志数据进行索引生命周期管理
    前言在采用ELK分布式日志采集平台的时候,一般都会采用ES来存储采集的日志信息。日志信息一般都是持续增长的,是典型的时序数据。如果不对采集的日志数据做生命周期管理,很容易......