标签: postgresql

过多的空闲连接会影响 PostgreSQL 9.2 的性能吗?

我的数据库服务器上的一些查询似乎需要很长时间才能响应,而且我认为 CPU 使用率很高。运行时ps aux,我看到大约 250 个“空闲”连接(我认为太多了)。我还没有开始做一个完整的诊断,但我想知道这是否是一个开始寻找的好地方。

我还将 PgBouncer 与事务级池一起使用。我怀疑我可以idle通过调整池大小轻松减少连接数。但是,除非有充分的理由,否则我不想开始做太多更改。

idlePostgreSQL 9.2 中的很多连接会影响性能吗?

非常感谢!

postgresql performance database-design query-performance

12
推荐指数
1
解决办法
2万
查看次数

Postgres:计数(*)与计数(id)

我在文档中看到了count(*)和之间的区别count(pk)。我一直在使用count(pk)(哪里pkSERIAL PRIMARY KEY)不知道count(*).

我的问题是关于 Postgres 的内部优化。是否足够聪明地发现 aSERIAL PRIMARY KEY将存在于每一行中并且永远不会为假并且只计算行数,或者它是否会对每一行进行冗余谓词检查?我同意这可能是一个毫无意义的优化,但我只是好奇。

我看了看输出EXPLAINEXPLAIN VERBOSEcount(*)count(id)count(id > 50)看看是否EXPLAIN提到检查其输出的断言。它没有。

postgresql optimization count

12
推荐指数
1
解决办法
9486
查看次数

如何请求刷新 postgresql 事务日志?

我有以下问题:PostgreSQL 9.2 附带了一个“垂直”Linux 发行版(Sophos UMT)来存储其配置。不幸的是,自上次更新以来,某些实例的事务日志 (WAL) 似乎一直在增长,而从未被刷新。这会导致 pg_xlog 文件夹增长到比基本文件夹大几个数量级。

我现在处于一种微妙的情况:由于 WAL 文件的过度增长,其中一台机器(VM)的磁盘将在星期一之前变满。我已经向供应商打开了一个支持案例,但到目前为止,他们的帮助不是很大(他们建议我们用更大的磁盘重建 VM)。

该数据库从未备份,因为该软件以不同的方式执行备份(它有自己的备份程序并通过电子邮件发送备份文件),我想这就是 WAF 增长如此之快的原因。

恐怕我远不是 PostgreSQL 专家,所以很可能我问的是一个愚蠢或明显的问题,但是,请求刷新 WAL 文件的程序是什么?

理想情况下,我正在寻找一种程序,允许我在有问题的系统上刷新这些 WAL 文件,以便为自己争取足够的时间让供应商发布更好的修复程序。

编辑:根据要求,这里是SELECT version();查询的输出:

 PostgreSQL 9.2.4 on i686-pc-linux-gnu, compiled by gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973], 32-bit
Run Code Online (Sandbox Code Playgroud)

(1 行)

SELECT name, current_setting(name), source FROM pg_settings WHERE source NOT IN ('default', 'override');查询

 hot_standby                      | on                  | configuration file
 listen_addresses                 | *                   | configuration file
 log_destination                  | syslog              | configuration file
 log_min_duration_statement       | -1 …
Run Code Online (Sandbox Code Playgroud)

postgresql

12
推荐指数
1
解决办法
2万
查看次数

可重复读取不一致

http://www.postgresql.org/docs/9.2/static/transaction-iso.html

可重复读取模式提供了严格的保证,每个事务都可以看到完全稳定的数据库视图。但是,此视图不一定总是与同一级别的并发事务的某些串行(一次一个)执行一致。例如,即使是此级别的只读事务也可能会看到更新的控制记录以显示批次已完成,但看不到逻辑上属于批次的详细记录之一,因为它读取了控制记录的较早版本. 如果不小心使用显式锁来阻止冲突的事务,那么尝试通过在此隔离级别运行的事务来强制执行业务规则是不可能正常工作的。

这不是幻读,在可重复读取模式下是不可能的吗?

文档说可重复读取事务中的查询看到事务开始时的快照,那么查询怎么可能读取不一致的数据?

postgresql concurrency

12
推荐指数
2
解决办法
1120
查看次数

pgAdmin 显示多个结果集

使用 MS SQL 查询浏览器,我可以同时运行多个查询,并且每个结果集都将显示在它自己的窗口中。

PostgreSQL/pgAdmin 有这个功能吗?也许是插件?

postgresql pgadmin

12
推荐指数
1
解决办法
6267
查看次数

检查 postgresql 数据库是否存在(不区分大小写的方式)

是否有一种“优雅的内置”不区分大小写的方式来检查 db 是否存在?

我只找到了SELECT datname FROM pg_catalog.pg_database WHERE datname='dbname',但这是 CS 检查。想到的第一件事是检索所有数据库名称并手动过滤它们,但我认为有更优雅的方法来做到这一点。

postgresql catalogs

12
推荐指数
2
解决办法
3万
查看次数

如何在 Windows 上对 PostgreSQL 进行小升级,例如从 9.3.0 升级到 9.3.1?

使用 Enterprise DB 构建的 Windows 安装程序从 PostgreSQL(例如 9.3.0 到 9.3.1)执行小升级的推荐方法是什么?我应该先卸载还是在现有安装上安装?

当前安装是使用 postgresql-9.3.0-1-windows-x64.exe 执行的。现在我想使用 postgresql-9.3.1-1-windows-x64.exe 进行升级。

postgresql installation upgrade postgresql-9.3

12
推荐指数
2
解决办法
1万
查看次数

postgresql 中的数据库一致性检查器

PostgreSQL 中是否有任何 DBCC(数据库一致性检查器)命令?我可以找到 SQL 服务器 DBCC 命令,但不能找到 Postgres?我读到 postgresql 具有内置的性能调整功能,并且没有可用于 postgres 的 DBCC 命令。这是真的吗?

postgresql dbcc

12
推荐指数
2
解决办法
2万
查看次数

MongoDB 性能与 PostgreSQL 的 550 万行/文档对比

有人可以帮我比较这些查询并解释为什么 PostgreSQL 查询的执行时间不到 2000 毫秒,而 MongoDB 聚合查询需要将近 9000 毫秒,有时甚至高达 130K 毫秒吗?

PostgreSQL 9.3.2 on x86_64-apple-darwin, compiled by i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00), 64-bit
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 查询

SELECT locomotive_id,
   SUM(date_trunc('second', datetime) - date_trunc('second', prevDatetime)) AS utilization_time

FROM bpkdmp 
WHERE datetime >= '2013-7-26 00:00:00.0000' 
AND   datetime <= '2013-7-26 23:59:59.9999'
GROUP BY locomotive_id
order by locomotive_id
Run Code Online (Sandbox Code Playgroud)

MongoDB 查询

db.bpkdmp.aggregate([
   {
      $match : {
          datetime : { $gte : new Date(2013,6,26, 0, 0, 0, 0), $lt : new …
Run Code Online (Sandbox Code Playgroud)

postgresql performance mongodb

12
推荐指数
1
解决办法
1万
查看次数

在PostgreSQL中存储和查询滚动数据

我有大量的天气模型数据被放入 PostgreSQL 数据库。该机器具有 8 个内核和 16 GB 的 RAM。我正在使用 PostGIS 2.1 运行 PostgreSQL 9.3。每个表都有不同种类的天气数据(温度、露点、风等)。每个表将有 6-7 列:纬度、经度、点几何、高程、模型相关的日期时间以及 1-2 个感兴趣的数据值。数据将主要按时间和高程查询边界框。每个表将有大约 145,757,360 行(早于现在不再相关的数据将被删除)。我粗略估计每个表的大小约为 10 GB,没有索引。(这是 52 字节的数据加上每行 23 字节的开销)。随着新模型数据可用,数据将定期更新/插入。笔记:

所以我正在研究这两个计划:

  1. 简单地按(日期时间,高程)索引和聚类,并为点几何添加一个额外的索引。运行一个常规的 cron 作业来删除旧行、运行vacuum/analyze 和重新集群。
  2. 按日期时间分区,然后按每个表的高程进行聚类和索引,并在几何上有索引。运行常规的 cron 作业以添加新表并删除旧表。

更远,

  • 所以,我知道删除表和删除和清空表的效率要高得多。但是,否则我会看到性能提升吗?
  • 当所有表将被均匀更新和选择直到删除不相关时,分区是否合适(文档表明分区在只选择其中几个时效果最佳)?

传递数据时,选择会比聚集索引更快吗?如果同时发出多个请求,答案是否会改变?

谢谢你。我希望我提供了所有需要的数据。如果没有让我知道,我会添加它。

postgresql database-design partitioning postgis postgresql-9.3

12
推荐指数
1
解决办法
1665
查看次数