`
fishergay
  • 浏览: 33603 次
  • 性别: 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数据库全方位监控及优化.zip

    本资料“金融级PostgreSQL数据库全方位监控及优化.zip”着重探讨了如何对这类数据库进行深度监控和性能优化,以确保系统的高效稳定运行。以下是基于该主题的详细知识点: 1. **PostgreSQL简介**:PostgreSQL是对象-...

    postgresql数据库调优

    【标题】:“PostgreSQL数据库调优” 在数据库管理领域,PostgreSQL是一种强大的开源关系型数据库系统,因其稳定性、性能和丰富的功能而广受赞誉。为了确保PostgreSQL在高并发、大数据量的环境下运行高效,数据库...

    PostgreSQL 运行状况检查和 SQL 性能分析

    在数据库管理领域,PostgreSQL 是一个非常强大的开源关系型数据库系统。进行 PostgreSQL 的运行状况检查和 SQL 性能分析是确保数据库...通过以上步骤,我们可以有效地管理和维护PostgreSQL数据库,提升整体系统性能。

    MySQL和PostgreSQL两数据库的对决

    MySQL 和 PostgreSQL 是两种广泛应用的关系型数据库管理系统(RDBMS),它们在开源领域有着广泛的影响力。本文将对比这两种数据库,分析其各自的特点、优劣以及适用场景。 首先,MySQL 4.0.2-alpha 引入了对事务的...

    PostgreSQL慢SQL调优手册

    **PostgreSQL 慢 SQL 调优手册** 1、**Create Index ...通过遵循这些调优指南,你可以显著改善 PostgreSQL 数据库的性能,减少慢查询,并优化整体系统效率。不断学习和实践,以适应不断变化的业务需求和数据规模。

    Datax实现增量同步数据到Postgres

    标题 "Datax实现增量同步数据到Postgres" 涉及到的是使用开源数据同步工具 Datax 进行数据迁移的场景,特别是针对从某个源数据库到PostgreSQL数据库的增量同步。Datax 是阿里巴巴开发的一款高效、稳定且强大的数据...

    PostgreSQL教程(十三):数据库管理详解

    通过使用表空间,可以将经常访问的索引等对象存放在快速的磁盘设备上,而不常用的对象则存放在速度较慢的磁盘系统上。 创建表空间的命令如下: ```sql CREATE TABLESPACE fastspace LOCATION '/mnt/sda1/...

    postgresql-9.4beta1 最新源码

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

    PostgreSQL数据分页技术概述.pptx

    2. 使用 limit offset 效果不是很好,翻页越到后面速度越慢。 3. 使用“select * from t where id>(传入上一页最后一个id) order by id limit 20”。这种方法效率比较好,适合手机屏幕向下滑动分页取数据的方式。 ...

    PostgreSQL 数据库性能提升的几个方面

    **PostgreSQL 数据库性能提升策略** 1. **使用 EXPLAIN 和 EXPLAIN ANALYZE 命令** 在 PostgreSQL 中,`EXPLAIN` 命令用于查看 SQL 查询的执行计划,而 `EXPLAIN ANALYZE` 不仅显示执行计划,还会实际执行查询并...

    PostgreSQL 9.0 High Performance

    《PostgreSQL 9.0 高性能》是一本专为希望提高PostgreSQL数据库系统性能的中级到高级数据库管理员编写的指南。该书由Gregory Smith撰写,他在数据库优化领域拥有丰富的经验,并且是国际PostgreSQL服务公司2...

    PostgreSQL Like模糊查询优化方案

    本文将深入探讨如何在PostgreSQL中对LIKE模糊查询进行优化,提升数据检索速度。 首先,了解问题的本质是关键。在SQL中,LIKE '%xxx%'这样的查询意味着我们需要查找包含特定字符串"xxx"的所有记录,不论该字符串出现...

    postgresql9.2杂志中文版 最大化postgresql性能

    - **pg_stat_activity** 视图:实时查看数据库活动,找出慢查询。 - **pg_stat_user_tables** 和 **pg_stat_user_indexes**:监控表和索引使用情况。 - **pgAdmin** 或其他第三方工具:提供图形界面进行性能监控...

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

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

    postgresql杂志第0期中文版 最大化postgresql性能

    在"postgresql 官方中文杂志"的第0期中,主要探讨了如何最大化PostgreSQL的性能,这对于任何依赖数据库性能的应用程序来说都是至关重要的。下面我们将深入讨论一些关键知识点。 ### 1. 性能优化基础 - **索引优化*...

    PostgreSQL 10官方手册

    **PostgreSQL 10官方手册**是学习和深入理解PostgreSQL数据库系统不可或缺的资源,尤其对于中文用户来说,这是一份极为重要的参考资料。PostgreSQL是一个开源的关系型数据库管理系统(RDBMS),以其强大的功能、高度...

    慢SQL优化In PostgreSQL

    ### 慢SQL优化In PostgreSQL #### 一、直接创建索引(Create Index Directly) 创建索引能够显著提升查询性能,特别是在数据量较大时。但需要注意的是,索引的选择性对于提升性能至关重要。例如,如果`WHERE`条件是`...

    免费数据库简介

    然而,它的缺点在于并发能力较低、写入速度较慢、无法将 MySQL 部署到与前端机不同的服务器上等。但是,在中小站点 CMS 的应用场景下,SQLite 的缺点可以被规避。 Berkeley DB 是一个嵌入式数据库系统,具有工业...

    postgresql 9.0 High Performance(清晰版)

    《PostgreSQL 9.0 高性能》是一本专为数据库管理员、开发者和技术爱好者编写的指南,由国际知名数据库专业服务公司2nd Quadrant的首席顾问Gregory Smith撰写。该书深入探讨了如何加速PostgreSQL系统并避免常见的性能...

Global site tag (gtag.js) - Google Analytics