1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 金仓数据库 KingbaseES 插件参考手册 sys_qualstats

金仓数据库 KingbaseES 插件参考手册 sys_qualstats

时间:2018-10-24 14:56:39

相关推荐

金仓数据库 KingbaseES 插件参考手册 sys_qualstats

88.sys_qualstats

88.1.插件sys_qualstats简介

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

插件名为 sys_qualstats

插件版本 V1.0.9

88.2.插件sys_qualstats加载方式

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

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

sys_qualstats 插件依赖 sys_stat_statements 插件

进入 KingBase 创建插件

create extension sys_qualstats;create extension sys_stat_statements;

88.3.插件sys_qualstats的参数配置

可以在 kingbase.conf 中配置以下信息:

sys_qualstats.enable(boolen,default true):是否应该启用 sys_qualstats。

sys_qualstats.max默认为 1000,要保存的条目数。

sys_qualstats.track_pg_catalog:默认为 false,确定是否跟踪 sys_catalog 表上的谓词。

sys_qualstats.resolve_oids:默认为 false。确定在谓词收集期间,对象的实际名称是否应该和 OID 一起存储,开销是不可忽视的,因为每个条目将占用616个字节而不是168个字节。

sys_qualstats.track_constants:默认为false,是否单独跟踪每个常量值。如果为 true,则每个谓词的每个新值都会产生一个新条目。

sys_qualstats.sample_rate:默认为 -1,应该被采样的查询比例。1 表示对每个查询进行采样,0 表示基本禁用该功能, -1 表示自动调整。

sys_stat_statements.track='top'

88.4.插件sys_qualstats的使用方法

88.4.1.sys_qualstats

返回每个限定符的计数

userid: 执行查询的用户 oid

dbid: 已经执行查询的数据库的 oid

lrelid, lattnum: 如果存在左侧 var,表示左侧 var 的关系和属性编号的 oid

rrelid, rattnum: 如果存在右侧 var,表示右侧 var 的关系和属性编号的 oid

opno:表达式中使用运算符的 oid

qualid父 AND 表达式的规范化标识符,该标识符的计算不包括常量

qualnodeid简单谓词的规范标识符,该标识符的计算包括常量

uniquequalid简单谓词的唯一标识符,该标识符计算包括常量

parenthash: 父 AND 表达式的 hash 值

nbfiltered此谓词丢弃的元组数

nodehash: 谓词 hash

count: 此谓词出现的总次数

queryid: 如果安装了 sys_stat_statements,表示此查询的 queryid,用来追溯查询的sql

constvalue: 右侧常量字符串表示形式,截断为 80 个字符

execution_count 表示这个语句执行了多少次

eval_type评估类型,f 表示扫描后评估的谓词,i 表示索引谓词

test=# select * from sys_qualstats;-[ RECORD 1 ]-----+---------------------userid | 10dbid | 16249lrelid | 17227lattnum | 1opno | 96rrelid |rattnum |qualid | 570210875uniquequalid| 420950748qualnodeid | 271185uniquequalnodeid | 2320559360occurences | 1execution_count | 3nbfiltered | 2constant_position | 28queryid | -3480922324520548892constvalue | 100::integereval_type | f

88.4.2.sys_qualstats_reset()

重置内部计数器并清除每个遇到的 qual(谓词)

test=# select * from sys_qualstats_reset();sys_qualstats_reset--------------------(1 row)

88.4.3.sys_qualstats_example_query

返回给定 queryid 的 SQL 语句

test=# select * from sys_qualstats_example_query(-3480922324520548892);sys_qualstats_example_query---------------------------------------------------select * from t1 where id = 100 and name = 'abc';(1 row)

88.4.4.sys_qualstats_names

返回所有存储的 SQL 语句

test=# select * from sys_qualstats_names();-[ RECORD 1 ]-----+---------------------userid | 10dbid | 16249lrelid | 17227lattnum | 1opno | 96rrelid |rattnum |qualid | 570210875uniquequalid| 420950748qualnodeid | 271185uniquequalnodeid | 2320559360occurences | 1execution_count | 3nbfiltered | 2constant_position | 28queryid | -3480922324520548892constvalue | 100::integereval_type | frolname |dbname |lrelname|lattname|opname |rrelname|rattname|

88.4.5.sys_qualstats_example_queries

返回所有存储的查询 sql

test=# select query from sys_qualstats_example_queries();query---------------------------------------------------select * from t1 where id = 100;select * from t1 where id = 100 and name = 'abc';select * from t1 where id = 100 and age = 300;(3 rows)

88.4.6.sys_qualstats_pretty

显示 sys_qualstats 视图中每个属性的可读形式

test=# select * from sys_qualstats_pretty;left_schema | left_table | left_column | operator | right_schema | right_table | right_column | occurences | execution_count | nbfiltered-------------+------------+-------------+--------------+--------------+-------------+--------------+------------+-----------------+------------public| t1 | age | pg_catalog.= | | | |1 |3 |3public| t1 | id| pg_catalog.= | | | |4 | 12 |9public| t1 | name | pg_catalog.= | | | |1 |3 |2

88.4.7.sys_qualstats_all

对每个属性/运算符的计数求和

test=# select * from sys_qualstats_all;dbid | relid | userid | queryid | attnums | opno | qualid | occurences | execution_count | nbfiltered | qualnodeid-------+-------+--------+----------------------+---------+------+------------+------------+-----------------+------------+------------16249 | 17227 |10 | -3480922324520548892 | {1}| 96 | 570210875 |1 |3 |2 | 57021087516249 | 17227 |10 | -3480922324520548892 | {3}| 98 | 570210875 |1 |3 |2 | 57021087516249 | 17227 |10 | 6307461809864648304 | {1,2} | 96 | 2519621490 |2 |6 |6 | 251962149016249 | 17227 |10 | 6828434147671954623 | {1}| 96 | |2 |6 |4 | 271185

88.4.8.sys_qualstats_indexes

查找不存在索引的属性,并给出需要创建索引建议

test=# select * from sys_qualstats_indexes;relid | attnames |possible_types| execution_count-------+-----------+--------------------------+-----------------t1 | {age,id} | {brin,btree,hash} |6t1 | {id}| {brin,btree,hash} |6t1 | {id,name} | {brin,btree,hash,spgist} |3

88.4.9.sys_qualstats_by_query

仅返回形式为 VAR OPERATOR CONSTANT 的谓词

test=# select * from sys_qualstats_by_query;-[ RECORD 1 ]----+-------------------------------------------------------------------------uniquequalnodeid | 41333584dbid | 16249userid | 10qualnodeid | 1621559404occurences | 1execution_count | 9nbfiltered | 0queryid| -6920971673199143593constvalues| {2::integer,2::integer}quals | {"(16457,1,523,i)","(16457,1,525,i)"}

88.4.10.使用索引建议

88.4.10.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

88.4.10.2.创建插件

create extension sys_qualstats;create extension sys_stat_statements;create extension sys_hypo;

88.4.10.3.示例

88.4.10.3.1.准备测试数据

create table t1(id int, name text);INSERT INTO t1 SELECT (random() * 1000000)::int, md5(g::text) FROM generate_series(1, 1000000) g;Select * from t1 where id = 100;id |name-----+----------------------------------100 | 71735fbd796ae9e347ad82f208f1232b100 | 4fea58f776ef5d6e22156e08c2191b09100 | 177848a70c96523b9c7a18dae7f9631d(3 rows)

88.4.10.3.2.查看执行计划

explain analyze Select * from t1 where id = 100;QUERY PLAN-----------------------------------------------------------Gather (cost=1000.00..15375.79 rows=5292 width=36) (actual time=18.471..183.579 rows=3 loops=1)Workers Planned: 2Workers Launched: 0-> Parallel Seq Scan on t1 (cost=0.00..13846.59 rows=2205 width=36) (actual time=18.043..183.089 rows=3loops=1)Filter: (id = 100)Rows Removed by Filter: 999997Planning Time: 0.134 msExecution Time: 183.658 ms(8 rows)

88.4.10.3.3.查看索引建议

new_cost:创建索引以后的 cost 值

old_cost无索引情况的 cost 值

ddl_index创建 index 的sql 语句

benefit创建索引后的收益值

select * from index_recommendation_by_qual;-[ RECORD 1 ]---+-----------------------------------------nspname | publicrelid | t1attnames | {id}possible_types | {brin,btree,hash}execution_count | 1000000queryid | -8700169081888605904query | Select * from t1 where id = 100;ddl_index | CREATE INDEX ON public.t1 USING btree (id)old_cost | 15375.79new_cost | 7864.65benefit | 48.85 %maintenece_cost | 95.000000

88.4.10.4.根据索引建议创建索引

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

88.4.10.5.查看创建完索引后的执行计划

explain analyze Select * from t1 where id = 100;QUERY PLAN--------------------------------------------------------Index Scan using t1_id_idx on t1 (cost=0.42..12.46 rows=2 width=37) (actual time=0.053..0.060 rows=2 loops=1)Index Cond: (id = 100)Planning Time: 0.171 msExecution Time: 0.165 ms(4 rows)

88.5.插件sys_qualstats卸载方法¶

进入 Kingbase 创建插件

drop extension sys_qualstats ;drop extension sys_hypo ;

88.6.插件sys_qualstats升级方法

sys_qualstats扩展插件通常随着KingbaseES安装包一并升级。通常情况下用户无须单独升级些插件。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。