5.2 其他已知限制
显式配置的父子表,在子表插入数据时,不能多值插入
原因 : 子表插入数据时,如有parentkey不是父表的拆分列。需要去对应父表的拆分结点中反向查询路由规则,如果此时是多值插入,就会变成多值反查,查询功能较难完成,即使完成,性能也会很差。
相关issue : https://github.com/actiontech/dble/issues/12不建议使用JDBC的rewriteBatchedStatements=true
原因 :
insert : 多条简单insert拼接成一条长的insert.. values(),(),一个com_query包 ,对于dble来说,可能引发分布式事务,降低性能和数据一致性。使用JDBC的useServerPrepStmts=true会降低性能
原因 : dble是将前端的Binary Protocol 转为Text Protocol,收到结果集之后再反向转回协议,所以需要额外的工作,降低了性能。lock/unlock 实现不完整
相关issue : https://github.com/actiontech/dble/issues/38不支持在schema.xml里配置复合主键(3.20.07.0移除此配置)
原因 : schema.xml里的主键作用为主键路由和全局序列,这两者暂不支持多主键。
相关issue : https://github.com/actiontech/dble/issues/70不保证主键唯一性 由于dble不要求配置在table中的主键在创建表格时一定为主键,并且由于dble后端分布式存储的方式, dble不对于主键做唯一性检查,并且允许用户对于非分片列的主键字段进行任意更新
并发更新多行数据/全局表数据可能导致死锁超时
原因 : 并发情况下,分布式下发sql可能乱序。
相关issue : https://github.com/actiontech/dble/issues/85防火墙导致无响应
原因 : 防火墙可能drop包,java层面的tcp_keeplive无法指定时间。
相关issue : https://github.com/actiontech/dble/issues/87方差/标准差精度问题
原因 : 方差计算方式导致
相关issue : https://github.com/actiontech/dble/issues/100order by lock in share mode/for update
, lock clause is ignored
原因 : 无法支持。
相关issue : https://github.com/actiontech/dble/issues/127不支持 _charset_name ‘string’
_charset_name+b'val'
相关issue : https://github.com/actiontech/dble/issues/262
相关issue : https://github.com/actiontech/dble/issues/267未能正确支持 set sql_select_limit
相关issue : https://github.com/actiontech/dble/issues/331日期拆分算法中,sEndDate如果不配置,default node就无用
原因 : 算法设计问题。
相关issue : https://github.com/actiontech/dble/issues/357selece @@sql_mode 始终包含IGNORE_SPACE
原因 : 后端权能标志位设置导致,参见4.2节内容。
相关issue : https://github.com/actiontech/dble/issues/364replace ... into
由于replace的语义为如果存在则替换,如果不存在则新增,所以在使用表格自增主键的时候 如果对于自增表格使用replace且ID不存在,那么就会插入一条指定ID的数据,并不会自动生成IDkill 语句杀自身session,直接返回ok,不会有任何实质性操作
由于2.19.01版本在rule/schema/server.xml中加入了version字段造成的BUG,导致在2.19.01使用zk集群进行同步化操作的时候要求version字段不能为空或者不填,此问题在后续版本会进行修复
若mysql节点上设置了
set global local_infile = 0
,dble load data指令执行报错
原因 : dble会将load data指令转换为load data local infile ...
指令下发至各个后端mysql,所以各个节点local_infile
参数需要开启。
相关issue : https://github.com/actiontech/dble/issues/1111不能正确支持 set @@sql_auto_is_null=on; 原因 : set @@sql_auto_is_null=on 的语义是用新生成的自增序列取代null,在dble层不做实现。
相关issue : https://github.com/actiontech/dble/issues/978复杂查询会透传难以理解的报错,建议结合explain语句分析 原因 :需要枚举所有错误来做替换.成本高,收益低 相关issue :https://github.com/actiontech/dble/issues/1449
开启 enableCursor 选项后,在分库分表场景下,所有的 prepareStatement 的 prepare 阶段均需要向 mysql 执行特殊语句,用来获取结果集的列数并返回给前端,这个执行会损失一部分性能(即使客户端没有开启游标)。
开启XA功能后,不支持执行含有隐式提交的sql
select
中的group by
条件为true或false时,结果集不固定
原因:group by
条件为true或false时,mysql的结果集排序规则受存储引擎的影响。InnoDB情况下,优先按照PRIMARY KEY进行排序,没有PRIMARY KEY的前提下,按照INSERT顺序排序。在dble层面目前无法感知INSERT的顺序问题,所以无法做到和mysql行为一致
相关issue : https://github.com/actiontech/dble/issues/3177