百科问答小站 logo
百科问答小站 font logo



clickhouse到底有哪些吊炸天的优化? 第1页

  

user avatar   xiexiaolong 网友的相关建议: 
      

利益相关: OLAP查询引擎开发者,TPC-H 30TB榜单排名第一的系统的开发者之一。

先放结论: Clickhouse没有任何吊炸天的优化,它只是把论文和社区中大家都讨论过的那些优化技巧,很好地实现了一下而已。(本回答只讨论查询链路)

谈起数据库查询引擎或者大数据执行引擎,你一定听说过这些关键词:向量化、列式执行、SIMD、LLVM等等等。每个人都会讨论这些,但是很少有人能够把这些东西讲的很透彻。现在大部分生产用的查询引擎,还是最原始的火山模型那一套,顶多带个并行查询和LLVM-based code generation。很多产品都在PR稿子中宣传自己实现了向量化之类的技术、然后放个demo的测试结果,但是基本上经不起推敲。如果我们把现在所有讨论过的查询引擎优化技术的总分设定为100,那么大部分查询引擎只能得1分,clickhouse可以得30分。Clickhouse做的无非就是把这些技术一个一个地进行工程优化、实现到生产系统中。这不是我说的,这是clickhouse自己的文档说的[1]。

为什么会这样呢?我觉得是因为在数据库这个圈子,大家太在意一个概念是不是够新、算法是不是够优美,觉得“工程”是很trivial的东西。实际上,只需要招一些有性能优化、HPC经验的工程师做些简单分析,就能找到查询引擎的性能瓶颈,然后照着之前大家讨论过的那些概念去实现就好了。但是这东西不能上PPT、也不能发论文,所以在意的人不多。

举个例子,内存分配。很多人可能都做过系统内存分配的优化,大家一讨论内存分配都是tcmalloc之类的高大上得词。但是在OLAP查询引擎里,执行引擎是迭代式的、生成大量的中间结果。比如某个算子需要不断生成很多个长度20字节的内存块。实际上开发的时候只需要一次分配个16KB的内存、然后一块一块的去切,问题就解决了。这只是一个很小的开发技巧,不需要任何高大上的算法。

再举个例子,很多论文讨论用LLVM之类的代码生成工具去完整地生成一颗查询树的代码。有这个想法的人肯定没基于LLVM做过开发。先不说性能是否有优势,纯粹用LLVM开发复杂工程的工程难度是指数级别的,现实中不可实现。早在2011年的一篇文章,这个问题就已经有了结论[2],但是现在学术圈还是讨论这个概念。

Clickhouse就是典型的不管概念是否听起来炫酷、只在乎性能的产品。比如clickhouse的hash agg,用模板实现了30多个版本,覆盖了最常见的group key的类型。这么做的目的就是为了减少一些类型判断的时间。Clickhouse的性能,就是大量类似的工程优化堆积起来的。

当然clickhouse也有缺陷。从我自己做过的测试来看,clickhouse主要关注单表优化,不能很好地处理复杂表达式和多表join的场景,而且在需要落盘的场景clickhouse也没有做过很好的优化。有些原因是clickhouse没有在这个点上花太多功夫,有些原因则是clickhouse的列式架构本身的限制。

下一个五年,希望自己能够有机会做出clickhouse这样的产品。

对了,clickhouse默认开8线程,当然快。

[1]Why ClickHouse is so fast?

[2] Sompolski, Juliusz, Marcin Zukowski, and Peter Boncz. "Vectorization vs. compilation in query execution." InProceedings of the Seventh International Workshop on Data Management on New Hardware, pp. 33-40. 2011.


user avatar   grakra 网友的相关建议: 
      

首先这是Fed一月 memo

先说结论:

FOMC 维持利率在 0-0.25% 不变。且确定 3 月完全停止 QE,同时 3 月加息也是箭在弦上,基本会后声明皆符合市场预期,没有太多的意外。

Powell 记者会确实是偏一点点的小鹰派,但我也认为,Powell 的说法不至于拉升市场加息预期至 5次 、并拉升缩表预期至上半年,反而比较像是在强化加息 4 次之预期。

另外我个人觉得,一些中文媒体似乎误读了Powell 记者会的部分片段,下面 Allen 再进一步说明。


1. 3 月加息停止 QE 早已定价

本次会议 Fed 再次确认 3 月将准备第一次加息,并同时停止 QE。

Fed 也再次重申,货币政策是要支持美国经济达到充分就业、与通膨长期均值维持 2.0% 的两大目标。

这部分我想市场早已定价,这裡完全不会是问题,所以我们不讨论太多。


2.未来加息在每次会议都可能发生 (?)

Powell 的原文说法是:Won't Rule Out Hike Every Meeting.

但我有看到部分中文媒体写:不排除每次会议都加息的可能性。

上述我想或许是误读了 (还是其实是我自己误会中文的意思 ?)

我的理解是:Powell 是说加息在未来每场会议都可能发生,指的是“不会在特定月份才加息”,不是说每场都要加息。

Powell 说得很合理,经济本来就是动态的,加息本就不会侷限在什麽月份才启动,端看当时的经济状况而定。

我认为Powell 上述说法,并未延展今年加息预期至五次或更多,若有这种想法,那绝对是误读了。


3.更大规模的缩表?

Powell 在记者会上提到,Fed 需要更大规模的缩表,但请大家不要恐慌,因为我又觉得部份中文媒体过度解读了。

我认为Powell 说到的“更大规模缩表”,在思维上指的是:

因为当前 Fed 资产负债表高达 8.9 万美元,这是新冠疫情爆发之前的两倍大,显然在绝对规模上是非常巨大的。

而上一轮 2017-2019 年 Fed 缩减资产负债表,是自 4.4 万亿美元缩到 3.7 万亿美元停止,缩表的幅度大概是 15.9%,共缩减了约 7000 亿美元。

确实每次缩表的经济背景绝对是不一样的,所以幅度也绝对不会相同,但我们随便抓,假设本轮缩表将缩减 10% 资产负债表规模,那麽这也要降低 8900 亿美元,规模当然很大。

但我认为,不需要过度恐慌在“更大规模缩表”这几个字上。更重要的,我认为是“Fed 缩表的速率是多少?”

我相信缩表没问题,缩表太快才是问题,因为缩表速度若太快,将直接影响的会是美债殖利率升速、以及殖利率曲线的斜率。

这点Powell 也非常清楚,Powell 在记者会上也不断强调,联准会内部尚未具体讨论到一切缩表的进度,要等到 3 月再说。


4.缩表比较可能落在下半年

Powell 在记者会上说明,希望在加息至少一次之后,再来开会讨论缩表的事情,且委员会至少将讨论一次,才会做最终拍板。

更重要的,Powell 希望缩表的进程是有秩序的、是可被预见的过程。

从上述Powell 丢出的时间表看,我个人认为缩表将落在 2022 下半年,最快可能是 6 月份,因为在 3 月加息后,Fed 才会来讨论缩表。

我个人相信 Fed 现在内部早已在讨论缩表,但委员会显然尚未准备好来与市场沟通缩表的前瞻指引。

而缩表这麽大的事情,我个人认为 Fed 需要起次跟市场沟通 2 次,并把缩表规划说得非常清楚之后,才会开始进行,所以比较合理的缩表时间,估计将会落在下半年。


5.最大风险:高通膨

Powell 在记者会上,大概提到了 800 万次的“高通膨压力”,并认为目前美国通膨风险仍在上升阶段,但预计 2022 通膨还是会回落。

Powell 说明,目前美国通膨居高不下,主要仍是供应链所致,白话来说就是供需仍然失衡,且供给侧 (Supply Side) 改善的速度是低于预期。

Powell 强调,目前美国高通膨持续存在,而美国经济要的是长期扩张,所以若要长期扩张,物价势必需要保持稳定。

这边开始进入正题了,我认为这是本次会议的最重要核心,是让我体感上,觉得 Fed 鹰派的地方。我认为 Fed 承认自己落后给菲利浦曲线 (Behind the curve),简单而言,Fed 这次的加息速度大幅落后给通膨。

由于 Fed 在 2021 年对于通膨的误判,先前 Fed 在 2021 年认为通膨在年底就可望自然回落,但也就是因为这件事没有发生,反而通膨还更为严重,所以目前才有使用加息来追赶通膨的压力。但当前宏观环境看,通膨的压力是来自于缺工、供应链紧俏等问题,再加上拜登政府的大力推行财政刺激在那边推波助澜~

所以这一次的通膨是来自于实体经济上的供需失衡问题,并不是金融市场过度投机、企业超额投资等问题,我认为 Fed 在这次的通膨问题上,能做得空间非常有限。

这裡将产生一个不确定性的较大风险,就是 Fed 只能靠货币紧缩去压通膨预期,但实体经济的根本性通膨问题,还是没有获得解决。变成最终 Fed 只能再用更剧烈的紧缩政策,去引导通膨预期走低后,尝试来压低实际通膨率,所以这裡将让 Fed 的紧缩路径,存在著较大不确定性。

比较好的处理方式,应该是直接去解决实体经济上的缺工和供应链/例如我之前提到的塞港问题,让实际通膨率自己走低、而不是靠 Fed 挤压通膨预期之后去引导。

谁可以去把坐在白宫裡疑似患有阿兹海默的白髮老头一巴掌打醒...还我特~


结论:我个人认为 Fed 今年将加息四次,不至于加息五次,而加息四次之预期,相信市场应该已经定价;至于缩表,相信市场尚未定价,估计将落在 2022 下半年,最快可能是 6 月。

如果 Fed 今年加息五次,我会感到非常意外,因为这意味著 Fed 很可能在 2023 年底、2024 年初,就因为美国经济放缓太快而需要降息,Fed 这波操作就会变得非常韭。

最后说说股市的想法目前 Nasdaq 已经插水一段时日,抑制通胀是当务之急,而股市所谓修正才多久已出现V转。对通胀而言意义不大,修正数月才可能有帮助~所以我之前一直描述为“恐慌”。因此对白髮老头而言,怎麽做才有利于中期选举就很清晰了。

最好还是坚持认为市场或已定价加息四次之预期,但缩表预期则是尚未定价的观点。

配置上美股我倾向持有科技权值股,一些 Megacap 的估值我认为合理、前景确定性较高,而这样也可以让你的收益贴著 QQQ 走。

考虑到一堆成长股腰斩,我也愿意加仓接刀成长股,但建议佔据投资组合的比例,或许不要超过 15%,如果选股功力不错,这裡就会开始让你的收益拉开与 QQQ 之类的差距。

最后,我相信人人都会想在市场下跌的环境裡接刀,接刀不是不行,但若接刀失败,斩缆我建议速度要快,我个人不考虑价投的话一次斩缆的比例都是 50% 以上。




  

相关话题

  如何优雅地给妹子优化电脑(Windows)? 
  数学家下围棋,水平一定会很高吧? 
  为什么VAE-GAN的训练很容易发生梯度爆炸,如何避免? 
  「千年级别的人体经验数据」到底有多大? 
  为什么国内流行hbase,国外反而多用cassandra? 
  《要素市场化配置综合改革试点总体方案》印发,其中有哪些需要关注的内容? 
  如何看待今日头条自媒体发布谣言称「支付宝几乎秒开是因为采用华为方舟编译器」? 
  如何看待目前国内「隐私计算」行业现状,市场发展有哪些趋势? 
  苏联计划经济体制能否在大数据与智能决策时代展现出某些优势? 
  计算机专业应该如何发展? 

前一个讨论
有哪些利用搜索引擎(Search Engine)辅助自然语言处理任务(NLP)的论文?
下一个讨论
如何评价 DeepMind 发表在 Nature 上的使用深度强化学习对托卡马克等离子体进行磁控制?





© 2024-12-18 - tinynew.org. All Rights Reserved.
© 2024-12-18 - tinynew.org. 保留所有权利