小编rap*_*ael的帖子

分区约束不用于涉及按时间戳分区的表的连接

我有一个分区表结构,如:

CREATE TABLE measurements (
    sensor_id bigint,
    tx timestamp,
    measurement int
);

CREATE TABLE measurements_201201(
    CHECK (tx >= '2012-01-01 00:00:00'::timestamp without time zone 
       AND tx < ('2012-01-01 00:00:00'::timestamp without time zone + '1 mon'::interval))    
)INHERITS (measurements);
CREATE INDEX ON measurements_201201(sensor_id);
CREATE INDEX ON measurements_201201(tx);
CREATE INDEX ON measurements_201201(sensor_id, tx);
....
Run Code Online (Sandbox Code Playgroud)

等等。每个表有大约 20M 行。

如果我在WHERE子句中查询传感器样本和时间戳样本,查询计划会显示选择的正确表和使用的索引,例如:

SELECT *
FROM measurements
INNER JOIN sensors TABLESAMPLE BERNOULLI (0.01) USING (sensor_id)
WHERE tx BETWEEN '2015-01-04 05:00' AND '2015-01-04 06:00' 
    OR tx BETWEEN '2015-02-04 …
Run Code Online (Sandbox Code Playgroud)

postgresql performance partitioning postgresql-9.6 query-performance

11
推荐指数
1
解决办法
1334
查看次数

我应该为云托管的 PostgreSQL 数据仓库获得多少 RAM?

我正在考虑将当前的 PostgreSQL 数据仓库迁移到具有 SSD 存储和 RAM 作为主要大小变量之一的云主机。我们目前处理的最庞大的数据将存在于每月分区表中。每个月大约有 70GB 的索引(40-ish w/o)。数据可能主要是定期批量加载,然后由 5 名研究人员组成的小团队访问。

我一直在尝试在此站点上搜索有关规范 RAM 的建议,我发现的所有内容是:

  • 适合整个数据库(>1TB,不现实)
  • 更多更好

是否应该有足够的 RAM 来至少将整个索引 (16GB) 加载到 RAM?我还需要提供其他详细信息吗?

postgresql data-warehouse memory

10
推荐指数
1
解决办法
4493
查看次数

COMMIT 在 PostgreSQL 9.5 中的匿名 plgpsql 函数中工作吗?

我正在将大量大文件导入到要使用匿名 plpgsql 代码块中的循环进行分区的多个表中$do$

$do$
BEGIN
    FOR yyyy in 2012..2016 THEN 
        EXECUTE $$COPY table$$||yyyy||$$ FROM 'E:\data\file$$||yyyy||$$.csv DELIMITER ',' CSV;$$;
    END LOOP;
END;
$do$ LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)

整个过程大约需要 15 个小时,我希望如果在某个时候出现导入错误,所有导入都不会回滚。

IIRCCOMMIT在存储函数中不起作用,因为整个函数被视为单个事务。

文档中$do$

代码块被视为没有参数的函数体,返回 void。它被解析和执行一次。

我假设这意味着整个$do$事务是一个事务,因此块内的提交将不起作用。我对么?

postgresql transaction plpgsql postgresql-9.5

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