`
coderliang2018
  • 浏览: 26921 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

postgresql 数据库速度慢

 
阅读更多
公司有个导数据的工具,是把数据库里面的一条条记录生成SQL文件, 然后导入到别的数据库里面,在导入SQL文件的时候非常慢, 以前没有这个问题。 后来网上查了下,也做了实验都没有效果。 后来看了下postgresql SQL的手册看了下系统的表,发现有个表可以查看表所占用的空间,和视图之类的.
观察磁盘使用情况
Table of Contents
25.1. 判断磁盘的使用量
25.2. 磁盘满导致的失效
本章讨论如何观察PostgreSQL数据库系统的磁盘使用情况。

25.1. 判断磁盘的使用量
每个表都有一个主堆的磁盘文件,大多数数据都存储在这里。如果一个表有着可能会很长的字段, 则另外还有一个TOAST文件与这个表相关联, 用于存储因为数值太长而不能存储在主表里面的数据(参阅 Section 50.2)。 如果有这个扩展表,那么表上会有一个TOAST索引。 当然,同时还可能有索引和基表关联。 每个表和索引都存放在单独的磁盘文件里 — 如果文件超过一吉,甚至可能多于一个文件。 这些文件的命名原则在 Section 50.1 里描述。

你可以从三个地方监视磁盘空间:从 psql 里使用 VACUUM 的信息,从 psql 里使用 contrib/dbsize 里面的工具,以及在命令行上使用 contrib/oid2name 里面的工具。如果 psql 和任何最近刚刚清理(或者分析过)的数据库进行联接, 那么我们可以用查询来查看任意表的磁盘使用:

SELECT relfilenode, relpages FROM pg_class WHERE relname = 'customer';

relfilenode | relpages
-------------+----------
       16806 |       60
(1 row)
每个页通常都是 8 K字节。(记住,relpages只是由 VACUUM, ANALYZE 和几个 DDL 命令,比如CREATE INDEX 所更新。) 如果你想直接检查表的磁盘文件,那么 relfilenode 应该有用。

要显示 TOAST 的表使用的空间,我们可以使用一个类似下面这样的查询:

SELECT relname, relpages
    FROM pg_class,
         (SELECT reltoastrelid FROM pg_class
          WHERE relname = 'customer') ss
    WHERE oid = ss.reltoastrelid
       OR oid = (SELECT reltoastidxid FROM pg_class
                 WHERE oid = ss.reltoastrelid)
    ORDER BY relname;

       relname        | relpages
----------------------+----------
pg_toast_16806       |        0
pg_toast_16806_index |        1

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

SELECT c2.relname, c2.relpages
    FROM pg_class c, pg_class c2, pg_index i
    WHERE c.relname = 'customer'
        AND c.oid = i.indrelid
        AND c2.oid = i.indexrelid
    ORDER BY c2.relname;

       relname        | relpages
----------------------+----------
customer_id_indexdex |       26

我们很容易用下面的信息找出最大的表和索引:

SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;

       relname        | relpages
----------------------+----------
bigtable             |     3290
customer             |     3144

contrib/dbsize 向我们的数据库里装载一些函数,这些函数 允许我们在 psql 里找出一个表或者一个数据库的大小,而且不用 VACUUM或者 ANALYZE。

你也可以使用 oid2name 显示磁盘用量。参阅 该目录中的 README.oid2name 获取例子。它包括一个为每个 数据库显示磁盘用量的脚本。

根据上面查找出rightgrouptable占用了很大的空间, 有5G多, 导致写入数据很慢, 系统有张表示目录树,而且做了权限的,每个用户都有节点的权限,这种设置导致了grouptable数据量非常大,而且现有的系统不再使用该表,这里需要清理一下表数据, 使用命令:
truncate table rightgrouptable
这个相当于删除rightgrouptable里面的所有数据, truncate比delete 快不少。
select relname, relpages from pg_class order by relpages desc limit 100 再查询下,表空间占用就少了不少,然后再导入数据就不再慢。
分享到:
评论

相关推荐

    postgresql-9.2.3.tar.gz

    postgresql数据库源码下载,版本为 9.2.3,也可以到官网下载,官网有时速度会慢。

    postgresql-9.4beta1 最新源码

    postgresql数据库源码下载,版本为 9.4Beta,也可以到官网下载,官网有时速度会慢。

    Pure-Tcl Interface to PostgreSQL:用Tcl编写的PostgreSQL数据库的Tcl接口-开源

    pgintcl是PostgreSQL数据库系统的Tcl接口,完全用Tcl编写。 它与其他pgtcl实现特别是pgtclng兼容。 它缺少异步操作,并且速度稍慢,但是不需要任何其他库。 (该项目于2003年2月至2011年3月在pgfoundry.org及其前...

    postgresql-9.6.3.tar.gz 下载

    postgresql-9.6.3.tar.gz 最新源码数据库,在官网不太好找,下载速度慢

    postgresql-9.6.10.tar.gz

    postgresql-9.6.10.tar.gz 最新源码数据库,在官网不太好找,下载速度慢 PostgreSQL(也称为Post-gress-Q-L)由PostgreSQL全球开发集团(全球志愿者团队)开发。 它不受任何公司或其他私人实体控制。 它是开源的,其源...

    postgresql-11.3-1-windows-x64.zip

    一种模式保证如果操作系统或硬件崩溃,则数据将保存到磁盘中,这种模式通常比大多数商业数据库要慢,这是因为它使用了刷新(或同步)方法;另一种模式与第一种不同,它不提供数据保证,但它通常比商业数据库运行得快...

    postgresql12.2.2+postgis3.0.1-3 x64.zip

    文件安装包来源于PostgreSQL官方,由于国内下载速度过于慢,上传一个方便大家使用。

    openGauss数据库管理系统-其他

    openGauss内核早期源自开源数据库PostgreSQL,融合了华为在数据库领域多年的内核经验,在架构、事务、存储引擎、优化器及ARM架构上进行了适配与优化。作为一个开源数据库,期望与广泛的开发者共同构建一个多元化...

    MCW-Migrating-Oracle-to-Azure-SQL-and-PostgreSQL:MCW将Oracle迁移到Azure SQL和PostgreSQL

    他们的数据仓库开始显示其寿命,在提取,转换和加载(ETL)操作以及关键查询过程中速度变慢。 数据仓库在SQL Server 2008 R2 Standard Edition上运行。 WWI CIO最近阅读了有关Azure SQL数据库和SQL Server 2017的...

    Common SQL Environment (CSE ) 1.60 汉化版

    直接在结果集中更新,删除数据,导出数据库定义到Excel,导出CSV,格式化SQL(Ctrl+Q),生成拼SQL语句的程序代码,界面简洁,用起来非常方便,启动速度飞快,最大的缺点似乎就是查询大数据量时比较慢。对程序员非常...

    SqlSugar框架的学习使用

    1、优越的性能,查询使用 reflection.emit 创建IL语言+委托绑定 然后对该对象进行 cache ,datareader直接赋值给cache对象,高性能拉姆达解析,总体性能媲美 http://ADO.NET ,查询速度稍慢于datareader但稍快于...

    greenplum-jdbc-5.1.4.000223.jar

    Greenplum是一个面向数据仓库应用的关系型数据库,它基于流行的PostgreSQL开发,因为有良好的体系结构,所以在数据存储,高并发,高可用,线性扩展,反应速度,易用性和性价比等方面有非常明显的优势,非常受欢迎.进入大数据...

    SqlSugar引用文件

    SqlSugar 是一款简单易用的开源 ORM 框架,支持.NET CORE 和 MySql、SqlServer、Sqlite、Oracle 、 postgresql 等数据库,具有 EF NH 的功能,比 EF 更人性化的语法,支持真实的批量操作,另外还有媲美 DAPPER 的...

    line-bot-demo:该项目将演示如何使用Node.js及其生态系统来开发line bot应用程序

    为了提供实时演示,该应用程序将通过支持AWS-RDS的Postgresql数据库部署到AWS Beanstalk。 它的webview todo应用程序是使用React.js编写的,您可以在这里找到子项目 。 并将其部署到启用了Web托管的S3存储桶。 Dict

    performance-comparison:该测试目标是展示同步交互和异步交互之间的区别

    例如,在较弱的硬件上,数据库写入速度较慢。 结果,工人在等待同步操作结果时执行的有用性较低的工作。 另外,给出了在golang上执行任务的示例 工作流程 在RabbitMQ中添加100.000条消息,每条消息都是一个命令...

    dockertestspike

    码头工人 使用和并行运行runnig golang集成测试的秒杀/示例应用程序。 用法 您可以在使用或不使用dockertest的情况下运行测试... 第一次运行测试时,将提取docker ,因此速度可能会较慢。 go test -dt test.parallel 4

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    PostgreSQL 号称“世界上最先进的开源数据库“,可以运行在多种平台下,是tb级数据库,而且性能也很好 中大型企业 oracle 甲骨文 获得最高认证级别的ISO标准安全认证,性能最高, 保持开放平台下的TPC-D和TPC-C的...

    dbvisualizerpro_x64

    Oracle工具,PG工具等 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,...我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

    sqlakeyset:sqlalchemy的无偏移分页

    sqlakeyset:sqlalchemy的无偏移分页 ... 麻烦的是,您浏览的页面越多,查询的速度就越慢。 此外,如果您翻阅的结果频繁更改,则可以跳过或重复页面之间的结果。 键集分页避免了这些问题:即使选择百万分之一的

    java笔试题a说他不和x比-alicia:Sql作为一种高速编程语言

    的单个实例运行,关闭所有并发保护以提供它作为单线程应用程序的更高速度。 因为它的 sqlite,数据是超压缩的。 事实上,您会发现用其他高级语言编写的程序将占用数千倍的内存。 并且仍然运行得更慢。 尤其是适当的...

Global site tag (gtag.js) - Google Analytics