技术开发 频道

RadonDB技术手册——RadonDB复杂SQL体验

  【IT168 技术】背景

  此场景目的是体验RadonDB的复杂查询兼容性能力。

  一般中间件对SQL处理上的约束:

  ● 全局排序不支持

  ● 查询中不包含分区键的,不支持或是性能不好

  ● 需要join的需要拆分中绑定到一个库里

  ● 聚集函数不支持

  ● limit运算,可能开销过重

  RadonDB则没有上面的约束。

  操作

  1) 对非分区键k进行全局排序

  mysql>select * from benchyou0 order by k desc limit 5;

RadonDB技术手册——RadonDB复杂SQL体验

  2) 非分区键k的全局查询

  mysql> select * from benchyou0 where k < 9223371759262367800 and k > 9223367322539387931 order by k desc;

RadonDB技术手册——RadonDB复杂SQL体验

  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;

RadonDB技术手册——RadonDB复杂SQL体验

  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;

RadonDB技术手册——RadonDB复杂SQL体验

  由于benchyou压测的时候数据完全离散,所以t1.k=t2.k没有重叠。

  自行体验见脚本:

  $ cat example/join.example

RadonDB技术手册——RadonDB复杂SQL体验

  4) 聚集函数

  mysql> select count(id) from benchyou0;

RadonDB技术手册——RadonDB复杂SQL体验

  mysql> select max(k) from benchyou0;

RadonDB技术手册——RadonDB复杂SQL体验

  技术分析

  RadonDB本身支持:

  order by, group by, limit[offset], sum/count/avg/max/min操作。

  对于join等复杂查询会自动路由到计算节点。

0
相关文章