我第一次和postgres合作。我有大量的中小型数据分析的经验(即适合于内存的内容,可以在R、Stata、Matlab等中进行分析),但我现在第一次使用大数据(300-750 am )。
因此,我不知道事情要花多长时间。我认为我的数据库表现很差,但我从来没有在这些规模上工作过,我真的不知道。
因此,我的问题是:即使是基本的查询,我在237 on表上至少要花8个小时。真空需要6小时。和一个查询提取不同的值对:
CREATE TABLE UserPairs AS
SELECT DISTINCT a, group_a, sum(quantity) FROM cdr GROUP BY (a, group_a) HAVING type = 'DATA' AND group_a IS NOT NULL;在我流产之前跑了8个小时。
试图在主列上构建4个哈希索引的尝试运行了24小时,然后崩溃。
硬件:3核,12 gb内存Windows 8服务器VM。(我知道,但我无法控制我的硬件。长话短说)。
因此,基本上:在一个数量级内,对于这样大小的表,我应该期望基本查询使用多长时间?
如果这看起来很离谱,我该如何获得更精确的基准呢?我现在正在运行pgbench,但是找不到关于如何解释结果的资源。这个利斯特瑟夫交换表明没有任何结果存储库.
发布于 2014-04-14 04:12:53
你必须首先设定期望--这样的屏幕应该在1秒内完成每个动作,所有动作在5秒内完成,以此类推。例如,搜索屏幕应该在3秒内检索结果,预订操作(订票)应该在30秒内完成等等。
然后努力实现这些目标。这就是你想要的“正常”表现。现在去实现那些目标吧。数据库可能是您的瓶颈,但可能不是。要识别数据库端的问题,请尝试使用像獾这样的工具。这将告诉您哪些查询需要时间。
顺便说一句,8小时的查询在任何情况下都是不可接受的。尝试工具帕格特,看看是否有优化参数的范围。
发布于 2014-04-13 20:59:33
如果要分组,则不需要distinct,并将条件从having移动到where
select a, group_a, sum(quantity)
from cdr
where type = 'DATA' and group_a is not null
group by a, group_a;https://dba.stackexchange.com/questions/63104
复制相似问题