
GPDB Mangement
文章平均质量分 70
gtlions
FuZhou
展开
-
统计对象大小函数性能比较
gtgpdb=# select * from gp_toolkit.gp_size_of_table_disk t where sotdtablename like 'rt_ok%'; sotdoid | sotdsize | sotdtoastsize | sotdadditionalsize | sotdschemaname | sotdtablename原创 2015-01-05 13:14:59 · 1298 阅读 · 0 评论 -
统计对象大小信息的函数和子查询的Bug
I hava below two statement sql:0. not in subqueryselect a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename not in (select b.tab原创 2014-10-15 14:36:32 · 1719 阅读 · 0 评论 -
about gpdb password md5
about gpdb password md5gtlions=# alter user gtlions password 'gtlions';ALTER ROLEgtlions=# select * from pg_shadow; usename | usesysid | usecreatedb | usesuper | usecatupd | userepl |原创 2014-11-26 10:39:31 · 1240 阅读 · 0 评论 -
Index statistics collected bug
SQL执行引擎会从pg_stats、pg_class等相关系统字典表、视图获取生成最佳执行计划的数据,如果相关字典视图的数据不准确就没有办法生成良好的执行计划。发现以下Bug一枚。0. 插入数据之后,新创建的索引不会自动更新收集索引的pg_class.relpages\pg_class.reltuples信息;1. 对一个表,当执行UPDATE\DELETE之后,对表执行VACUU原创 2014-10-20 11:15:57 · 1202 阅读 · 0 评论 -
Upgrade Ver 4.3.x from 4.2.x
级到遇到个小问题,解决细节记录如下。[gpadmin@wx60 ~]$ gpmigrator /usr/local/greenplum-db-4.2.7.2 /usr/local/greenplum-db-4.3.3.120141020:10:29:05:005944 gpmigrator:wx60:gpadmin-[INFO]:-Beginning upgrade20141020:10:原创 2014-10-20 11:24:27 · 1363 阅读 · 0 评论 -
About stats collected
pg_class.relpages pg_class.reltuples只是近似值,和实际数据会有点误差;新建空表,首次insert对自动收集和更新统计信息,影响的表pg_class\pg_stats;对于insert操作:analyze会更新表pg_class\pg_stats,而vacuum或者acuum full只会更新pg_class,并不会更新任何统计信息pg_stats;原创 2014-10-17 17:16:28 · 1201 阅读 · 0 评论 -
TRUNCATE TABLE HANG
I hava a table gtlions.cannottruncatetable, ZERO rows in this table, i can DELETE from the table, but can not TRUNCATE, hang the statement sql.Detail info below:###################On the session原创 2014-10-16 13:50:49 · 1560 阅读 · 0 评论 -
How vacuum template0
[pg@h1 ~]$ vacuumdb --freeze template0vacuumdb: could not connect to database template0: FATAL: database "template0" is not currently accepting connections[pg@h1 ~]$ psql template0psql: FATAL: da原创 2014-11-18 16:05:41 · 1533 阅读 · 0 评论 -
Mac OSX下编译安装PostgreSQL
原先使用的是官方提供的安装包,但是安装包会创建postgre这个用户,在登陆界面看的有点不爽,搜索了半天竟然没有找到如何在osx下编译安装的教程,而且如果是按照官方文档的编译安装办法一定会让你崩溃,本着源码安装都类似的想法,根据以往在Linux下的经验竟然一把通过了,注意要安装COMMANDER LINE DEVELOPERS就是了。./configuremakesudo mk原创 2014-11-03 09:11:27 · 3175 阅读 · 0 评论 -
大版本升级额外步骤
这里的大版本是指版本号的第2位数字,比如4.2.7.3升级到4.3.3.1,从4.2升级到4.3,会出现无法启动问题,提示catalog版本不兼容。而如果只是在第2位数字之内的相同版本的升级没有此类问题;最前面的那个版本数字号由于目前还没有出现对应版本,所以没有相关问题。[gpadmin@gtlions60 ~]$ gpstart -a20141019:12:40:51:004622原创 2014-10-19 12:55:08 · 2622 阅读 · 0 评论 -
利用管道迁移数据
磁盘空间不足的情况下,利用命名或者匿名管道迁移和导入数据;需要注意命名管道的权限问题。0. Name PIP 0[pg@h1 ~]$ psql gtlions -ac "select 't3' tab,count(*) from t3 union all select 't4',count(*) from t4;"select 't3' tab,count(*) from t3 uni原创 2014-11-06 09:25:37 · 1049 阅读 · 0 评论 -
GPDB 并行加载测试
测试文件信息10G Dec 12 14:10 A111G Dec 12 14:32 A210G Dec 12 14:10 B111G Dec 12 14:35 B2GPFDIST方案一 单台服务器drop table if exists host_1;drop EXTERNAL TABLE if exists ip_session_gpfs_ext_1_host;dro原创 2014-12-12 16:14:14 · 1931 阅读 · 0 评论 -
Left Join
开发有个语句执行了超过2个小时没有结果,询问我到底为什么执行这么久。语句格式如下select * from tgt1 a left join tgt2 b on a.id=b.id and a.id>=6 order by a.id;这个是典型的理解错误,本意是要对a表进行过滤后进行[]left join]的,我们来看看到底什么是真正的[left join]。[gpadmin@mdw原创 2014-12-02 17:18:17 · 1294 阅读 · 0 评论 -
GPDB current transaction is aborted
在用Python操作GPDB的时候遇到报错如下gpmg.manager_tabl1eerror 'ERROR: relation "gpmg.manager_tabl1e" does not exist' in 'select pg_total_relation_size('gpmg.manager_tabl1e');'gpmg.manager_tableerror 'ERROR:原创 2014-12-18 16:56:17 · 1378 阅读 · 0 评论 -
SQLSTATE58030
在优化一条SQL的时候遇到了执行错误gtlions=# select t1.telnumber,t2.ua,t2.url,t1.apply_name,t2.apply_name from tb1 t1gtlions-# left outer join tb2 t2 on t1.sid = t2.ipsid gtlions-# where t1.sum_date=20141128 a原创 2014-12-02 17:27:26 · 3445 阅读 · 0 评论 -
join update vs sub-selects update
开发说使用多表关联进行更新的时候发现没有正确的更新记录(事后发现是条件问题),之前一直没怎么使用关联更新,这次看了下,发现了个问题,当返回多行记录的时候并不会像传统的子查询更新那样报错,而是随机选择一个记录进行更新(_貌似最后一个?_) 因此,虽然关联更新会快很多,但是要考虑的这个不确定带来的隐患。```gtlions=# create table joinupdate1(id int,name原创 2014-12-01 16:39:57 · 1875 阅读 · 0 评论 -
idle in transaction
检查库的时候发现有8个超过17个小时的会话,执行状态为 idle in transaction。从文档上可以看到解释:idle in transaction (waiting for client inside a BEGIN block)通知开发提交或者回滚,抑或杀之。-EOF-原创 2014-11-25 09:00:53 · 4383 阅读 · 2 评论 -
gp_gather_object_size script
由于数据库对象(table)太多太大,而且业务比较繁忙,在收集统计对象大小信息的过程中经常会增删改对象,导致数据库报对象不存在的错误,于是写了个脚本用于完成上述功能,并到处到csv文件便于分发相关维护、开发人员。gp_gather_object_size script#!/usr/bin/env python# -*- coding: UTF-8 -*-## Copyright [G原创 2014-12-01 10:06:23 · 1055 阅读 · 0 评论 -
Can rename table but can not truncate table
一个表无法truncate但是可以rename,这个乍听起来觉得好奇怪,下面模拟该过程。3个session:session1执行truncate和rename操作;session2执行lock表操作;session3进行监控。 session1:[gpadmin@wx60 contrib]$ psql gtlionspsql (8.2.15)Type "help"原创 2014-10-21 14:45:42 · 1240 阅读 · 0 评论 -
检查数据倾斜分布
从传统数据库迁移到GP中一个重要的且经常被开发人员忽略的概念是数据分布,没有良好的设计表的分布键会导致严重的性能问题,以下函数将给开发人员及DBA检测一个表的数据倾斜情况。-- Function: gpmg.data_skew(character varying) -- DROP FUNCTION gpmg.data_skew(character varying); CREATE OR原创 2014-10-14 09:56:19 · 2240 阅读 · 0 评论 -
GreenPlum upgrade to 4.2.5.0
[gpadmin@o564gtser1 ~]$ gpstate 20131020:13:22:59:004254 gpstate:o564gtser1:gpadmin-[INFO]:-Starting gpstate with args:20131020:13:22:59:004254 gpstate:o564gtser1:gpadmin-[INFO]:-local Greenplum原创 2013-10-20 13:34:57 · 2336 阅读 · 0 评论 -
非super user管理会话
在gp中取消或者中断某个用户的超长时间或者SQL存在问题的会话,如果无法拥有超级用户将无法执行该类操作。 首先我们创建两个用户t1、t2,并且使用t1登录到数据库。[gpadmin@wx60 ~]$ psql gtlionspsql (8.2.15)Type "help" for help. gtlions=# select version();原创 2014-10-11 10:02:19 · 2027 阅读 · 0 评论 -
file外部表--有更新版本!
如果不想要gpfdist来当做服务器,还有一种简单的方式-file,直接基于文件路径的方式。[gpadmin@d1 ~]$ cat nohup.out Serving HTTP on port 8081, directory /data1/cdrdataServing HTTP on port 8082, directory /data2/cdrdatagtlions=#原创 2013-05-02 12:17:27 · 948 阅读 · 0 评论 -
GP加载和卸载数据之一外部表--有更新版本!
7.0. 方式在gp中提供了几种方式用于加载和卸载数据:external tables、gpload、copy等等,这几种方式没有优劣之分,只是在不同场景下使用不同的技术而已。7.1. 外部表本文将首先测试使用外部表的方式进行加载和卸载数据。外部表-external tables,分为只读readable和只写writable两种类别,而每种又可以分为常规regular和web两种原创 2013-04-30 23:06:32 · 3547 阅读 · 0 评论 -
管理数据库Database
--创建一个数据库createdb gtlions;create database gtlions;createdb -T template0 databasename;create database gtlions template template0 tablespace gtlions_ts1;alter database gtlions rename to gtlion原创 2013-04-19 16:15:02 · 1285 阅读 · 0 评论 -
Greenplum管理模式
这个和oracle schema一样的用途,用来逻辑组织数据库对象的存放容器,不同schema不共享命名空间。schema public是在创建数据库之后就会默认创建的,每个用户都有权限在这个schema创建对象,如果不指定schema那么就会默认创建到这里。创建schema后最好需要修改默认的搜索路径,否则每次登陆都必须指定路径才能使用创建的schema。gtlions=# create s原创 2013-04-20 14:38:36 · 1965 阅读 · 0 评论 -
Greenplum管理表空间Tablespace
create tablespace gtlions_ts1 [owner gtlions] filespace gtlionsfilespace;alter tablespace gtlions_ts1 rename to gtlions_ts2;alter tablespace gtlions_ts1 owner to gtlions;表空间是基于文件空间filespace的,实原创 2013-04-19 16:19:16 · 3609 阅读 · 0 评论 -
Greenplum管理索引
鉴于OLAP系统的特性,应该谨慎并保守地使用索引。避免在频繁更新的列上使用索引;在高选择性的列上使用B-tree索引;在低选择性的列上使用Bitmap索引。通常来说在传统数据库中使用索引可以有效的提高数据访问效率,特别是在OLTP系统中,往往只是需要从大表中获取几行或者部分的数据记录,这个情况下索引确实是特别有效的提高数据获取速度的方法。但是在gp中未必如此,因为首先数据都是均匀最大可能的均匀原创 2013-04-24 09:59:21 · 6321 阅读 · 0 评论 -
Greenplum管理序列
不支持currval和lastval,只有nextval,且不能在update和delete语句中使用。如果开启了mirroring,序列不能在update和delete语句中使用。gtlions=# create sequence sq1 start 1;CREATE SEQUENCEgtlions=# select * from sq1; sequence_name | las原创 2013-04-24 09:58:27 · 2213 阅读 · 0 评论 -
Greenplum管理表
4.3. 管理表或许你要说create table还要你在这边指手画脚的?其实不然,即使在Oracle里面也还是有很多选项和参数未必都很清楚,何况是换了个不熟悉的gp,所以有必要全新的了解下。创建表你需要考虑的内容和因素有:字段类型、表或者字段的约束、分布策略、存储策略、表分区等等。4.3.0. 字段类型在gp中character类型的char、varchar、text之间在不考虑原创 2013-04-22 17:11:12 · 2329 阅读 · 0 评论 -
web外部表--有更新版本!
web外部表在某些情况下,比如在多个系统之间进行数据传递的时候,可能对方会将文件放到网站上,然后你自己去下载,别觉得奇怪,我至少碰到过两次这样的数据交互方式,而且是在金融业和互联网行业。在这个情况下使用web协议直接创建的外部表就很有好处了。[root@o564gtser1 html]# echo 'test'>1.html[root@o564gtser1 html]# pwd原创 2013-05-01 16:38:02 · 1369 阅读 · 0 评论 -
web os commander外部表--有更新版本!
web外部表是只读的的,不像常规的外部表那样可以有写入的,而os commander web外部表的一个变形体,具体看几个例子。gtlions=# create external web table e_web2 (like emp) execute 'cat ~/gpfdist/emp_exp.txt' format 'text';CREATE EXTERNAL TABLEgtlio原创 2013-05-04 10:28:02 · 972 阅读 · 0 评论 -
可写外部表--有更新版本!
可写外部表本节我要演示下如何从数据库中卸载数据到平面文件,数据库表为EMP,导出目的文件为emp.txt。gtlions=# select * from emp;原创 2013-05-01 16:15:29 · 1165 阅读 · 0 评论 -
Greenplum query Oracle via DLINK
在系统日常生产过程中,如何从Oracle数据库同步一些配置表到GP库个问题。先来说说之前使用的方式:0. 使用第3方工具从Oracle导出纯文本格式,存放在本地;1. 使用GP外部表加载入库这种方式优点是对于需要同步大数据量的表的时候性能非常高;缺点是稍显麻烦,最主要的是非实时的,存在着任务调度周期和导出导入时间周期。对此我的解决办法是简化整个过程并实时查询:0.原创 2014-06-07 11:42:32 · 1430 阅读 · 0 评论 -
about greenplum collection tool
three collection tool for greenplum:pstack、strace、gcore. [gpadmin@gtlions5913 ~]$ ps -ef | grep postgres|grep data原创 2014-06-07 11:44:34 · 1010 阅读 · 0 评论 -
Greenplum同步到Oracle
开发提出需要从Greenplum同步到Oracle的解决方案,写了个脚本用于定时调度处理。#!/bin/sh#copy_gp_2_ora.shif [ $# -ne 1 ]; then echo "Usage: sh $0 tablename" exit 1fiTABLENAME=$1 psql -h -U \timing off原创 2014-06-07 11:43:30 · 1984 阅读 · 0 评论 -
gp借助类DBLINK访问oracle性能测试
0. Oracle测试数据准备:[oracle@db1 ~]$ sqlplus system/000000SQL*Plus: Release 11.2.0.3.0 Production on Tue Mar 25 10:26:06 2014Copyright (c) 1982, 2011, Oracle. All rights reserved.C原创 2014-03-26 19:47:27 · 1701 阅读 · 0 评论 -
测试多列DK的选择性问题
为了测试多个DK分布键情况下,多表关联是否可以镜像segment过滤,测试如下:[gpadmin@gtlions50 ~]$ psql gtlionspsql (8.2.15)Type "help" for help.gtlions=# create table gtt1(id int,name character varying(5)) distributed by (i原创 2014-03-26 19:45:18 · 1193 阅读 · 0 评论 -
修改gp集群主机名称
在某些情况下,特别是在前期没规划好的情况下,后期运行过程中会遇到需要修改hostname&ip的情况,现状遇到的情况是需要调整hostname,对于某些已经投产或者的集群类的环境,修改这些信息尤为麻烦。大体步骤:0. 维护模式打开数据库,修改配置表 gp_segment_configuration 的hostname和address字段为新主机名称;1、停库,关闭维护模式;2、修改原创 2013-12-29 16:26:33 · 3500 阅读 · 0 评论 -
GP BUG APPEND TABLE ADD COLUMN
tail -f gpdb-2013-10-16_000000.csv |grep tb_csv_gn_pdp_session2013-10-16 09:03:56.081282 CST,"user","db",p90979,th1834501888,"172.28.8.250","58013",2013-10-16 09:03:55 CST,3153486,con468840,cmd494,s原创 2013-10-22 16:22:06 · 1483 阅读 · 0 评论