标签: postgresql

英特尔 S3700 SSD 上的 Postgres 写入性能

我没有看到 Postgres 写入性能的提高,我认为我会使用单个 SSD 与 (16) 15k RPM SAS 驱动器的硬件 RAID 10 阵列。

我有一个戴尔 R820,带有 PERC H700 硬件 RAID 卡和 RAID 10 阵列中的 16 个 15k RPM SAS 驱动器,以及一个 800GB 的 Intel s3700 SSD。该服务器具有 128GB 的​​ RAM 和 64 核的 Xeon E5-4640,频率为 2.40GHz,运行 CentOS 6.4 和 Postgres 9.2.4。

我正在使用 pgbench 将 RAID 10 阵列中的 SAS 驱动器与单个 SSD 进行比较。

15k RPM SAS RAID 10 结果

pgbench -U postgres -p 5432 -T 50 -c 10 pgbench
开始真空……结束。
交易类型:TPC-B(有点)
比例因子:1
查询方式:简单
客户数量:10
线程数:1 …

postgresql performance

7
推荐指数
2
解决办法
6272
查看次数

对复合类型的约束

如何在复合类型的子字段上创建约束?

伪代码

create type axis(
    major_axis float,
    minor_axis float,
    angle float constraint angle_constraint check(angle between -90 and 90)
);

create table sample(
    axis1 axis,
    axis2 axis
);
Run Code Online (Sandbox Code Playgroud)

这在 PostgreSQL 9.2 中可能吗?正如这里提到的那样,在 9.1 中似乎是不可能的。

postgresql constraint postgresql-9.2

7
推荐指数
1
解决办法
1843
查看次数

先按字母顺序再按数字

我有这样的记录

 A5
 A4
 Z1
 B2
 C7
 C1A
 C11A
 B1
 B4
Run Code Online (Sandbox Code Playgroud)

我希望它们以这种方式排序

A4
A5
B1
B2
B4
C1
C11A
C7
Z1
Run Code Online (Sandbox Code Playgroud)

使用该ORDER BY条款。

我希望它们按字母排序,然后按数值排序。

postgresql order-by sorting natural-sort

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

为什么 Django 会话表在 PostgreSQL 上增长

我在我的 Django 1.4.8 项目中通过 PgBouncer 1.4.2 使用 PostgreSQL 9.1.6。django_session表一直在增长。VACUUM 没有帮助。VACUUM FULL 运行数小时。TRUNCATE通常只帮助。

该表包含大约 10KB 的行。每秒更新 40 次。

# SELECT table_name, pg_size_pretty(table_size) AS table_size, pg_size_pretty(indexes_size) AS indexes_size, pg_size_pretty(total_size) AS total_size
FROM (
    SELECT table_name, pg_table_size(table_name) AS table_size, pg_indexes_size(table_name) AS indexes_size, pg_total_relation_size(table_name) AS total_size
    FROM (
        SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
        FROM information_schema.tables
    ) AS all_tables ORDER BY total_size DESC LIMIT 1
) AS pretty_sizes;
        table_name         | table_size | indexes_size | …
Run Code Online (Sandbox Code Playgroud)

postgresql size

7
推荐指数
1
解决办法
2762
查看次数

还有其他方法可以选择列的动态列表吗?

我需要让我的用户指定他们想要选择的列列表。到目前为止,我知道实现这一目标的两种方法。

1. 使用refcursors

CREATE OR REPLACE FUNCTION selecttestwithcolumnlist(
ticker character varying, 
columnlist character varying)
  RETURNS refcursor AS
$BODY$
DECLARE 
  ref1 refcursor;
BEGIN

OPEN ref1 FOR EXECUTE 
'select ' || ColumnList || ' from Prices WHERE Ticker=$1;'
USING     Ticker;
RETURN ref1;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE
Run Code Online (Sandbox Code Playgroud)

这个函数很容易从我的 Ado.Net 客户端调用。我需要做的就是传递参数。但是,如果我想从 pgAdmin 测试此功能,则仅当我保持事务打开时,结果集才会在屏幕上打开。这很不方便。当然,将数据显示为 HTML 表格或 Excel 电子表格很容易,但这有点不方便。

2. 使用记录集

CREATE OR REPLACE FUNCTION SelectPrices(colList VARCHAR)
 RETURNS SETOF record AS
$func$
BEGIN

RETURN QUERY EXECUTE
'SELECT ' || colList || ' FROM prices ORDER …
Run Code Online (Sandbox Code Playgroud)

postgresql ado.net dynamic-sql postgresql-9.3 pgadmin-1.18

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

Postgres 日志文件不旋转

我有一个带有热备用服务器的 postgres 系统。他们使用相同的配置文件。我已将日志轮换设置为使用 log_rotation_size 和 log_rotation_age,以便主服务器每 10MB 轮换一次,备用日志每天轮换一次。我的参数如下:

postgres=# select name,setting,unit from pg_settings where name like '%log%';
            name             |            setting             | unit
-----------------------------+--------------------------------+------
 log_autovacuum_min_duration | -1                             | ms
 log_checkpoints             | on                             |
 log_connections             | on                             |
 log_destination             | stderr                         |
 log_directory               | /apps/postgres/pg_log          |
 log_disconnections          | on                             |
 log_duration                | off                            |
 log_error_verbosity         | default                        |
 log_executor_stats          | off                            |
 log_file_mode               | 0600                           |
 log_filename                | postgresql-%Y-%m-%d_%H%M%S.log |
 log_hostname                | on                             |
 log_line_prefix             | %u %h %p                       |
 log_lock_waits              | …
Run Code Online (Sandbox Code Playgroud)

postgresql

7
推荐指数
1
解决办法
7238
查看次数

在 PostgreSQL 中进行故障转移后,我们可以使用旧的主数据库与备用数据库同步吗?

如果我的备用​​ (postgres) 在故障转移前落后几秒钟。在 PostgreSQL 中进行故障转移后同步回旧主数据库的最简单方法是什么。

在 Oracle 中,如果启用了闪回,我们可以选择恢复失败的主数据库。

如果我在新的主服务器中故障转移后生成了所有 WAL 档案,我们在 postgres 中有任何这样的选项吗?还是我们需要完全重建备用?

postgresql replication failover

7
推荐指数
1
解决办法
1237
查看次数

将 postgres 超级用户授予 linux 帐户

在我的开发 (Ubuntu linux) 笔记本电脑上,我有一个postgres操作系统帐户,该帐户拥有 Postgres 安装。

当我想执行任何 postgres 活动、创建/删除数据库等时,我必须首先 su 到 postgres 帐户。

$ sudo su postgres
Run Code Online (Sandbox Code Playgroud)

如何更改我自己的操作系统帐户以获得postgres的操作系统级权限,这样我就不需要su 了

postgresql linux

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

PostgreSQL 以逗号或整数数组分隔的整数列表以提高性能?

根据主题,我有一个 varchar 字段,我在其中存储一些用逗号分隔的数字。该列表根据客户的选择增长和缩小。然后我在查询中使用它来检查特定值是否在该列表中

value || ','
Run Code Online (Sandbox Code Playgroud)

它运行良好,但正在考虑将其转换为整数数组。

这在技术/性能方式和正确编程数据库方面是否是更好的解决方案?

postgresql array

7
推荐指数
1
解决办法
6798
查看次数

在 Postgres 中获取当前用户 OID 的最快方法?

我正在考虑将用户的 OID 存储在表的“所有者”列中,因此如果他们更改了用户名,我无需执行任何操作。

我知道可以将 pg_has_role() 与 OID 一起使用,这很好。

是否有一种快速简便的方法来获取当前用户的 OID,而无需将其与系统表之一进行匹配?

postgresql users postgresql-9.3

7
推荐指数
1
解决办法
5003
查看次数