我没有看到 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 …
如何在复合类型的子字段上创建约束?
伪代码
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)
我有这样的记录
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条款。
我希望它们按字母排序,然后按数值排序。
我在我的 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) 我需要让我的用户指定他们想要选择的列列表。到目前为止,我知道实现这一目标的两种方法。
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) 我有一个带有热备用服务器的 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) 如果我的备用 (postgres) 在故障转移前落后几秒钟。在 PostgreSQL 中进行故障转移后同步回旧主数据库的最简单方法是什么。
在 Oracle 中,如果启用了闪回,我们可以选择恢复失败的主数据库。
如果我在新的主服务器中故障转移后生成了所有 WAL 档案,我们在 postgres 中有任何这样的选项吗?还是我们需要完全重建备用?
在我的开发 (Ubuntu linux) 笔记本电脑上,我有一个postgres操作系统帐户,该帐户拥有 Postgres 安装。
当我想执行任何 postgres 活动、创建/删除数据库等时,我必须首先 su 到 postgres 帐户。
$ sudo su postgres
Run Code Online (Sandbox Code Playgroud)
如何更改我自己的操作系统帐户以获得postgres的操作系统级权限,这样我就不需要su 了?
根据主题,我有一个 varchar 字段,我在其中存储一些用逗号分隔的数字。该列表根据客户的选择增长和缩小。然后我在查询中使用它来检查特定值是否在该列表中
value || ','
Run Code Online (Sandbox Code Playgroud)
它运行良好,但正在考虑将其转换为整数数组。
这在技术/性能方式和正确编程数据库方面是否是更好的解决方案?
我正在考虑将用户的 OID 存储在表的“所有者”列中,因此如果他们更改了用户名,我无需执行任何操作。
我知道可以将 pg_has_role() 与 OID 一起使用,这很好。
是否有一种快速简便的方法来获取当前用户的 OID,而无需将其与系统表之一进行匹配?
postgresql ×10
ado.net ×1
array ×1
constraint ×1
dynamic-sql ×1
failover ×1
linux ×1
natural-sort ×1
order-by ×1
performance ×1
pgadmin-1.18 ×1
replication ×1
size ×1
sorting ×1
users ×1