- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 RDS 上的 Postgres 10.6 中从标准化的分区表生成 Tukey 盒须图,其中包含 3*10^9 行。
我开始使用连续的多个 View ,包括一个聚合步骤和一个后续的离群值检测步骤。首先,在聚合步骤中,我计算中值、25%、75%、IQR、(25% - 1.5*IQR) 下晶须和 (75% + 1.5*IQR) 上晶须。其次,在离群值检测步骤中,我在表格中搜索 mustache 之外的值。
create view aggregation as
select
a.a_name,
b.b_name,
c.c_name,
percentile_cont(0.5) within group (order by d.D) as median,
etc for 75%, IQR, whiskers
from dtable as d
join atable as a on a.a_id = d.a_id
join etable as e on e.e_id = d.e_id
join ftable as f on f.f_id = e.f_id
join btable as b on b.b_id = f.b_id
join ctable as c on c.c_id = b.c_id
where (d.e_id between 3440500 and 3459500)
and (c.c_name = 'this_c_in_particular')
and (b.b_name in ('first_b', 'second_b', 'third_b'))
group by
a.a_name,
b.b_name,
c.c_name
;
请注意,dtable
由 e_id
分区
create view outliers as
select d.*
from dtable as d
join atable, etable, ftable, btable, ctable
join aggregation as agg on
agg.a_name = atable.a_name,
agg.b_name = btable.b_name,
agg.c_name = ctable.c_name
where d.value < agg.lower_whisker or d.value > agg.upper_whisker
;
目前,使用平面客户端 pandas 数据框,我可以在网络传输和服务器端下采样后 10 秒内执行这些聚合。但是,在客户端,这些聚合至少需要 1 分钟才能运行。
(EXPLAIN ANALYZE)计划可在此处获得:https://explain.depesz.com/s/0gAu
欢迎任何见解或讨论 - 感谢阅读。
最佳答案
执行计划有一些我不明白的地方:
如果没有计划并行工作器,为什么会有一个 Gather
节点?从 loops
我希望有两个 worker 。
为什么expain.depesz.com不统计底层节点的895693次迭代(可能和我一样被上面的搞糊涂了)
尽管如此,还是可以立即检测到一些问题:
有严重的错误估计(725 而不是 895693 实际行!)。
您的大部分时间都花在了溢出到磁盘的排序上。
下面是您可以在不重写查询的情况下改进的地方:
增加work_mem
直到排序是quicksort memory
。这应该是最大的收获。
你不必在全局范围内增加它,你可以运行类似的东西:
BEGIN;
SET LOCAL work_mem = '1GB';
SELECT /* your query */;
COMMIT;
有些表似乎有过时的统计数据。尝试ANALYZE
所有有问题的表,也许这会有所帮助。
通过避免错误引导的嵌套循环连接,您可能可以多花几秒钟。也许 ANALYZE
会解决这个问题。
作为最后的手段,您可以简单地禁用该查询的嵌套循环,方法是为一个查询设置 enable_neSTLoop = off
,使用我为 work_mem
展示的相同技巧以上。
分区表上的扫描不是你的问题,所以你不必担心并行化(PostgreSQL v11 已经变得更加智能)。
如果以上所有方法都不能使查询速度足够快,您可以考虑使用物化 View 。然后你会得到稍微陈旧的数据,但速度很快。
关于postgresql - 如何加速分区表的服务器端聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55485403/
我想在我的 iPhone 应用程序中加入线性回归。经过一些搜索,我发现 Accelerate Framework 中的 LAPACK 和 BLAS 是正确的库。但是我很难将加速框架添加到我的 XCod
有什么方法可以加速 JS 脚本(我指的是一些复杂的 DOM 操作,比如游戏或动画)? 最佳答案 真的没有办法真正加快速度。您可以压缩它,但不会快很多。 关于Javascript 加速?,我们在Stac
有时,我必须为一个项目重新导入数据,从而将大约 360 万行读入 MySQL 表(目前是 InnoDB,但我实际上并不局限于这个引擎)。 “加载数据文件...”已被证明是最快的解决方案,但它有一个权衡
在尝试计算加速时,我被卡住了。所以给出的问题是: 问题 1 如果程序的 50% 增强了 2 倍,其余 50% 增强了 4 倍,那么由于增强而导致的整体加速是多少? Hints:考虑增强前(未增强)机器
目前我正在处理实时绘图,但可视化非常慢。我想知道你可以做些什么来加速 Matplotlib 中的事情: 后端如何影响性能?是否有后端 实时绘图比其他人更好吗? 我可以降低分辨率以提高 FPS 吗? 如
我有一个小型测试框架。它执行一个循环,执行以下操作: 生成一个小的 Haskell 源文件。 使用 runhaskell 执行此操作.该程序生成各种磁盘文件。 处理刚刚生成的磁盘文件。 这种情况发生了
这是我的网站:Instant-YouTube 如您所见,加载需要很长时间。在 IE8 及以下甚至有时会导致浏览器崩溃。我不确定是什么原因造成的。可能是 Clicksor 广告,但我认为是 swfobj
是否可以加速 SKSpriteNode? 我知道可以使用 node.physicsBody.velocity 轻松设置速度但是设置它的加速度有多难? 最佳答案 从牛顿第二定律倒推运动:F = m.a您
有没有人有加速 FCKEditor 的技术?是否有一些关键的 JavaScript 文件可以缩小或删除? 最佳答案 在最新版本 (3.0.1) 中,FCKEditor 已重命名为 CKEditor .
我有以下 MySQL 查询,需要一天多的时间才能执行: SELECT SN,NUMBER FROM a WHERE SN IN (SELECT LOWER_SN FROM b WHER
我现在正在开发一款使用加速来玩的游戏。我找到了如何让我的元素移动,但不改变它的“原点”,或者更准确地说,改变加速度计算的原点: 事实上,我的图像是移动的,它的中心是这样定义的: imageView.c
我有一个 mysql 表,其中存储有 4 列的成员消息: message_id(主键,自增) sender_id( key ) receiver_id( key ) 消息内容 我做了很多 SELECT
我在 cuda_computation.cu 中有以下代码 #include #include #include #include void checkCUDAError(const char
我正在使用 BeautifulSoup 在 for 循环中解析数千个网站。这是我的代码片段: def parse_decision(link): t1 = time.time() de
我正在使用 OpenCV 2.4 (C++) 在灰度图像上进行寻线。这涉及一些基本的图像处理步骤,如模糊、阈值、Canny 边缘检测器、梯度滤波器或霍夫变换。我必须在数千张图像上应用寻线算法。 考虑到
当我试图连续生成四次相同的报告时,我刚刚分析了我的报告应用程序。第一个用了 1859 毫秒,而后面的只用了 400 到 600 毫秒。对此的解释是什么?我能以某种方式使用它来使我的应用程序更快吗?报告
当我打开 Storyboard文件时,由于其中包含的 VC 数量,打开它需要 1-2 分钟。加快速度的最佳做法是什么?我们应该将一些 VC 移动到不同的 Storyboard文件中吗?我们是否应该使用
我有一个包含多个页面的 UIPageViewController。每个页面都是相同的 View Controller ,但会跟踪页码并显示 PDF 的正确页面。问题是每个 PDF 页面都需要在 cur
这实际上是两个问题,但它们非常相似,为了简单起见,我想将它们放在一起: 首先:给定一个已建立的 Java 项目,除了简单的代码内优化之外,还有哪些不错的方法可以加快它的速度? 其次:在用Java从头写
我有一个包含 1000 个条目的文档,其格式类似于:
我是一名优秀的程序员,十分优秀!