登录 | 注册
首页
方案案例
技术社区
资源中心
培训体系
服务合作
关于我们
SUNDB数据库访问连接
数据库coach瑞亚
专栏:SUNDB实战深潜 2024-08-02 70 0
分享到:

Database Connection


一、特征:


  • global connection:


Global connection功能是考虑到数据locality的事务性能优化方案。

通常connection连接一个成员,而global connection连接所有成员。使用global connection

的应用程序执行查询访问的数据最多的成员的查询,从而提高性能。

Global connection可用于hash、range、list sharding等所有方式,此时不需要变更应用程序。

执行online scale-out时,用户不需要追加考虑新的节点,应用程序可自动访问新节点运行此节点。


image.png


  • global connection HA (high availability):


image.png


执行SQL时,所选节点发生故障时,通过其他组的其他节点执行SQL,所选的组的所有节点发生故障时,

通过其他组执行SQL。

恢复发生故障的节点时,在online状态下自动重新访问该节点。不仅如此,

用户也可以使用以下语句使应用程序重新执行访问:

image.png


二、选择执行成员:


执行成员按照事务为单位进行选择。没有事务时,首次执行DML查询时按照sharding key选择组,

组内的执行成员取决于LOCALITY_MEMBER_POLICY参数。之后在COMMIT或ROLLBACK

之前所有查询在所选成员中执行。如果首次查询未选择根据sharding key的合适的组时,根据LOCALITY_

GROUP_POLICY 参数决定组。


image.png


上图中transaction1的UPDATE查询根据sharding key在group1执行,因此后续COMMIT 之间的所有查询均在

group 1执行。Transaction2的UPDATE查询在group3执行,即使后续查询不适合在group 3执行,但在COMMIT

之前所有查询均在group3执行。


在没有事务的情况下,只读专用查询(SELECT)与其他查询相同,根据sharding key选择执行成员,但后续执行的查询

未必在上一次选择的成员中执行。

即,包含在事务的所有查询仅在一个成员中执行,与事务无关的查询按照查询为单位选择成员。


三、Global Session:


image.png


与应用程序直接连接的会话叫做driver session,从driver session到其他成员的会话叫做cluster session。

Global connection在所有成员中创建driver session,根据所需向其他成员创建cluster session。由于global

connection的特征,可在一个成员中创建多个cluster session。



image.png


Global session是在global connection创建的cluster session共享一个会话,并由此提高资源效率的功能。

Global connection不使用global session时,根据组和成员的增加而增加cluster session。

相反,使用globalsession时,即使增加组合成员,也不会增加cluster session。


Global session 功能仅可在global connection使用,普通connection无法使用。



四、约束事项:


使用global connection时,SQL语句无法使用拥有session dependenccy的对象(session dependent object)

或语句(session dependent clause)或函数(session dependent function)。


另外,访问多个集群节点的SQL存在于一个事务中时,事务中的SQL共同使用第一个SQL的sharding key

选择的集群节点。


Global connection中,查询仅在以prepare execute执行时考虑数据locality,以direct execute

执行时在任意节点执行。


Session Dependent Object

在SQL语句使用session dependent object时,不支持global connection。

  • Global temporary table


Session Dependent Clause

在SQL语句使用session dependent clause时,不支持global connection。

  • 所有@domain 相关语句


Session Dependent Function和Pseudo Column

在SQL语句使用session dependent信息时,不支持global connection。


  • CURRVAL(sequence), sequence.CURRVAL

  • UUID()

  • VERSION()

  • SESSION_ID()

  • SESSION_SERIAL()

  • USER_ID()

  • LAST_IDENTITY_VALUE()

  • STATEMENT_VIEW_SCN()

  • STATEMENT_VIEW_SCN_GCN()

  • STATEMENT_VIEW_SCN_DCN()

  • STATEMENT_VIEW_SCN_LCN()

  • LOCAL_GROUP_ID()

  • LOCAL_MEMBER_ID()

  • LOCAL_GROUP_NAME()

  • LOCAL_MEMBER_NAME()

  • CLUSTER_GROUP_ID

  • CLUSTER_GROUP_NAME

  • CLUSTER_MEMBER_ID

  • CLUSTER_MEMBER_NAME

  • CLUSTER_SHARD_ID


使用Global Session功能的情况:

SQL 语句不支持 Data Definition Language (DDL)。



五、设置:


详细内容参考如下:

  • ODBC Global Connection

  • JDBC Global Connection


0
评论

登录后发表回复

暂无评论
专栏作者
数据库coach瑞亚

  • 文章

    11
  • 阅读量

    162
  • 获赞

    12
You are the only one to reveal the answer
专栏其它文章更多 》

SUNDB

常见问题集锦

SUNDB

免费试用

回复