DB分库分表中间件架构总结

splittable中的splitstrategy通过splitkey获取分库分表信息,以及表对应的splitnode

splitnode 中的master和slaves实现读写分离。

 

 

DB分库分表查询总结

clinet  =====>  matrix(数据处理整合merge)========>DB0,DB1

select * from a where a.id =1 or a.id =2 

id=1 路由到DB0,id=2路由到DB1

先从DB0和DB1中分别查出数据然后在matrix中整合数据然后返回给client

 

 

 

架构中优化器作用:

    预处理

函数提前计算
	a. id = 1 + 1  => id = 2
判断永真/永假式
	a. 1 = 1 and id = 1 => id = 1
	b. 0 = 1 and id = 1 => 空结果
合并范围
	a. id > 1 or id < 5 => 永真式
	b. id > 1 and id = 3 => id = 3
类型处理
id = ‘1’  => id为数字类型,自动Long.valueof(1)
create=‘2015-02-14 12:12:12’ => create为timestamp类型,解析为时间类型

    条件下推

 

Where条件下推
	 a. select from ( A ) o where o.id = 1
		=> select from ( A.query(id = 1) )
JOIN中非join列的条件下推
	a. A join B on A.id = B.id where A.name = 1 and B.title = 2
	=> A.query(name = 1) join B.query(title = 2) on A.id = B.id
等值条件的推导
	a. A join B on A.id = B.id where A.id = 1   => B.id = 1

    条件处理

    order by下推

 

    join下推

广播表Join
原理:将小表数据复制到所有分库节点,优化为本地join
Join Group(分库键上的Join)
原理:拆分规则相同表属于一个join group,针对分区键join可下推为多个分表的本地join
跨库Join
Nested Loop及衍生
Sort Merge

 

    join策略优化

   merge优化

 

Ø预处理

Ø条件下推

ØOrder By下推

ØJOIN 下推

ØJOIN策略的选择

ØMerge优化

²执行器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值