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

openGauss每日一练第19天|openGauss收集统计信息、打印执行计划、垃圾收集和checkpoint

原创 梓潮 2021-12-19
502

本次课学习的内容是openGauss收集统计信息、打印执行计划、垃圾收集和checkpoint。

先进入实训环境,输入su - omm命令和密码连接openGauss。

root@modb:~# 
root@modb:~# su - omm
omm@modb:~$ gsql -r
gsql ((openGauss 2.0.0 build 78689da9) compiled at 2021-03-31 21:03:52 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

作业打卡

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

omm=# create table t1
omm-# (t_id int,
omm(# t_name char(30)
omm(# )
omm-# partition by range(t_id)
omm-# (    
omm(# partition t1_0 values less than(50),
omm(# partition t1_1 values less than(200),
omm(# partition t1_2 values less than(500),
omm(# partition t1_3 values less than(800)
omm(# );
CREATE TABLE
omm=# insert into t1 values(generate_series(10,799));
INSERT 0 790

2、收集表统计信息

omm=# select relname, relpages, reltuples from pg_class where relname = 't1';              
relname | relpages | reltuples
---------+----------+-----------
t1     |       0 |         0
(1 row)
omm=# analyze VERBOSE t1;
INFO: analyzing "public.t1"(gaussdb pid=1)
INFO: ANALYZE INFO : "t1": scanned 1 of 1 pages, containing 40 live rows and 123 dead rows; 40 rows in sample, 40 estimated total rows(gaussdb pid=1)
INFO: ANALYZE INFO : "t1": scanned 4 of 4 pages, containing 150 live rows and 450 dead rows; 150 rows in sample, 150 estimated total rows(gaussdb pid=1)
INFO: ANALYZE INFO : "t1": scanned 7 of 7 pages, containing 300 live rows and 900 dead rows; 300 rows in sample, 300 estimated total rows(gaussdb pid=1)
INFO: ANALYZE INFO : "t1": scanned 7 of 7 pages, containing 300 live rows and 900 dead rows; 300 rows in sample, 300 estimated total rows(gaussdb pid=1)
ANALYZE
omm=# select relname, relpages, reltuples from pg_class where relname = 't1';  
relname | relpages | reltuples
---------+----------+-----------
t1     |       19 |       790

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

omm=# EXPLAIN SELECT * FROM t1;                    
                              QUERY PLAN                                
-------------------------------------------------------------------------
Partition Iterator (cost=0.00..26.90 rows=790 width=128)
  Iterations: 4
  -> Partitioned Seq Scan on t1 (cost=0.00..26.90 rows=790 width=128)
        Selected Partitions: 1..4
(4 rows)
omm=# create index t_id_index on t1(t_id) local;
CREATE INDEX
omm=# explain select * from t1 where t_id<200;
                                        QUERY PLAN                                        
--------------------------------------------------------------------------------------------
Partition Iterator (cost=0.00..13.59 rows=191 width=128)
  Iterations: 2
  -> Partitioned Index Scan using t_id_index on t1 (cost=0.00..13.59 rows=191 width=128)
        Index Cond: (t_id < 200)
        Selected Partitions: 1..2
(5 rows)

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

omm=# update t1 set t_id=t_id+50 where t_id <500;
UPDATE 490
omm=# vacuum (verbose,analyze) t1;
INFO: vacuuming "public.t1"(gaussdb pid=1)
INFO: scanned index "t_id_index" to remove 123 row versions(gaussdb pid=1)
DETAIL: CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: index "t_id_index" now contains 40 row versions in 2 pages(gaussdb pid=1)
DETAIL: 0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: "t1": found 123 removable, 40 nonremovable row versions in 1 out of 1 pages(gaussdb pid=1)
DETAIL: 40 dead row versions cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: vacuuming "public.t1"(gaussdb pid=1)
INFO: scanned index "t_id_index" to remove 450 row versions(gaussdb pid=1)
DETAIL: CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: index "t_id_index" now contains 290 row versions in 2 pages(gaussdb pid=1)
DETAIL: 0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: "t1": found 450 removable, 290 nonremovable row versions in 4 out of 4 pages(gaussdb pid=1)
DETAIL: 150 dead row versions cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: vacuuming "public.t1"(gaussdb pid=1)
INFO: scanned index "t_id_index" to remove 900 row versions(gaussdb pid=1)
DETAIL: CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: index "t_id_index" now contains 600 row versions in 5 pages(gaussdb pid=1)
DETAIL: 0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: "t1": found 900 removable, 600 nonremovable row versions in 8 out of 8 pages(gaussdb pid=1)
DETAIL: 300 dead row versions cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: vacuuming "public.t1"(gaussdb pid=1)
INFO: scanned index "t_id_index" to remove 900 row versions(gaussdb pid=1)
DETAIL: CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: index "t_id_index" now contains 350 row versions in 2 pages(gaussdb pid=1)
DETAIL: 0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: "t1": found 900 removable, 350 nonremovable row versions in 7 out of 7 pages(gaussdb pid=1)
DETAIL: 0 dead row versions cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: analyzing "public.t1"(gaussdb pid=1)
INFO: ANALYZE INFO : "t1": scanned 1 of 1 pages, containing 0 live rows and 40 dead rows; 0 rows in sample, 0 estimated total rows(gaussdb pid=1)
INFO: ANALYZE INFO : "t1": scanned 4 of 4 pages, containing 140 live rows and 150 dead rows; 140 rows in sample, 140 estimated total rows(gaussdb pid=1)
INFO: ANALYZE INFO : "t1": scanned 8 of 8 pages, containing 300 live rows and 300 dead rows; 300 rows in sample, 300 estimated total rows(gaussdb pid=1)
INFO: ANALYZE INFO : "t1": scanned 7 of 7 pages, containing 350 live rows and 0 dead rows; 350 rows in sample, 350 estimated total rows(gaussdb pid=1)
VACUUM

5、清理数据

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

评论