暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss每日一练第19天 | 统计信息、执行计划、垃圾收集等操作

原创 2021-12-24
1118

统计信息

在数据库中,统计信息是优化器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造成执行计划严重劣化,从而导致性能问题。

ANALYZE语句可收集与数据库中表内容相关的统计信息,统计结果存储在系统表 PG_STATISTIC 中。查询优化器会使用这些统计数据,以生成最有效的执行计划。
建议在执行了大批量插入/删除操作后,例行对表或全库执行 ANALYZE 语句更新统计信息。

执行计划

SQL执行计划是一个节点树,显示openGauss执行一条SQL语句时执行的详细步骤。每一个步骤为一个数据库运算符。

使用 EXPLAIN 命令可以查看优化器为每个查询生成的具体执行计划。
EXPLAIN 给每个执行节点都输出一行,显示基本的节点类型和优化器为执行这个节点预计的开销值。

课后作业

1、创建分区表,并用generate_series(1,N)函数对表插入数据

create schema lvzz; create table lvzz.products ( product_id integer not null, product_code integer, product_name char(20), category char(30) ) partition by range(product_id) ( partition p1 values less than(50), partition p2 values less than(100), partition p3 values less than(150), partition p4 values less than(10000) ); insert into lvzz.products values (1, 10, 'one', 'one'),(2, 20, 'two', 'two'),(3, 30, 'three', 'three'); insert into lvzz.products values(generate_series(10, 1000));
复制

Image.png

2、收集表统计信息

select relname, relpages, reltuples from pg_class where relname = 'products'; --使用analyze verbose语句更新统计信息,并输出表的相关信息 analyze verbose lvzz.products; select relname, relpages, reltuples from pg_class where relname = 'products';
复制

Image.png

3、显示简单查询的执行计划;建立索引并显示有索引条件的执行计划

--使用默认的打印格式 set explain_perf_mode=normal; explain select * from lvzz.products;
复制

Image.png

--创建索引 create index products_idx on lvzz.products(product_id); explain select * from lvzz.products where product_id<100;
复制

Image.png

4、更新表数据,并做垃圾收集

update lvzz.products set product_id = product_id + 1 where product_id <100; vacuum (verbose, analyze) lvzz.products;
复制

Image.png

5、清理数据

drop schema lvzz cascade; select * from lvzz.products;
复制

Image.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论