自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (1)
  • 收藏
  • 关注

原创 Apache Calcite VolcanoPlanner优化过程解析

Apache Calcite VolcanoPlanner优化过程解析使用VolcanoPlanner关系表达式的注册过程VolcanoPlanner是calcite自带的基于代价的优化器。在优化过程中,会计算优化规则生成的等价关系表达式的计算代价,通过动态规划算法找出整个最优的执行计划。使用VolcanoPlanner这里以一个单元测试为例子解释如何使用calcite的VolcanoPlanner。 @Test void myTest() { ConnectionSpec SCOTT

2020-11-10 17:14:03 99

原创 Apache Calcite的优化器规则解析

Apache Calcite的优化器规则解析RelOptRuleRelOptRule的构造函数RelOptRuleOperand构造函数用Rule方法创建Operand自定义规则calcite实现的优化器,无论是基于规则的HepPlanner还是基于代价的VolcanoPlanner,它们核心的部分都是要使用规则对关系表达式进行转换。大部分的可扩展的查询优化系统都会使用规则。规则是一个通用的概念,以一种简单和模块化的方式指定了一种模式,依据关系代数法则对关系表达式进行等价代换。规则使得优化器更加的模块化

2020-07-06 15:06:43 372 2

原创 Apache Calcite VolcanoPlanner代价计算解析与源码调试方法

Apache Calcite VolcanoPlanner代价计算解析与源码调试方法代价计算方法VolcanoPlanner的getCost方法RelMetadataQueryJaninoRelMetadataProvider生成handlerCalcite的debug方法calcite的volcanoPlanner优化器是基于代价的,并且使用动态规划算法计算最优的关系表达式树。在通过规则变换后出现一个新的RelNode表达树结构时,对它与其子表达式进行注册的过程中会计算这个新的RelNode树结构的Re

2020-06-29 16:00:57 641

原创 java8 HashMap的变化

java8 HashMap的变化树形桶Hash表实现的改变java 7的实现java 8的实现HashMap的一些关键常量总结在java容器中map是我们经常会用到的一种容器。而map中HashMap是我们最长用的map之一,而且在java面试中考察容器时HashMap的实现也基本是必考之一。并且我们常常会听到考察HashMap时会问到是否是线程安全?为什么HashMap在多线程并发的时候可能造成CPU利用率变成100%?在解析HashMap的这些文章的中,都是基于Java 8之前的的实现来讲解的。那么J

2020-06-15 12:15:45 475

翻译 PG INTERNAL-进程与内存架构

PG INTERNAL-进程与内存架构1.进程架构1.1Postgres Server Process1.2 Backend Process1.3 Background processes2.内存架构2.1 Local Memory Area2. Shared Memory Area翻译http://www.interdb.jp/pg/pgsql02.html1.进程架构PostgreSQL是运行在单个主机的多进程架构的c/s类型的关系型数据库管理系统.一组多进程共同管理一个database clu

2020-06-09 08:38:30 166

翻译 PG INTERNAL-Database Cluster, Databases, and Tables

PG INTERNAL-Database Cluster, Databases, and Tables1.1 database cluster的逻辑结构1.2 database cluster的物理结构1.2.1 database cluster的布局1.2.2 database的布局1.2.3 table和index关联的文件布局1.2.4 Tablespace1.3 Heap table file的内部布局1.4 读写tuple的方法1.4.1 写heap tuple1.4.2 读Heap tuple

2020-06-08 10:18:10 101

原创 记一次测试druid连接池关闭后线程挂起的bug

记一次测druid连接池关闭后线程挂起的bug背景模拟的测试代码原因背景现在的项目使用了阿里druid jdbc连接池,有个使用场景要测试一下在高并发查询的情况下关闭连接池会不会存在问题,比如内存泄露等情况。当时一个同事写了一个单元测试,这个单元测试大致做的事情是开很多线程不断获取连接查询,然后一个线程在一定查询后生成新的连接池替换旧的连接池,并关闭旧的连接池,进行多次循环。本来这个测试的目的是执行一个长的测试任务看看会不会有内存泄露的情况,但是后面发现有些线程都卡在了下图显示的地方,测试任务无法结束

2020-05-29 11:39:32 955

原创 Apache Calcite JDBC查询流程详解

Apache Calcite JDBC查询流程详解Calcite JDBC的实现类Calcite的JDBC Driver获取Calcite的JDBC Conection创建Statement执行executeQuery方法创建ResultSet之前写了一篇文章使用Apache Calcite进行JDBC多数据源关联里面使用Calcite的JDBC的Adapter对后端数据库进行SQL查询,如下代码例子整个实现过程很简单,与常规的JDBC使用没有任何区别。但是Calcite在内部整个流程中做了很多有趣的工作

2020-05-28 10:42:51 1172

原创 Apache Calcite中的基本概念

Apache Calcite中的基本概念Calcite中的关系表达式Calcite的优化规则在学习Apache Calcite的一些基本概念之前,首先要弄懂关系表达式,并且要知道SQL与关系表达式的关系,因为Calcite的最核心的概念就是关系表达式。SQL与关系表达式的相关概念可以参考这篇文章SQL 形式化语言——关系代数。Calcite中的关系表达式在calcite中,当一个sql字符串被解析为SqlNode结构的AST树后,并不能直接被Calcite的优化器优化。还需要通过SqlToRelCo

2020-05-26 15:35:19 506

原创 使用Apache Calcite进行JDBC多数据源关联

使用Apache Calcite进行JDBC多数据源关联准备工作JDBC单一数据源查询JDBC多数据源查询Calcite两种查询的执行计划总结如果熟悉阿里巴巴数据库管理dms平台的朋友可能知道,在dms上可以使用一条SQL语句查询进行跨库查询并将多个数据库的数据关联起来。如上图所示的场景,可以使用Apache Calcite实现。Calcite的简单介绍可以看一看这篇文章。Calcite的JDBC Adapter也提供了开箱即用的这些功能实现,虽然要实现像dms这样的商用系统功能,需要对calcite

2020-05-23 00:29:59 1088 5

AkkaScala.pdf

akka actor使用手册。Akka是一套开源工具和运行时,便于构建JVM上的并发应用和分布式应用。Akka支持多种并发编程模型,不过,由于受到Erlang启发,Akka尤其强调基于Actor的并发模型.

2020-05-27

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除