0x822a5b87的博客

到码头整点薯条吃

calcite入门--RBO模型和CBO模型

由于最近接手了公司的一些血缘解析,SQL优化相关的任务,同时也涉及到了一些DSL的开发,在开发的过程中涉及到大量的calcite规则(Rule)定制,用此文章记录一下calcite的学习心得。

解析

sql parse 的过程

flowchart LR

subgraph 模版
	direction LR
	模板Parser.jj
	compoundIdentifier.ftl
	parserImpls.ftl
	config.fmpp
	default_config.fmpp
end

模版 --> FMPP --> Parser.jj:::underline --> JavaCC --> SqlParserImpl:::underline

classDef underline fill:#f9f,stroke:#333,stroke-width:4px;
阅读全文 »

SQL 查询优化原理与 Volcano Optimizer 介绍

本文是对 SQL 查询优化原理与 Volcano Optimizer 介绍 这篇文章的阅读一些补充和记录。

基于规则的优化方法的要点在于结构匹配和替换。 应用规则的算法一般需要先在关系代数结构上匹配一部分局部的结构, 再根据结构的特点进行变换乃至替换操作。

pattern-match-rule

Volcano Optimizer

阅读全文 »

pprof

pprof 是 golang 内置的一种用于调优和性能分析的工具,有三种最常用的方式使用:

  1. ​ 在启动时引入 "net/http/pprof" 包,在包中会初始化一个http服务,随后可以通过http服务对pprof进行访问;
  2. 通过 wget 的方式访问 /debug/pprof/profile 接口(也需要通过1监听http端口)下载文件,文件可以通过 go tool pprof 打开并进入可视化界面;
  3. 通过 go test 进入测试用例剖析;

net/http/pprof

如果我们想要使用pprof服务,可以通过如下两种方式开启:

阅读全文 »

Golang异步编程总结

常用方式

基于go关键词

匿名函数

1
2
3
4
5
6
7
8
9
10
func main() {
for i := 0; i < 10; i++ {
go func(val int) {
fmt.Println(val)
}(i)
}

// 这里其实是一个未定义行为
time.Sleep(1 * time.Second)
}
阅读全文 »

发布博客

源码存放于source分支下,编译后的文件存放于master分支下。

1
2
3
4
5
6
7
8
9
10
11
12
# 在source分支下
hexo new 'hello world'

vim source/_posts/hello-world.md

# 编辑完
git add -A
git commit -m 'comment'
git push

hexo generate
hexo deploy

修改theme

1
2
3
# 修改 `theme/${theme}/_config.yml`
hexo g
hexo deploy
阅读全文 »

写golang两个月的一些心得

自从开始负责公司后台的SQL引擎优化之后,时常需要为公司其他同事提供一些SQL解析接口。

由于之前部门大部分的接口开发都使用 cpp/golang,而我这边的接口服务主要性能瓶颈都在后台的SQL解析引擎,接口所耗费的资源在整体资源中占比非常小。cpp性能虽然更快,但是在这里并不是我需要考虑的主要因素,很自然的,我选择了golang作为我的后台接口开发语言。

这里就对我这两个月的一些开发心得做一些总结。

referecnce

golang实现SOLID原则

阅读全文 »
0%