【OpenDDAL概述】

OpenDDAL SQL引擎把SQL类为4类

  1. 无数据表访问的SQL,如:select 1+1, select seq.nextval等,此类SQL直接于OpenDDAL SQL引擎直接处理。
  2. JoinFree SQL,SQL无需按表进行折分,通过路由规则计算的结果只一个结点上执行,OpenDDAL无需作任何的处理,直接发到db上执行。
  3. JoinFree SQL,SQL无需按表进行折分,通过路由规则计算的结果在多个结点上执行,分组查询需要改写SQL Select字段,OpenDDAL负责查询结果集的合并、排序、分组汇总操作。
  4. 跨库Join SQL


 
OpenDDAL的JDBC Statement的QueryTimeout处理过程

Statement queryTimeout用来限制statement的执行时长,单位为秒,timeout的值通过调用JDBC的java.sql.Statement.setQueryTimeout(int timeout) API进行设置。OpenDDAL完成一次statement执行可能会访问多个结节的数据,会创建多个数据处理的handler,HandlerHolderProxy的职责就是记录这些handler,方便session对运行的statement执行资源控制。

  1. 调用JdbcStatement.setQueryTimeout时,oppenddal设置session的queryTimeout
  2. 调用Statement的executeQuery()方法,oppenddal记录Statement执行的开始时间为now,结速时间为now + queryTimeout
  3. session处理数据将queryTimeout代理给物理的jdbc Statement,并检查是否处理时间超过Statement执行结速时间
  4. 达到超时时间
  5. session终止数据处理,调用所有处理数据所打开的底层Statement的cancel()方法取消执行
  6. session抛出query timeout异常
  7. 调用close方法,session关闭所有处理数据所打开的底层Statement

 

OpenDDAL功能优势

  • 水平分库分表,提供简洁的切分方式,多纬切分,自定义切分规则
  • 支持Embedded(JDBC)/Server(TCP/IP)两种运行模式
  • 兼容MySQL协议,支持大部分MySQL客户端
  • 支持结果集合排序,分组汇总,分页,还支持跨库join,子查询,union查询等复杂SQL
  • 支持DDL,可以一次性对表结构,索引进行维护。
  • 实现基于成本的分布式SQL优化器,为SQL提供可靠的执行方式
  • 支持SQL语句执行计划查询,方便的理解SQL的路由及执行
  • 实现了基于MySQL数据库的Repository层
  • 读写分离支持,HA支持,问题数据库隔离和自动恢复
  • 支持全局唯一序列,使用方式类似于Oracle,DB2中Sequence对象
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值