Postgres 数据库分析工具

标签: postgres 数据库 分析 | 发表时间:2013-12-28 22:12 | 作者:czp1001
出处:http://blog.csdn.net

Postgres号称是开源免费DBMS最强大的,并且支持二次开发。本文就该DBMS的分析工具进行讨论。

1. 判断磁盘的使用量

pg_class表记载表和几乎所有有 字段或者是那些类似表的东西。包括索引(不过还要参阅 pg_index),序列,视图,复合类型和一些特殊关系类型。也有pg_index这张表,包含关于索引的一部分信息。 其他的信息大多数在 pg_class

常用的字段有 

  •    relname(表,索引,视图等的名字); 
  •   relpages(以页的此表在磁盘上的形式的大小。它只是规划器用的一个近似值,是由VACUUM, ANALYE, 和几个DLL命令,比如Crate Index更新)
  •   reltuples(表中元组的数据,也是规划器的近似值)

每个表都有一个主堆的磁盘文件,大多数数据都存储在这里。如果一个表有着可能会很长的字段, 则另外还有一个TOAST文件与这个表相关联, 用于存储因为数值太长而不能存储在主表里面的数据,如果有这个扩展表,那么表上会有一个TOAST索引。

这里对TOAST进行简单说明: TOAST即超尺寸字段存储技巧(The Oversized-Attribute Storage Technique), 因为DBMS的页面设定一般是固定的,PostgreSQL为8kb, 并且不允许跨越多个页面,因此不可能存储非常大的字段。在以前的Postgres版本里,代码里强制一个表中一个数据行存储的数据的总大小为刚好略小于一个页面;在新版本的Postgres,允许大的字段值被压缩或打碎成多个物理行,但这些操作对用户都是透明的。如果一个表中有任何一个字段是可以TOAST的,那么该表将有一个关联的TOAST表,其 OID (对象标识符)存储在表的 pg_class. reltoastrelid 记录里,线外TOAST过的数值保存在TOAST表里。

查看方法:从 psql 里使用 VACUUM 的信息,从psql 里使用 contrib/dbsize 里面的工具,以及在命令行上使用contrib/oid2name 里面的工具垃圾收集以及可选地分析一个数据库。(这里涉及到其他关于数据库维护、性能的知识将在笔者之后的博客里介绍)。由于我们在分析前一般会完成数据库的连接操作,所有可以执行查询语句,

select relpages, reltuples from pg_class where relname='待分析表名';

  也可以很容易地显示索引的用量:

select c2.relname, c2.relpages
     from pg_class c, pg_class c2, pg_index i
    where c.relname = '表名'
     and c.oid = i.indrelid
     and c2.oid = i.indexrelid
 Order by c2.relname;

2. 查询计划

使用时只需在原来的语句上加上 explian关键字。

explain select * from customer where customer_id=12;
结果如下:

   
注:笔者数据库里的customer有24999个元组。

Cost指示了磁盘-页面存取的估计次数,和CUP在磁盘页面的计算时间。在上面的例子里,先使用了顺序扫描(Seq Scan)。在customer表里的行平均有16byte的宽度,这个查询只访问了1行,没有启动代价(start-up cost),总代价为4565.99(以磁盘-页面存取单元表示)。

使用explain analyze命令同时可以显示时间运行时间(毫秒)和实际磁盘页面存取次数,


结果表明,估计需要4565.99次磁盘页面存取次数,而实际只有108.643次.

作者:czp1001 发表于2013-12-28 14:12:50 原文链接
阅读:63 评论:0 查看评论

相关 [postgres 数据库 分析] 推荐:

Postgres 数据库分析工具

- - CSDN博客数据库推荐文章
Postgres号称是开源免费DBMS最强大的,并且支持二次开发. 本文就该DBMS的分析工具进行讨论. pg_class表记载表和几乎所有有 字段或者是那些类似表的东西. pg_index),序列,视图,复合类型和一些特殊关系类型. 也有pg_index这张表,包含关于索引的一部分信息.    relname(表,索引,视图等的名字); .

监控Postgres数据库

- - 数据库 - ITeye博客
官方文档中有关监控的章节:. 这个可以实时监控数据库,但是没有系统cpu和内存图表. 大多数带有系统监控的,都是通过插件实现的,要多安装和配置一些东西. 下面是安装powa的步骤,Centos系统. 在官网下载代码,现在是2.0版,这个版本需要postgresql是9.4以上版本. 我的pg是9.3版,所以下载的1.2.1版本.

管理大型 Postgres 数据库的 3 个技巧

- - Linux 中国◆开源社区
在处理庞大的数据库时,请尝试这些方便的解决方案,以解决常见的问题. 关系型数据库 PostgreSQL(也被称为 Postgres)已经越来越流行,全球各地的企业和公共部门都在使用它. 随着这种广泛的采用,数据库已经变得比以前更大了. 在 Crunchy Data,我们经常与 20TB 以上的数据库打交道,而且我们现有的数据库还在继续增长.

postgres创建表分区

- - 数据库 - ITeye博客
       PostgreSQL支持基本的表分区功能.      分区的意思是把逻辑上的一个大表分割成物理上的几块. 某些类型的查询性能可以得到极大提升. 特别是表中访问率较高的行位于一个单独分区或少数几个分区上的情况下. 分区可以减少索引体积从而可以将高使用率部分的索引存放在内存中. 如果索引不能全部放在内存中,那么在索引上的读和写都会产生更多的磁盘访问.

bucardo5.3 postgres主从同步

- - x-marker的博客
在报表应用、olap等领域,bucardo可以把数据实时异步的传输到备库,然后在备库中可以进行数据转换、建临时表、报表等操作,而pg原生的stream replication只能是只读操作,所以bucardo的应用领域还是很广的. 今天分两篇分别记录下pg到pg的主从同步和pg到mysql的主从同步.

Oracle数据库分析函数详解

- - MySQLOPS 数据库与运维自动化技术分享
Oracle数据库分析函数详解. 原创文章,转载请注明: 文章地址 Oracle数据库分析函数详解.

VoltDB内存数据库分析

- - 淘宝核心系统团队博客
VoltDB是一个宣称性能超过Mysql 100倍的新型数据库. 它源自Micheal Stonebraker一篇论文H-Store. 在这篇论文发表后,Stonebraker成立了VoltDB公司带着他的一些学生开始在OLTP数据库领域打拼. Stonebraker从上世纪70年代——数据库刚开始发展的时间——就开始在数据库领域活跃,这样的老古董提出的数据库的新想法,给了整个存储领域很大的想象空间.

spring boot与spring batch、postgres及elasticsearch整合

- - 互联网 - ITeye博客
当系统有大量数据需要从数据库导入elasticsearch时,使用sping batch可以提高导入的效率. 这篇文章使用spring batch将数据从postgres导入elasticsearch. 本文使用spring data jest连接ES(也可以使用spring data elasticsearch连接ES),ES版本为5.5.3.

开源网站分析软件Piwik的数据库表结构

- sun - 标点符
Piwik是一套基于Php+MySQL技术构建,能够与Google Analytics相媲美的开源网站访问统计系统,前身是phpMyVisites. Piwik可以给你详细的统计信息,比如网页浏览人数, 访问最多的页面, 搜索引擎关键词等等,并且采用了大量的AJAX/Flash技术,使得在操作上更加便易.