Thriving in a Crowded and Changing World: C++ 2006–2020 读后总结 C++在编程语言排行榜里基本上一直在前三,可以说是经久不衰。C++之父Bjarne Stroustrup的这篇长论文《Thriving in a Crowded and Changing World: C++ 2006–2020》解释了C++经久不衰的原因,C++从11到23的发展以及经验教训。这篇文章就是来总结这篇论文,把我认为其中的精华的部分抽取出来并解释其内在逻辑。
ClickHouse性能调优 - 当磁盘IO是瓶颈的时候 ClickHouse的性能调优问题是一个大的话题。虽然ClickHouse以其高速的数据处理能力而闻名,但在实际使用中,磁盘IO常常成为影响系统性能的瓶颈。本文将探讨在磁盘IO成为瓶颈时,如何通过一系列优化措施来提升ClickHouse的整体性能。
ClickHouse的向量处理能力 ClickHouse通过其强大的向量数据库功能,实现了高效的高维向量数据处理和搜索。这些功能包括支持余弦距离和欧几里得距离的相似度计算,以及近似最近邻搜索(如Annoy索引),极大地提升了性能和效率。通过将非结构化数据转换为向量,ClickHouse在推荐系统、问答系统、图像和视频搜索等领域展现了显著的应用价值。这种能力不仅提高了数据处理的精确度,还在大规模数据处理中实现了良好的性能与精确度平衡。
STL库的ranges C++20的库通过引入范围和视图的概念,不仅丰富了STL的功能,也引领了更现代、高效、表现力强的编程实践。它鼓励开发者采用更函数式和声明式的编程风格,同时保持了与传统STL的兼容,标志着C++在数据处理领域的一大进步。
OLAP与数据仓库和数据湖 本文阐述了OLAP、数据仓库和数据湖方面的基础知识以及相关论文。同时记录了我如何通过ChatGPT以及类似产品(通义千问、文心一言)来学习知识的。通过这个过程让我对于用AI科技提升学习和工作效率有了实践经验和切身感受。
ClickHouse中“大列”造成的JOIN的内存超限问题 大列”是指单行数据量非常大的列,通常是100KiB以上。这样的列会导致JOIN(通常LEFT JOIN 和 INNER JOIN)出现内存超限的异常。本文讨论如何解决这个问题。
ClickHouse中JOIN算法选择逻辑以及auto选项 Setting配置`join_algorithm`用于指定JOIN算法,它可以设置为多个值,例如join_algorithm='direct,hash,partial_merge'。在选择最终JOIN算法的时候是根据setting配置`join_algorithm`, 以及JOIN操作的Strictness、Kind和参与JOIN的右表表引擎类型共同决定。
Linux性能调优技术概览 这里的Linux性能调优主要是关于Linux系统上程序的性能跟踪,因为只有收集到足够的准确的性能数据才能找到程序和系统的性能瓶颈。Linux性能调优的原理、框架、工具。下面一一介绍。
ClickHouse的Join算法 即使在ClickHouse中对超大的数据表做JOIN连接运算,我们也可以通过精心选择连接算法和调优相关设置,从而得到非常良好的性能。虽然可以让ClickHouse更加聪明地帮用户做选择,但是目前效果毕竟有限,而且真正高级的性能调优是离不开人的,因为人能掌握更全面的情况,以及实际业务特点和需求。本文可以帮助你理解ClickHouse内部连接的工作方式,从而帮助你做相关的优化。
ClickHouse的WITH-ALIAS是如何实现的 表达式别名比子查询别名在处理上要复杂的多,因为表达式本身的处理就很复杂。别名机制可以减少SQL查询的大小,但是展开后的AST树的大小不会缩小。虽然如此,却可以在访问者模式的某些Visitor的处理过程中减少Visitor访问的工作量。