GAUSSDB相关笔记

gaussdb知识点记录

今天,总结一下gaussdb的相关内容吧,也是在开发过程中遇到的,华为运维人员来解决的,我顺便拿来分享一下。以下内容是关于gaussdb的相关命令和优化。

一、行存表与列存表

表的存储类型是表定义设计的第一步,客户业务类型是决定表的存储类型的主要因素。
表的存储类型及场景

存储类型适用场景
行存表a.点查询(返回记录少,基于索引的简单查询) b.增、删、改、操作较多的场景
列存表a.统计分析类查询(关联、分组操作较多的场景) b.即席查询(查询条件不确定,行存表扫描难以适用索引)
我在解决使用gaussdb的时候,发现查询表的时候,运行的特别慢,
最后使用\d+命令时(\d+ : 列出所有的表、视图和索引)发现明明才几万条数据的表占用空间竟然达到了20G,而且我们表字段也只有十几个,这明显不符合规则。
最后了解到,由于我们创建的是列存表,列存表每次往表里插入数据的时候最好能达到6w条的数据量。
由于我们每次插入是500条的数据量,其实500条的数据量也是占用了6w条数据的空间,所以导致明明表的总条数不多,但占用空间却很大。
最后我们把往表里插入的条数增多,就把该问题解决了。
同时也把有的表改为行存表。
总结:
创建表的时候要加索引,以免造成数据倾斜。
列存表:每次写入的时候,最好每次达到6w条左右的数据量。
行存表:少量多次写入,建议建成行存表。

二、常用命令

1.查看视图的具体信息

命令:

#查看所有视图的具体信息
\d+ 
#查看某一视图的具体信息
\d+ table_name

2.查询库的已用空间

查询库的已用空间大小:

#其中postgres为数据库名
select pg_size_pretty(pg_database_size('postgres'));

3.查询正在运行的sql

#查看pg_stat_activity的信息:
\d pg_stat_activity;

#查询正在运行的sql及ID
select id,query FROM pg_stat_activity;

#如果运行的sql时间过长,可清除正在运行的SQL
select pg_terminate_backend(ID);

4.清理表空间

大量的更新和删除操作,会产生大量的磁盘页面碎片,从而逐渐降低查询的效率。VACUUM FULL可以将磁盘页面碎片恢复并交还操作系统。

# VACUUM FULL会清理库中所有表的脏数据:
VACUUM FULL;

#VACUUM FULL table_name;可清理具体某一表的脏数据
VACUUM FULL  table_name;


注意的是:清理表空间,是清除表中的脏数据,越小的表,清理的越快。
越大的表清理的越慢。
如果小表清理的特别慢,説明这张小表在被别的操作在占用。
这时候需要用系统视图查询,看是否有别的操作。
清理表空间时,最好不要有对表的任何操作,否则会清理的特别慢 

5.copy命令

有时候我们会把文件导入表中,这时候就需要用到copy命令了,下边的命令针对csv文件,csv文件用逗号分隔的。

\COPY tmp_value FROM '/home/lnsoft/sql/test.csv' delimiter ',' csv;

总结

关于gaussdb的相关命令就写到这,后续在遇到问题,在写出来分享一下吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值