代码之旅

I love Coding !

由于评论从畅言云评迁移到waline,导致评论数据丢失。非本人删除,各位大佬见谅!!!

本篇是论文的中文简单翻译

物化视图可以大大缩短查询处理时间,特别是对于大型表的聚合查询。要释放这种潜力,查询优化器必须知道如何以及何时利用物化视图。本文提出了一种快速且可扩展的算法,用于确定是否可以从物化视图中计算查询的部分或全部,并描述了如何将其纳入基于转换的优化器中。当前版本处理由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)方式对其进行扩展点扩展。当前已有的扩展点有:

  • Connectors(连接器)
  • block encodings(块编码)
  • Types(类型)
  • Functions(函数)
  • System access control(系统访问权限)
  • Group provider(资源组)
  • Password authenticator(密码验证器)
  • Header authenticator(标头验证器)
  • Certificate authenticator(证书验证器)
  • Event listener(事件侦听器)
  • resource group configuration managers(资源组配置管理器)
  • session property configuration managers(会话属性配置管理器)
  • exchange managers(数据交互管理器)
阅读全文 »

蓄水池采样算法是一种随机抽样算法,它能够在一个很大的集合中,抽取一部分样本,并保证每个样本的选取概率都是相等并随机的。

  • 特点:
    • 选取集合可以非常大,甚至不知道边界。
    • 每个样本的选取随机且概率相等。
    • 时间复杂度较低,O(n),节省内存。
  • 适用场景:
    • 在一些非常大的集合,或者未知大小的集合,不知道边界的集合,不知道文件总行数的情况下,随机抽取k个元素。
    • 保证每个元素抽取都是均匀随机的并且概率相等。
    • 尽量高效,节省内存地抽取
阅读全文 »

Trino中的内存管理分为两块:

  • LocalMemoryManager: 在ServerMainModule中声明,用于管理当前节点的内存使用
  • ClusterMemoryManager: 在CoordinatorModule中声明,用于管理集群的内存使用
阅读全文 »