Deepgreen & Greenplum DBA小白普及课之一(一般问题解答)

原文链接

摘要: 不积跬步无以至千里,要想成为一名合格的数据库管理员,首先应该具备扎实的基础知识及问题处理能力。本文参考Pivotal官方FAQ,对一些在使用和管理Deepgreen & Greenplum时经常会遇到的普通问题进行讲解。

不积跬步无以至千里,要想成为一名合格的数据库管理员,首先应该具备扎实的基础知识及问题处理能力。本文参考Pivotal官方FAQ,对一些在使用和管理Deepgreen & Greenplum时经常会遇到的普通问题进行解答。希望对大家有所帮助,如果有朋友有更多的问题分享,请留言,我将一并整理。

下面单刀直入,开始问题浏览及解决思路梳理:

1.如何检查一张表的分区策略?

测试表:region

表的详细描述信息可以展示其分区策略:Distributed by: (r_regionkey)

tpch=# \d region
                             Append-Only Columnar Table "public.region"
   Column    |          Type          |                          Modifiers
-------------+------------------------+--------------------------------------------------------------
 r_regionkey | integer                | not null default nextval(‘region_r_regionkey_seq‘::regclass)
 r_name      | character(25)          |
 r_comment   | character varying(152) |
Checksum: t
Distributed by: (r_regionkey)

2.如何查看数据库中有多少用户模式?

在psql中使用\dn进行查看

tpch=# \dn
       List of schemas
        Name        |  Owner
--------------------+---------
 gp_toolkit         | dgadmin
 information_schema | dgadmin
 pg_aoseg           | dgadmin
 pg_bitmapindex     | dgadmin
 pg_catalog         | dgadmin
 pg_toast           | dgadmin
 public             | dgadmin
(7 rows)

3.如何查看我的表上一次ANALYZE的时间?

测试表:region

通过pg_stat_operations视图可以查看任何对象的所有操作

tpch=# select objname,actionname,statime from pg_stat_operations  where objname like ‘region‘;
 objname | actionname |            statime
---------+------------+-------------------------------
 region  | CREATE     | 2017-05-21 00:32:28.672208+08
 region  | ANALYZE    | 2017-06-30 06:55:57.658525+08
(2 rows)

4.如何查看表的大小?

测试表:customer,在模式public下

查看表的大小:
tpch=# select pg_size_pretty(pg_relation_size(‘public.customer‘));
 pg_size_pretty
----------------
 122 MB
(1 row)
查看表和索引的大小:
tpch=# select pg_size_pretty(pg_total_relation_size(‘public.customer‘));
 pg_size_pretty
----------------
 155 MB
(1 row)

5.如何查看模式(schema)大小?

测试模式:public,查询时只需将下面where条件schemaname=后的public替换成你要查询的schema名称即可。

tpch=# select schemaname ,round(sum(pg_total_relation_size(schemaname||‘.‘||tablename))/1024/1024) "Size_MB" from pg_tables where schemaname=‘public‘ group by 1;
 schemaname | Size_MB
------------+---------
 public     |   10698
(1 row)

6.如何查看数据库大小?

测试数据库:tpch,你查询时只需要替换括号里的tpch为你需要的数据库即可

tpch=# select pg_size_pretty(pg_database_size(‘tpch‘));
 pg_size_pretty
----------------
 10 GB
(1 row)

查看所有数据库的大小:

tpch=# select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;
  datname  | pg_size_pretty
-----------+----------------
 tpch      | 10 GB
 postgres  | 111 MB
 tpch_1g   | 1100 MB
 template1 | 29 MB
 template0 | 27 MB
(5 rows)

7.如何查看分区表大小(包括分区和索引)?

测试表:employee_daily

select schemaname,tablename,round(sum(pg_total_relation_size(schemaname "" ‘.‘ "" partitiontablename))/1024/1024) "MB"
from pg_partitions where tablename=‘employee_daily‘ group by 1,2;
schemaname " tablename      " MB
-----------+----------------+-----
public     " employee_daily " 254

8.如何查看修改表的语法帮助?

在psql中使用【\h +待查语法】:

tpch=# \h alter table
Command:     ALTER TABLE
Description: change the definition of a table
Syntax:
ALTER TABLE [ONLY] name RENAME [COLUMN] column TO new_column

ALTER TABLE name RENAME TO new_name

ALTER TABLE name SET SCHEMA new_schema

ALTER TABLE [ONLY] name SET
     DISTRIBUTED BY (column, [ ... ] )
   | DISTRIBUTED RANDOMLY
   | WITH (REORGANIZE=true|false)

ALTER TABLE [ONLY] name action [, ... ]

ALTER TABLE name
   [ ALTER PARTITION { partition_name | FOR (RANK(number))
                     | FOR (value) } partition_action [...] ]
   partition_action

where action is one of:
  ADD [COLUMN] column_name type
      [ ENCODING ( storage_directive [,...] ) ]
      [column_constraint [ ... ]]
  DROP [COLUMN] column [RESTRICT | CASCADE]
  ALTER [COLUMN] column TYPE type [USING expression]
  ALTER [COLUMN] column SET DEFAULT expression
  ALTER [COLUMN] column DROP DEFAULT
  ALTER [COLUMN] column { SET | DROP } NOT NULL
  ALTER [COLUMN] column SET STATISTICS integer
  ADD table_constraint
  DROP CONSTRAINT constraint_name [RESTRICT | CASCADE]
  DISABLE TRIGGER [trigger_name | ALL | USER]

tpch=# \h create index
Command:     CREATE INDEX
Description: define a new index
Syntax:
CREATE [UNIQUE] INDEX name ON table
       [USING btree|bitmap|gist]
       ( {column | (expression)} [opclass] [, ...] )
       [ WITH ( FILLFACTOR = value ) ]
       [TABLESPACE tablespace]
       [WHERE predicate]

9.如何从Master主机连接到Master或者Segment实例的系统模式?

[email protected]:~$ PGOPTIONS=‘-c gp_session_role=utility‘ psql -p 25432 -h flash -d postgres
psql (8.2.15)
Type "help" for help.
postgres=# \q

其中-p后面接master或者segment的端口号,-h后面接对应的master或者segment主机名,-d后面接数据库名

10.从哪里看数据库日志信息?

Master主机:

Master节点的数据库日志存在$MASTER_DATA_DIRECTORY/pg_log/目录下,文件名根据数据库的log_filename参数生成。
[email protected]:~$ gpconfig -s log_filename
Values on all segments are consistent
GUC          : log_filename
Master  value: gpdb-%Y-%m-%d_%H%M%S.csv
Segment value: gpdb-%Y-%m-%d_%H%M%S.csv
     默认安装的日志文件格式为:$MASTER_DATA_DIRECTORY/pg_log/gpdb-yyyy-mm-dd_000000.csv
     gpstart\gpstop\gpstate和另外utility生成的日志存储在:~gpadmin/gpAdminLogs/目录下

Segment主机:

     Primary Segment日志位置用下面语句查询:select dbid,hostname,datadir||‘/pg_log‘ from gp_configuration where content not in (-1) and isprimary is true;
     Mirror Segment日志位置用下面语句查询:Primary Segment日志位置用下面语句查询:select dbid,hostname,datadir||‘/pg_log‘ from gp_configuration where content not in (-1) and isprimary is false;

11.如何查看函数列表?

在psql界面执行:\df schemaname.functionname (schemaname and function name support wildcard characters)

例如:

tpch=# \df pub*.*test*
                       List of functions
 Schema "   Name      " Result data type " Argument data types
--------+-------------+------------------+---------------------
 public " bugtest     " integer          "
 public " test        " boolean          " integer
 public " test        " void             "
(3 rows)

12.如何检查数据库运行状态是否正常?

gpstate是数据库状态检查的一个组件,可以使用gpstate -Q快速查看数据库状态。

[email protected]:/dgdata/primary/dg0/pg_log$ gpstate -Q
20170701:07:09:37:027224 gpstate:flash:dgadmin-[INFO]:-Starting gpstate with args: -Q
20170701:07:09:37:027224 gpstate:flash:dgadmin-[INFO]:-local Greenplum Version: ‘postgres (Greenplum Database) 4.3.99.00 build Deepgreen DB‘
20170701:07:09:37:027224 gpstate:flash:dgadmin-[INFO]:-master Greenplum Version: ‘PostgreSQL 8.2.15 (Greenplum Database 4.3.99.00 build Deepgreen DB) on x86_64-unknown-linux-gnu, compiled by GCC gcc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4 compiled on May 18 2017 05:19:19‘
20170701:07:09:37:027224 gpstate:flash:dgadmin-[INFO]:-Obtaining Segment details from master...
20170701:07:09:37:027224 gpstate:flash:dgadmin-[INFO]:--Quick Greenplum database status from Master instance only
20170701:07:09:37:027224 gpstate:flash:dgadmin-[INFO]:-----------------------------------------------------------
20170701:07:09:37:027224 gpstate:flash:dgadmin-[INFO]:-# of up segments, from configuration table     = 4
20170701:07:09:37:027224 gpstate:flash:dgadmin-[INFO]:-----------------------------------------------------------

13.如何查看数据库总列表?

在psql界面执行\l (英文字母L的小写):

postgres=# \l
                  List of databases
   Name    |  Owner  | Encoding |  Access privileges
-----------+---------+----------+---------------------
 postgres  | dgadmin | UTF8     |
 template0 | dgadmin | UTF8     | =c/dgadmin
                                : dgadmin=CTc/dgadmin
 template1 | dgadmin | UTF8     | =c/dgadmin
                                : dgadmin=CTc/dgadmin
 tpch      | dgadmin | UTF8     |
 tpch_1g   | dgadmin | UTF8     |
(5 rows)

也可以通过下面sql查询更详细的信息:

postgres=# select * from pg_database;
  datname  | datdba | encoding | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | dattablespace | datconfig |              datacl
-----------+--------+----------+---------------+--------------+--------------+---------------+--------------+---------------+-----------+----------------------------------
 tpch      |     10 |        6 | f             | t            |           -1 |         10898 |          888 |          1663 |           |
 postgres  |     10 |        6 | t             | t            |           -1 |         10898 |          888 |          1663 |           |
 tpch_1g   |     10 |        6 | f             | t            |           -1 |         10898 |          888 |          1663 |           |
 template1 |     10 |        6 | t             | t            |           -1 |         10898 |          888 |          1663 |           | {=c/dgadmin,dgadmin=CTc/dgadmin}
 template0 |     10 |        6 | t             | f            |           -1 |         10898 |          888 |          1663 |           | {=c/dgadmin,dgadmin=CTc/dgadmin}
(5 rows)

14.如何查看当前你的连接用户是谁?

原文链接

时间: 2024-10-16 21:41:24

Deepgreen & Greenplum DBA小白普及课之一(一般问题解答)的相关文章

保险小白普及知识

二.保险小白普及知识 保险解决的是发生概率小,但带来的经济损失大,导致大家无法承受,这是保险才能发挥最大作用.如果你每年收入是10+万,你花5000元买个万能险附加中级保额是10万,那真出事这10万阵够用吗?所以这钱花的比较冤,保险保额最起码是年收入的5-10倍,一旦丧失工作能力,最起码可以保证5年的生活所需. 1. 理赔和保险公司大小没有任何关系?  每个保险公司都要有自己的特色? 答:中国的保险公司是一个垄断行业,保险公司数量庞大,但大家经常听到的只有几个,因为他们做的广告特别多.其他的保险

小白普及:云主机与传统服务器的区别

云计算这股风自横扫IT界,势头越来越猛烈,在各细分领域的应用也备受关注,云主机是云计算技术为支撑落地比较成熟的产品,当前云主机市场可谓群雄角逐厮杀激烈,大家比较熟知的品牌就有微软云,华为云.亚马逊云.腾讯云,百度云.天翼云,还有老牌西部数据等等.相信大多数用户,像IT运维以及各大站长和我一样,关注的是更实质的东西,究竟云主机是不是真的好用,是否能满足各种业务模式和需求.在这里我就以初步试水云主机经验,给大家做下浅析. 首先,我们来明确云主机是什么,说得神乎其神,可看不见摸不着以至很多人不理解它的

小试牛刀chrome来调试APP

引子 不论是web端还是app端,对于前端页面的性能优化方法都是一样的,思路也是通用的.在<前端页面性能测试普及课>中已经详细讲解过了,这里不再阐述,感兴趣的可以看看,地址:http://edu.51cto.com/course/9202.html 以下说的app调试对于里面的webview的优化也是一样的. 准备步骤 手机root 打开开发者模式 打开usb调试 使用数据线连接电脑 本地电脑安装好chrome 调试webview网页 启动chrome,并输入chrome://inspect

Python中的绝对路径和相对路径

大牛们应该对路径都很了解了,这篇文章主要给像我这样的入门小白普及常识用的,啊哈 下面的路径介绍针对windows,其他平台的暂时不是很了解. 在编写的py文件中打开文件的时候经常见到下面其中路径的表达方式: [python] view plain copy open('aaa.txt') open('/data/bbb.txt') open('D:\\user\\ccc.txt') 这三种表达式里面,前两个都是相对路径,第三个则是绝对路径.绝对路径比较好理解,就是最完整的路径,相对路径的相对则是

浅谈MITM攻击之信息窃取(解密315晚会报道的免费WIFI窃取个人信息)

前言 所谓的MITM攻击(即中间人攻击),简而言之就是第三者通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方毫无感知.这个很早就成为黑客常用的手段,一会聊的315晚会窃取个人信息只是MITM最基础入门的一种攻击方式.大牛绕道,此篇小白普及篇. 目录 一.事件回顾 二.什么是MITM攻击 三.MITM攻击-信息窃取实战 四.软件测试的反思 原创,如转载还请保留出处与作者姓名Findyou,谢谢! 一.事件回顾 2016年315晚会,现场提供了一个免费WIFI,给现场观众连接.当观众玩

务虚的全栈式开发

当你想开发一款APP时候,一般由如下三种选择 一:自己开发客户端和服务器所有部分 1:客户端(APP) 1.1 本地开发:  IOS用OC/Swift开发, Android用Java开发; 需要调用第三方的lib(C/C++)时候:如果调用的函数过多,推荐用Swig(尤其是Java调用C/C++),可以省去很多麻烦:当然了多了一层函数调用,性能其实差不了多少. 1.2 混合开发: 对于性能要求不怎么高的APP(除了游戏/音视频):大部分可以用混合开发(主要是JS)同时支持IOS和Android,

在Mac上搭建React Native开发环境

概述 前面我们介绍过在window环境下开发React Native项目,今天说说怎么在mac上搭建一个RN的开发环境. 配置mac开发环境 基本环境安装 1.先安装Homebrew:用于安装NodeJS和其他工具. 注:Homebrew详解,对这个比较了解的略过,我也是用mac没多久,这里给小白普及下. Homebrew全称Homebrew is the easiest and most flexible way to install the UNIX tools Apple didn't i

当你学会抄菜的时候,你就学会了大数据

最近在学习数仓跟BI,突然发现,结合自己所学会抄的菜.试着把学过的大数据重新理解一番,希望各位都能来一起讨论,共同进步. 走进厨房  走进厨房后,相信大家会看到各种锅碗瓢盆,案板,切菜刀,调料,橱柜,水池...........而这些就相当于是大数据的架构. 其中橱柜,相当于是Hadoop.橱柜可以储存各种食材,而Hadoop可以存储各种不同类的数据(结构化与非结构化).而橱柜可以存放不同食材,比如不规整的豆腐块,大冬瓜,土豆....还有一些规整的食材,比如大米,小米,绿豆........规整的食

《五年琴——一个程序员的平淡乐章》连载(一)

不知道一个程序员的喃喃自语会引来多少人的关注.不过各位看官如果有心情看完这个像小说一样的自传连载,看完之后还保有一丝期待的话,欢迎点赞或者留言. 如果可以的话,每一个程序员都应该是文字控. --mig_davidli 前言 每个人应该都书写过自己的青春.或许是考场作文,或许是随笔,或许会在自己的心里,用着"生命是幸福的琴弦,青春弹出的是美好的乐章"这类形容. 同样,每个人理想中的青春都充满了刺激与希望.但是大多数人又会在与现实的交锋中无情的落败,归于平凡.不平凡的人的生活,在小说电影中