公司有个导数据的工具,是把数据库里面的一条条记录生成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,也可以到官网下载,官网有时速度会慢。
postgresql数据库源码下载,版本为 9.4Beta,也可以到官网下载,官网有时速度会慢。
pgintcl是PostgreSQL数据库系统的Tcl接口,完全用Tcl编写。 它与其他pgtcl实现特别是pgtclng兼容。 它缺少异步操作,并且速度稍慢,但是不需要任何其他库。 (该项目于2003年2月至2011年3月在pgfoundry.org及其前...
postgresql-9.6.3.tar.gz 最新源码数据库,在官网不太好找,下载速度慢
postgresql-9.6.10.tar.gz 最新源码数据库,在官网不太好找,下载速度慢 PostgreSQL(也称为Post-gress-Q-L)由PostgreSQL全球开发集团(全球志愿者团队)开发。 它不受任何公司或其他私人实体控制。 它是开源的,其源...
一种模式保证如果操作系统或硬件崩溃,则数据将保存到磁盘中,这种模式通常比大多数商业数据库要慢,这是因为它使用了刷新(或同步)方法;另一种模式与第一种不同,它不提供数据保证,但它通常比商业数据库运行得快...
文件安装包来源于PostgreSQL官方,由于国内下载速度过于慢,上传一个方便大家使用。
openGauss内核早期源自开源数据库PostgreSQL,融合了华为在数据库领域多年的内核经验,在架构、事务、存储引擎、优化器及ARM架构上进行了适配与优化。作为一个开源数据库,期望与广泛的开发者共同构建一个多元化...
他们的数据仓库开始显示其寿命,在提取,转换和加载(ETL)操作以及关键查询过程中速度变慢。 数据仓库在SQL Server 2008 R2 Standard Edition上运行。 WWI CIO最近阅读了有关Azure SQL数据库和SQL Server 2017的...
直接在结果集中更新,删除数据,导出数据库定义到Excel,导出CSV,格式化SQL(Ctrl+Q),生成拼SQL语句的程序代码,界面简洁,用起来非常方便,启动速度飞快,最大的缺点似乎就是查询大数据量时比较慢。对程序员非常...
1、优越的性能,查询使用 reflection.emit 创建IL语言+委托绑定 然后对该对象进行 cache ,datareader直接赋值给cache对象,高性能拉姆达解析,总体性能媲美 http://ADO.NET ,查询速度稍慢于datareader但稍快于...
Greenplum是一个面向数据仓库应用的关系型数据库,它基于流行的PostgreSQL开发,因为有良好的体系结构,所以在数据存储,高并发,高可用,线性扩展,反应速度,易用性和性价比等方面有非常明显的优势,非常受欢迎.进入大数据...
SqlSugar 是一款简单易用的开源 ORM 框架,支持.NET CORE 和 MySql、SqlServer、Sqlite、Oracle 、 postgresql 等数据库,具有 EF NH 的功能,比 EF 更人性化的语法,支持真实的批量操作,另外还有媲美 DAPPER 的...
为了提供实时演示,该应用程序将通过支持AWS-RDS的Postgresql数据库部署到AWS Beanstalk。 它的webview todo应用程序是使用React.js编写的,您可以在这里找到子项目 。 并将其部署到启用了Web托管的S3存储桶。 Dict
例如,在较弱的硬件上,数据库写入速度较慢。 结果,工人在等待同步操作结果时执行的有用性较低的工作。 另外,给出了在golang上执行任务的示例 工作流程 在RabbitMQ中添加100.000条消息,每条消息都是一个命令...
码头工人 使用和并行运行runnig golang集成测试的秒杀/示例应用程序。 用法 您可以在使用或不使用dockertest的情况下运行测试... 第一次运行测试时,将提取docker ,因此速度可能会较慢。 go test -dt test.parallel 4
PostgreSQL 号称“世界上最先进的开源数据库“,可以运行在多种平台下,是tb级数据库,而且性能也很好 中大型企业 oracle 甲骨文 获得最高认证级别的ISO标准安全认证,性能最高, 保持开放平台下的TPC-D和TPC-C的...
Oracle工具,PG工具等 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,...我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
sqlakeyset:sqlalchemy的无偏移分页 ... 麻烦的是,您浏览的页面越多,查询的速度就越慢。 此外,如果您翻阅的结果频繁更改,则可以跳过或重复页面之间的结果。 键集分页避免了这些问题:即使选择百万分之一的
的单个实例运行,关闭所有并发保护以提供它作为单线程应用程序的更高速度。 因为它的 sqlite,数据是超压缩的。 事实上,您会发现用其他高级语言编写的程序将占用数千倍的内存。 并且仍然运行得更慢。 尤其是适当的...