系统性能分析-CPU-异常分析
本文记录一些分析 CPU 性能问题的工具&方法。
本文记录一些分析 CPU 性能问题的工具&方法。
Varint是一种使用一个或多个字节序列化整数的方法,会把整数编码为变长字节。对于32位整型的4个字节数据经过Varint编码后需要15个字节,小的数字使用1个byte,大的数字使用5个bytes。64位整型数据编码后占用110个字节。
在实际场景中小数字的使用率远远多于大数字,因此通过Varint编码对于大部分场景都可以起到很好的压缩效果。
本文将介绍两种异步编程模型: Promise 和 Future。在计算机科学中,future、promise,是在某些并发编程语言中,指称用于同步程序执行的一种构造。由于某些计算尚未结束,故而需要一个对象来代理这个未知的结果。Future 和 Promise 的设计理念整体上非常相似,但是在不同的语言和框架实现中又存在一定的区别,对此,这里我们基于最广泛的定义进行介绍。
在同时包含 Future 和 Promise 的实现中,一般 Promise 对象会有一个关联的 Future 对象。当 Promise 创建时,Future 对象会自动实例化。当异步任务执行完毕,Promise 在内部设置结果,从而将值绑定至 Future 的占位符中。Future 则提供读取方法。将异步操作分成 Future 和 Promise 两个部分的主要原因是 为了实现读写分离,对外部调用者只读,对内部实现者只写。
本篇是论文的中文简单翻译
物化视图可以大大缩短查询处理时间,特别是对于大型表的聚合查询。要释放这种潜力,查询优化器必须知道如何以及何时利用物化视图。本文提出了一种快速且可扩展的算法,用于确定是否可以从物化视图中计算查询的部分或全部,并描述了如何将其纳入基于转换的优化器中。当前版本处理由selections、joins和group by组成的视图。优化仍然完全基于成本,也就是说,启发式规则不会选择单个“最佳”重写,而是生成多个重写,优化器以正常方式选择最佳替代方案。实验结果表明,该算法在Microsoft SQL Server上实现了良好的性能和可扩展性。优化时间随着视图数的增加而缓慢增加,但即使视图数达到1000次,优化耗时仍然很低。
关键字:
本文是数据库系统概念第六章节的读书笔记。
查询语言是用户用来从数据库中请求信息的语言。查询语言可以分为过程化和非过程化的。在过程化语言中用户指导系统对数据库执行一系列操作以计算出结果。在非过程化语言中,用户只需要描述所需信息,而不用给出具体过程。
实际上使用的查询语言既包含过程化的成分,又包含非过程化的成分。在一些"纯"查询语言中,关系代数是过程化的,而元组关系演算和域关系演算是非过程的。
在关系模型中,关系指表。表的一行是元组。表中一列是属性。域是属性的取值范围。
一些SQL构造(如ORDER BY)在许多情况下不会影响查询结果,并且会产生影响性能的负面影响(查询中的每个ORDER BY子句都代表一个排序执行计划)。如果用户无意中在没有效果的地方使用ORDER BY,可能会导致严重的性能下降和资源浪费。
sql规范(ISO 9075 Part 2)中说明:
一个
<query expression>可以包含一个可选的<order by clause>。<query expression>z中行的顺序仅由<query expression>直接包含的<order by clause>指定。
上述规范意味着,查询引擎可以自由地忽略任何不适合上下文的ORDER BY子句。
Presto Functions 并不能像 Hive UDF 一样动态加载,需要根据 Function 的类型,实现 Presto 内部定义的不同接口,在 Presto 服务启动时进行注册,然后才能在 SQL 执行时进行调用。
本篇将介绍Trino的SPI和如何通过Plugin体系扩展SPI。Trino 支持通过SPI(Service Provider Interface)方式对其进行扩展点扩展。当前已有的扩展点有: