【IT168 技术】背景
此场景目的是体验RadonDB的复杂查询兼容性能力。
一般中间件对SQL处理上的约束:
● 全局排序不支持
● 查询中不包含分区键的,不支持或是性能不好
● 需要join的需要拆分中绑定到一个库里
● 聚集函数不支持
● limit运算,可能开销过重
RadonDB则没有上面的约束。
操作
1) 对非分区键k进行全局排序
mysql>select * from benchyou0 order by k desc limit 5;
2) 非分区键k的全局查询
mysql> select * from benchyou0 where k < 9223371759262367800 and k > 9223367322539387931 order by k desc;
3) 多条件排序(order by k desc, id asc)
mysql> select id, k from benchyou0 where k < 9223371759262367800 and k > 9223367322539387931 order by k desc, id asc;
3) join
mysql> select t1.id, t1.k , t2.k from benchyou0 as t1 left join benchyou1 as t2 on t1.k=t2.k order by t1.k desc limit 10;
由于benchyou压测的时候数据完全离散,所以t1.k=t2.k没有重叠。
自行体验见脚本:
$ cat example/join.example
4) 聚集函数
mysql> select count(id) from benchyou0;
mysql> select max(k) from benchyou0;
技术分析
RadonDB本身支持:
order by, group by, limit[offset], sum/count/avg/max/min操作。
对于join等复杂查询会自动路由到计算节点。