公司有个导数据的工具,是把数据库里面的一条条记录生成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”着重探讨了如何对这类数据库进行深度监控和性能优化,以确保系统的高效稳定运行。以下是基于该主题的详细知识点: 1. **PostgreSQL简介**:PostgreSQL是对象-...
【标题】:“PostgreSQL数据库调优” 在数据库管理领域,PostgreSQL是一种强大的开源关系型数据库系统,因其稳定性、性能和丰富的功能而广受赞誉。为了确保PostgreSQL在高并发、大数据量的环境下运行高效,数据库...
在数据库管理领域,PostgreSQL 是一个非常强大的开源关系型数据库系统。进行 PostgreSQL 的运行状况检查和 SQL 性能分析是确保数据库...通过以上步骤,我们可以有效地管理和维护PostgreSQL数据库,提升整体系统性能。
MySQL 和 PostgreSQL 是两种广泛应用的关系型数据库管理系统(RDBMS),它们在开源领域有着广泛的影响力。本文将对比这两种数据库,分析其各自的特点、优劣以及适用场景。 首先,MySQL 4.0.2-alpha 引入了对事务的...
**PostgreSQL 慢 SQL 调优手册** 1、**Create Index ...通过遵循这些调优指南,你可以显著改善 PostgreSQL 数据库的性能,减少慢查询,并优化整体系统效率。不断学习和实践,以适应不断变化的业务需求和数据规模。
标题 "Datax实现增量同步数据到Postgres" 涉及到的是使用开源数据同步工具 Datax 进行数据迁移的场景,特别是针对从某个源数据库到PostgreSQL数据库的增量同步。Datax 是阿里巴巴开发的一款高效、稳定且强大的数据...
通过使用表空间,可以将经常访问的索引等对象存放在快速的磁盘设备上,而不常用的对象则存放在速度较慢的磁盘系统上。 创建表空间的命令如下: ```sql CREATE TABLESPACE fastspace LOCATION '/mnt/sda1/...
postgresql数据库源码下载,版本为 9.4Beta,也可以到官网下载,官网有时速度会慢。
2. 使用 limit offset 效果不是很好,翻页越到后面速度越慢。 3. 使用“select * from t where id>(传入上一页最后一个id) order by id limit 20”。这种方法效率比较好,适合手机屏幕向下滑动分页取数据的方式。 ...
**PostgreSQL 数据库性能提升策略** 1. **使用 EXPLAIN 和 EXPLAIN ANALYZE 命令** 在 PostgreSQL 中,`EXPLAIN` 命令用于查看 SQL 查询的执行计划,而 `EXPLAIN ANALYZE` 不仅显示执行计划,还会实际执行查询并...
《PostgreSQL 9.0 高性能》是一本专为希望提高PostgreSQL数据库系统性能的中级到高级数据库管理员编写的指南。该书由Gregory Smith撰写,他在数据库优化领域拥有丰富的经验,并且是国际PostgreSQL服务公司2...
本文将深入探讨如何在PostgreSQL中对LIKE模糊查询进行优化,提升数据检索速度。 首先,了解问题的本质是关键。在SQL中,LIKE '%xxx%'这样的查询意味着我们需要查找包含特定字符串"xxx"的所有记录,不论该字符串出现...
- **pg_stat_activity** 视图:实时查看数据库活动,找出慢查询。 - **pg_stat_user_tables** 和 **pg_stat_user_indexes**:监控表和索引使用情况。 - **pgAdmin** 或其他第三方工具:提供图形界面进行性能监控...
pgintcl是PostgreSQL数据库系统的Tcl接口,完全用Tcl编写。 它与其他pgtcl实现特别是pgtclng兼容。 它缺少异步操作,并且速度稍慢,但是不需要任何其他库。 (该项目于2003年2月至2011年3月在pgfoundry.org及其前...
在"postgresql 官方中文杂志"的第0期中,主要探讨了如何最大化PostgreSQL的性能,这对于任何依赖数据库性能的应用程序来说都是至关重要的。下面我们将深入讨论一些关键知识点。 ### 1. 性能优化基础 - **索引优化*...
**PostgreSQL 10官方手册**是学习和深入理解PostgreSQL数据库系统不可或缺的资源,尤其对于中文用户来说,这是一份极为重要的参考资料。PostgreSQL是一个开源的关系型数据库管理系统(RDBMS),以其强大的功能、高度...
### 慢SQL优化In PostgreSQL #### 一、直接创建索引(Create Index Directly) 创建索引能够显著提升查询性能,特别是在数据量较大时。但需要注意的是,索引的选择性对于提升性能至关重要。例如,如果`WHERE`条件是`...
然而,它的缺点在于并发能力较低、写入速度较慢、无法将 MySQL 部署到与前端机不同的服务器上等。但是,在中小站点 CMS 的应用场景下,SQLite 的缺点可以被规避。 Berkeley DB 是一个嵌入式数据库系统,具有工业...
《PostgreSQL 9.0 高性能》是一本专为数据库管理员、开发者和技术爱好者编写的指南,由国际知名数据库专业服务公司2nd Quadrant的首席顾问Gregory Smith撰写。该书深入探讨了如何加速PostgreSQL系统并避免常见的性能...