![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mycat2
文章平均质量分 66
Mycat2系列文章
junwen12221
编程语言爱好者,在信息安全领域,数据库领域有一定研究,qq:294712221
展开
-
[Mycat2]分库分表中间件Join下推规则
Join下推author:chenjunwenqq:294712221This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.单表与单表只涉及单表与单表之间的join,只要它们的存储节点相同,就可以下推任意表与全局表涉及任意表与全局表之间的left/inner join都可以下推相同数据分布关系(ER关系)涉及分片表之间的分片算法的数据分布原创 2021-11-17 13:19:25 · 648 阅读 · 1 评论 -
[Mycat2]索引字段分析-2021-4-21
author:chenjunwen 2021-4-21This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.Mycat2是分库分表型数据库(中间件),具有逻辑库,逻辑表概念,其中对于分片表类型,使用特定的规则组织'行数据'在多个物理表中存储.而SQL查询分片表的时候,正确使用谓词,Mycat2分析出仅需扫描的物理表,则可在执行阶段大大减少需要使用的连接,IO..原创 2021-04-22 14:42:50 · 335 阅读 · 0 评论 -
[Mycat2]执行计划管理-2021-4-20
author:chenjunwen 2021-4-20This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.Mycat2的执行计划管理主要作用是管理执行计划,加快SQL到执行计划的转换,并且提供一个方式可以从持久层读取自定义的执行计划.它与缓存结果集不同,它更接近传统分库分表的缓存路由.Mycat2引入这个功能的初衷是Calcite在分析复杂SQL的耗时比较..原创 2021-04-22 14:41:56 · 352 阅读 · 0 评论 -
[Mycat2]UnionAll分库分表优化
[Mycat2]UnionAll优化在不跨数据库的情况下,涉及到多个分表合拼的时候,可以有多个选择,常用的是在Mycat中开启多个后端连接然后使用把返回的行汇总在一起或者在数据库中使用集合运算把分表的数据汇总.上述两种,Mycat2都支持.在同一个数据库上涉及多个分表,Mycat2会使用union all语法把多个生成的SQL连接起来生成一个新的SQL让数据库执行.Mycat2可以配置生成的每个SQL中出现union all的数量,默认值是5个,它可以汇总6个SQL(表),假如一年分12个表,5个un原创 2021-04-06 10:43:17 · 744 阅读 · 0 评论 -
[Mycat2]JoinClustering
JoinClusteringMycat2在1.17开始正式支持JoinClustering,该名字来自于PolarDB-X的JoinClustering.它对分库分表类数据库的join下推至关重要.Mycat2对其理解后进行开源实现.它是SQL重写技术,优化目标是生成更优的存储节点执行的SQL,使更多Join运算在存储节点运算,大大减少Mycat2的运算.它是基于Join Reorder技术进行构建的.Mycat2的SQL重写器在遇到不能应用两表下推规则(任意表+全局表),再判断是否是inner..原创 2021-03-20 21:45:16 · 202 阅读 · 0 评论 -
[Mycat2]Expression ‘t.user_id‘ is not being grouped
SELECT t.user_id FROM db1.travelrecord t GROUP BY id;Expression 't.user_id' is not being grouped修改成SELECT any_value(t.user_id) FROM db1.travelrecord t GROUP BY id;projectItem被group by的引用的无聚合函数的字段需要使用any_value...原创 2021-02-02 13:22:09 · 4459 阅读 · 0 评论 -
基于Calcite制作分库分表中间件(方案1)
基于Calcite制作分库分表中间件(方案1)RBO第一阶段-下推分片条件谓词使用下推LogicalFilter的规则与org.apache.calcite.rel.rules.FilterTableScanRuleorg.apache.calcite.rel.rules.ProjectTableScanRule规则把Filter下沉到LogicTableScan之上FilterTableScanRule和ProjectTableScanRule会把Table转化成..原创 2020-12-21 19:55:01 · 444 阅读 · 1 评论 -
基于Calcite制作分库分表中间件(方案3)
上次提到模版结合新自定义关系表达式来实现有效的sql生成,那么我们可不可以像方案1中直接使用Calcite现成的(蛛丝马迹)功能实现,或者说加以强化.答案是有的方法有三种表函数法org.apache.calcite.rel.core.TableFunctionScan实际上分库分表的逻辑表可以表述为形式1:分片函数_表名(单分片值),分片函数_表名(范围分片值)形式2:分片函数(表名,分片值),分片函数(表名,范围分片值)而分片分表的谓词分析就是为了提取分片值..原创 2021-01-21 19:59:36 · 454 阅读 · 1 评论 -
Mycat2优化器-2020-9-1
optimizer-Mycat2.0Mycat2优化器author:chenjunwen 2020-8-20This work is licensed under aCreative Commons Attribution-ShareAlike 4.0 International License.前言 本文描述的设计细节,大部分已经实现,有小部分没有完全实现。 Mycat2减少使用人类理解编写的SQL解析路由和基于经验制作的查询引擎的思路来实现查询引擎,取而代之,使用基于关系..原创 2020-09-12 12:32:47 · 597 阅读 · 0 评论 -
mysql客户端特殊查询版本sql
SELECT @@version_comment LIMIT 1原创 2020-05-26 16:58:14 · 272 阅读 · 0 评论 -
透传式单分片事务
透传式单分片事务,即代理事务前端会话只能绑定一个后端数据库会话后端会话的响应直接往前端会话写入数据,自动判断响应结束以及事务问题场景travelrecord具有全局序列号id字段,而且id是hash型的分片算法//开始事务INSERT INTO `db1`.`travelrecord` (`user_id`) VALUES ('2');//产生id 998,分片算法...原创 2020-04-12 20:09:51 · 140 阅读 · 0 评论 -
HBTlang-Mycat2.0-2020-3-18
HBTlang-Mycat2.0author:chenjunwen 2020-3-16 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.HBTlang-Mycat2.0HBT(Human Brain Tech)简介使用HBT解决什么问题?基本H...原创 2020-03-18 19:46:10 · 395 阅读 · 2 评论