【发布时间】:2015-09-17 11:35:23
【问题描述】:
为什么我的 Amazon Redshift 查询有时会工作,有时会被杀死,有时会耗尽内存?
这是一个简单的查询:
dev=# EXPLAIN SELECT row_number, browser_cookie, "timestamp", request_path,
status, outcome, duration, referrer
FROM annotated_apache_logs
WHERE date = '2015-09-15';
QUERY PLAN
------------------------------------------------------------------------------------
XN Seq Scan on annotated_apache_logs (cost=0.00..114376.71 rows=9150137 width=207)
Filter: (date = '2015-09-15'::date)
提取大约 900 万行:
dev=# SELECT count(*) FROM annotated_apache_logs WHERE date = '2015-09-15';
count
---------
9150137
(1 row)
窒息:
dev=# SELECT row_number, browser_cookie, "timestamp", request_path,
status, outcome, duration, referrer
FROM annotated_apache_logs
WHERE date = '2015-09-15';
out of memory
有时 sql 会显示 Killed。有时它会起作用。有时我会收到out of memory。不知道为什么。该表如下所示(我已删除上述查询中没有的行):
CREATE TABLE IF NOT EXISTS annotated_apache_logs (
row_number double precision,
browser_cookie character varying(240),
timestamp integer,
request_path character varying(2500),
status character varying(12),
outcome character varying(128),
duration integer,
referrer character varying(2500)
)
DISTKEY (date)
SORTKEY (browser_cookie);
我非常努力地使所有这些列尽可能小,以减少内存使用量。我现在要寻找什么?如果我正确读取了EXPLAIN 输出,这可能会返回一些数据。没有太多数据,没有连接,没有什么花哨的。对于“PB 级数据仓库”来说,这是微不足道的,所以我假设我在这里遗漏了一些基本的东西。
【问题讨论】:
标签: sql postgresql amazon-redshift