前言
众所周知,mycat 是一个分布式数据库,前几年很火,其实也就火了两年,现在官网也不太活跃,但是还有一些公司在用,根据本人的使用经验,希望可以对大家有些帮助
分组统计问题
结论: 首先mycat底层依赖的数据库以mysql5.7 为例,凡是分组的对象 该字段必须查询,但是mycat对分组不友好,如何保证数据分组的正确性
a:当需求是根据表字段分组且包含子查询,此时子查询内以及外面都根据分组字段进行分组
b: 当分组的对象非表字段是自己构造的临时字段并要求该构造字段分组,包含子查询,此时子查询内不需要分组但是外面都根据分组字段进行分组
c: 主要原因是mycat分片结果的影响,分片对表字段影响很大,对构造的临时字段无影响
比例计算问题
由于mycat 分片的影响,同一个分片或许是准确,但是最终的结果是不正确,在极端某些情况也是可以的,保险起见,到拿到内存里面算,当前页回传从新赋值
分页排序问题
由于mycat分片的影响,每次有几个分片就会同时执行几条sql,每次返回取决各个分片的响应速度,不能保证唯一,是随机的,可以选择以分片规则的字段进行order by 即可保证有序
函数兼容问题
很多mysql的函数是不支持的,一定要在mycat环境进行测试,当发现查到的数据与自己期望的数据相差很大的时候,要看看自己的语法是否正确,在大多是情况下,写错了也能运行,十分不严谨
增删改查
仅仅支持单条数据的增删改查,只能选择全量的更新,替换
sum和count 问题
sum( case when age>25 then 1 else 0 end) as totalAgeNum ok
count( case when age>25 then 1 end) as totalAgeNum ok
count( case when age>25 then 1 else 0 end) as totalAgeNum error (因为分片会把0当做1加和)
limit问题
每个mycat限制查询的总数,比如10000,当对于这个数,必须写一个maxQueryNmber,让limit 失效,不然总是查询10000条,数据量少的时候还发现不了,隐藏的地雷坑
索引问题
加索引尽管有效,但是收效甚微,主要还是和数据量,mycat配置和mysql的硬件配置有很大的关系
分片问题
分片不是越多越好,符合一个正态分布,一定要做压测,进行数据分析
354

被折叠的 条评论
为什么被折叠?



