GP DBA基本操作

1、查看队列情况

SELECT * FROM gp_toolkit.gp_resqueue_status;

如果出现了资源占用大于1.1 e+11SQL,则可能存在不合理执行计划的SQL, 基本跑不出来, 库也会很卡。

2、查看用户归属的队列

select * from gp_toolkit.gp_resq_role ;

3、查看某账号下运行中sql

SELECT * from pg_stat_activity  where current_query <> ‘<IDLE>‘ and waiting =‘f‘ and usename = ‘etl_user‘;

所有账号都有权限查看。

Query_start字段就是SQL真正启动时间点

4、等待中sql

SELECT * from pg_stat_activity  where current_query <> ‘<IDLE>‘ and waiting =‘t‘;

5、检查执行时间超长的SQL

执行如下SQL 检查是否有select  * from pg_stat_activity where current_query<>‘<IDLE>‘ and query_start < now() - interval ‘10 mins‘;

6、终止sql

----终止sql的语句, 下语句的数字是procid,可以通过上一页的语句查到:

select pg_cancel_backend(27334);

-----终止sql的同时终止会话。

select pg_terminate_backend(27334);

超级账号才有终止权限, 如:super_user账号

一定要在数据库里终止一个SQL或任务, 因为在BDI界面终止一个外部程序任务事实上SQL没有终止,还继续运行。

7、执行计划:explain  SQL

执行SQL前用explain  SQL 查看执行计划

如果执行计划存在针对很大的表做Broadcast Motion 或Nested Loop步骤则 不合理, 则尝试以下动作:

执行收集表的统计信息语句:ANALYZE 表名;

一般analyze 一天的分区: ANALYZE 表名_1_prt_data_part_20150305;

“_1_prt_”是数据库分区表名固定段。 “data_part_”是我们自动脚本里生成的分区名前缀。

重新看执行计划,如果合理了,则代表源表缺少统计信息导致执行计划不合理。 只有在表的数据量发生大变化时或重来没收集过时需要做一次收集。

8、执行计划:explain  SQL

ANALYZE完源表重新看执行计划,如果还不合理,执行一下set optimizer to on;  更换一个执行计划生成器。

重新生成执行计划。如果合理了,则后续在在SQL前加上:set optimizer to on;  不要所有SQL加这个,因为该特性未发布。

如果还不合理, 则需要优化SQL, 即把SQL由多张表关联拆开。

9、后台运行SQL, 免输入密码

nohup psql -h 10.154.147.130 -d ‘dbname=gpadmin user=etl_user password=etl_pppp‘ -f /home/bdiunivers/aa.sql -L /home/bdiunivers/aa.log &

用psql 命令跑aa.sql文件,如果文件里有多个SQL, 想一个SQL报错后不往下跑, 则在aa.sql 文件的第一行加上下面内容, 行末没有分号       \set ON_ERROR_STOP

10、报内存不足

sql可用内存不够大时,可以用以下方法临时加大。 如选择的表分区数很多可能会报内存不足,可以使用该方法。例如:

SET statement_mem=‘500MB‘;

SELECT * FROM my_big_table WHERE column=‘value‘ ORDER BY id limit 10;

RESET statement_mem;

11、left  join 右表非常庞大

如果以后业务场景中确实存在left join 右表非常庞大,并且关联字段重复值比较高,可以采取以下方式:

1,按照关联字段进行数据打散

2,在会话级别设置以下参数

set max_statement_mem=‘8GB‘

set statement_mem=‘4GB‘

set gp_workfile_per_query=0

12、使用super_user创建外部表的过程:

a. 删除并重建err表。

drop table if exists  masadw .err_ext_表名;

CREATE TABLE masadw.err_ext_表名 (    cmdtime timestamp with time zone,    relname text,    filename text,    linenum integer,    bytenum integer,    errmsg text,    rawdata text,    rawbytes bytea) DISTRIBUTED RANDOMLY;

b.把err表修改owner为etl_user

ALTER TABLE masadw.err_ext_表名 OWNER TO etl_user;

c. 创建外部表:

drop EXTERNAL TABLE if exists masadw.ext_表名;

CREATE EXTERNAL TABLE masadw.ext_表名 (    time_id integer,    area_id integer,    grp_code character varying(50),    cust_id bigint,    usr_id bigint,    svc_code character varying(50)) LOCATION (    ‘gphdfs://hacluster/tmp/zht/NEW_表名.TXT‘) FORMAT ‘text‘ (delimiter E‘‘ null E‘‘ escape E‘OFF‘)ENCODING ‘UTF8‘LOG ERRORS INTO masadw.err_ext_表名 SEGMENT REJECT LIMIT 10 PERCENT;

d.把外部表修改owner为etl_user:

ALTER EXTERNAL TABLE masadw.ext_表名 OWNER TO etl_user;

13、不要创建default分区

不要创建default分区, 更不要把大量数据放到default分区, 因为default分区在每个sql都会扫描。

14、找出需要做vacuum的表

select * from gp_toolkit.gp_bloat_diag ;

这些表需要做空间回收操作

一般vacumm 和analyze一起执行: vacuum analyze 表名

15、找出没有统计信息需要做ANALYZE的表

select ‘ANALYZE ‘||smischema||‘.‘||smitable||‘;‘ from gp_toolkit.gp_stats_missing where smisize = ‘f‘ and smitable like ‘%_1_prt_%‘ and smitable not like ‘err_%‘ and  smitable not like ‘ext_%‘ and smitable like ‘%201503%‘ order by smitable limit 10;

所有存储过程在最后增加GPDB. analyze_partition(表名, 日期)收集一个分区表信息。

16、经常检查数据库状态   gpstate -e

17、经常用nmon命令检查seg节点资源占用率

18、经常检查各机器/data目录 gpssh -f allhosts

19、经常检查各模式下表数量,总共不要超过10万

select schemaname,count(*) from gp_tables group by schemaname order by 2 desc

时间: 2024-10-07 19:41:12

GP DBA基本操作的相关文章

恩墨学院Oracle实战培训开启DBA职业生涯

毫无疑问,当今时代早已经迈入了『数据时代』,数据无处不生.无处不在,也正以前所未有的方式在改变我们的生活. Oracle数据库的地位 而在IT技术领域,数据无疑落地存储在各种各样的数据库之中,在关系型数据库领域,Oracle 数据库是当之无愧的王者,经过40多年的发展,Oracle数据库在RDBMS领域占据了近50%的市场份额,其从业空间无疑是巨大了.下图展示了2015年的IDC调查数据,其中,中国市场Oracle数据库占有率高达56%,高出亚太区52%.全球43.9%的市场占有率. 时至今日,

作为一个新手的Oracle(DBA)学习笔记【转】

一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cmd—>sqlplus “/as sysdba” //以sysdba用户登录,这样可以管理权限,添加用户等 Win+R—cmd—>sqlplus username/password //以指定用户名密码登录 win+R —> cmd —–> sqlplus //按照提示,输入用户名密码 

MySQL DBA及Linux企业集群实战工程师

MySQL DBA及Linux企业集群实战工程师 2015,来一场随时随地的学习之旅 开启我赢职场MySQL学习之旅 不能错过的我赢之旅 任性就是想问就问 谁是你的群聊小伙伴 学习点滴我主宰 名师在线答与问 职业入门--数据库基础知识及安装MySQL MySQL课程介绍 讲师访谈 深入了解什么是数据库 MySQL从万千数据库中脱颖而出 选择学习哪个版本的MySQL 搭建学习MySQL的实验环境 提前熟悉一下MySQL环境 Linux下基于官方YUM源安装MySQL Linux下基于官方源码包包安

Mysql DBA 20天速成教程,DBA大纲

Mysql DBA 20天速成教程 基本知识1.mysql的编译安装2.mysql 第3方存储引擎安装配置方法3.mysql 主流存储引擎(MyISAM/innodb/MEMORY)的特点4.字符串编码知识5.MySQL用户账户管理6.数据备份/数据入导出7.mysql 支持的基本数据类型8.库/表/字段/索引 的创建/修改/删除9.基本sql 语法:select/insert/update/delete,掌握最基本的语法即可,什么inner join,left join的了解就行 mysql的

mysql 的基本操作以及常用命令

基本操作 show databases;use 库名;show tables;create table 表名 (字段设定列表):describe 表名; create database 库名; drop database 库名;drop table 表名: delete from 表名;select * from 表名: 修改新密码 方法一(我常用的) 在终端输入:mysql -u用户名 -p密码use mysql;update user set password=PASSWORD('新密码')

oracle基本操作 转载

ORACLE的简单介绍 ORACLE公司是一家提供综合技术产品.方案.服务的数据库公司 ORACLE数据库设计成可大量存储数据,快速查询数据,保证数据的安全和一致性,跨网络的分布式管理及客户-服务器的配置等. ORACLE SQL语法符合ANSI 1986标准SQL 和数据库交流的命令式语言 SQL*PLUS ORACLE的一种工具, 用来运行SQL和PL/SQL语句 PL/SQL ORACLE的过程化编程语言 一.选择行 1. 简单的SELECT 语句 SELECT [DISTINCT] {*

走向DBA[MSSQL篇] 详解游标

原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. 观点 正因为游标可以将结果集一条条取出处理,所以会增加服务器的负担.再者使用游标的效率远远没有使用默认的结果集效率高,在默认结果集中,从客户端发送到服务器的唯一一个数据包是包含需执行语句的数据包.而在使用服务器游标时,每一个FETCH语句都必须从客户端发送到服务器,然后在服务器中将它解析并编译为执

Oracle数据库基本操作 —— Oracle数据库体系结构介绍、DDL、DCL、DML

一.Oracle数据库介绍 1.基本介绍 Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一. 2.Oracle数据库的体系结构 ①数据库:database Oracle数据库是数据的物理存储.这包括(数据文件ORA或DBF.控制文件.联机日志.参数文件).Oracle数据的概念和其他数据库不一样,这里的数据库是一个操作系统只有一个库.可以看做是Oracle就只有一个

详解Oracle存储结构 掌握基本操作管理

2018.10.14那天我写了Oracle12C 的安装并初步了解了一下Oracle体系结构中数据库和实例.从中我们知道: 数据库是磁盘上数据的集合,位于收集和维护相关信息的数据库服务器上的一个或多个文件中.数据库由各种物理和逻辑结构组成,而表则是数据库中最重要的逻辑结构.表由包含数据的相关行和列组成. 组成数据库的文件主要分为两类:数据库文件和非数据库文件.两者之间的区别在于存储何种数据.数据库文件包含数据和元数据,非数据库文件则包含初始参数和日志记录信息等.数据库文件对于每时每刻正在进行的数