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
 
 

GP DBA基本操作的更多相关文章

  1. 基于USB网卡适配器劫持DHCP Server嗅探Windows NTLM Hash密码

    catalogue . DHCP.WPAD工作过程 . python Responder . USB host/client adapter(USB Armory): 包含DHCP Server . ...

  2. MongoDB【第三篇】MongoDB基本操作

    MongoDB的基本操作包括文档的创建.删除.和更新 文档插入 1.插入 #查看当前都有哪些数据库 > show dbs; local 0.000GB tim 0.000GB #使用 tim数据 ...

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

    Mysql DBA 20天速成教程 基本知识1.mysql的编译安装2.mysql 第3方存储引擎安装配置方法3.mysql 主流存储引擎(MyISAM/innodb/MEMORY)的特点4.字符串编 ...

  4. 走向DBA[MSSQL篇] 详解游标

    原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...

  5. MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题

    1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...

  6. Django--ORM基本操作

    一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 pr ...

  7. ORACLE数据库 DBA常用知识

    <常用命令参考> 个系统变量值 SQL> show user --显示当前连接用户 SQL> show error --显示错误 SQL> set heading off ...

  8. MYSQL基本操作(上)

    很久之前,就想做个Mysql的小结,毕竟数据库知识是软件研发的基本技能,这里话不多说,开始总结一波. 数据库基本概念 数据库为高效的存储和处理数据的介质(主要分为磁盘和内存两种),一般关系型数据库存储 ...

  9. linux的基本操作(mysql 的基本操作)

    Mysql 的基本操作 在前面两个章节中已经介绍过MySQL的安装了,但是光会安装还不够,还需要会一些基本的相关操作.当然了,关于MySQL的内容也是非常多的,只不过对于linux系统管理员来讲,一些 ...

随机推荐

  1. text-encoding正确使用姿势

    蓝牙打印,需要转字符串为gb2312到uint8array.果断使用了一把text-encoding,始终不对. https://github.com/inexorabletash/text-enco ...

  2. Erlang 和 Elixir的差异

    原文: http://elixir-lang.org/crash-course.html 函数调用 Elixir允许你调用函数的时候省略括号, Erlang不行. Erlang Elixir some ...

  3. 集合Map映射(使用xml文件)

    Hibernate允许我们将Map元素与RDBMS进行映射. 我们知道,List和Map是基于索引的集合. 在map的情况下,索引列作为键,元素列用作值. 使用xml文件在集合映射中映射Map的示例 ...

  4. python 面向对象类成员(字段 方法 属性)

    一.字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段属于对象 静态字段属于类 class Province: # 静态字段 countr ...

  5. 补装老版本的Java SE

    到oracle注册账号下载bin文件 在bin文件下载目录打开终端复制下面到命令 # chmod +x jdk-6u21-linux-i586.bin 注意版本不同,比如我这次下载到是6u45 chm ...

  6. 关于Linq to Sql 中的left join 中defaultifempty的相关注意事项

    在使用Linq to Sql的时候,进行两个表的左连接的时候要注意defaultifempty的使用,这个函数本来的意思即是:如果为空则使用默认值代替,默认值为 NULL ,当然也可以使用defaul ...

  7. WPF-数据转换

    有时我们展现的数据,需要进行转换,比如如果一个学生的成绩过了60,我们显示一个Pass的图片. XAML: <Window x:Class="DeepXAML.MainWindow&q ...

  8. SlidingMenu官方实例分析4——AttachExample

    AttachExample这个类没有继承BaseActivity,而是FragmentActivity,写到这好像感悟到了 为什么官方现在都推荐使用Fragment而不是Activity,因为Frag ...

  9. GoogleMap-------Google Play services SDK的下载和配置

    前言:在android开发项目中当要使用GoogleMap需要有Google Maps Android API的支持,而他包含在了Google Play services SDK中,所以本文将介绍如何 ...

  10. 让footer始终位于页面的最底部

    http://www.cnblogs.com/wudingfeng/archive/2012/06/29/2569997.html html代码: <div class="contai ...