Database Connection
一、特征:
global connection:
Global connection功能是考虑到数据locality的事务性能优化方案。
通常connection连接一个成员,而global connection连接所有成员。使用global connection
的应用程序执行查询访问的数据最多的成员的查询,从而提高性能。
Global connection可用于hash、range、list sharding等所有方式,此时不需要变更应用程序。
执行online scale-out时,用户不需要追加考虑新的节点,应用程序可自动访问新节点运行此节点。
global connection HA (high availability):
执行SQL时,所选节点发生故障时,通过其他组的其他节点执行SQL,所选的组的所有节点发生故障时,
通过其他组执行SQL。
恢复发生故障的节点时,在online状态下自动重新访问该节点。不仅如此,
用户也可以使用以下语句使应用程序重新执行访问:
二、选择执行成员:
执行成员按照事务为单位进行选择。没有事务时,首次执行DML查询时按照sharding key选择组,
组内的执行成员取决于LOCALITY_MEMBER_POLICY参数。之后在COMMIT或ROLLBACK
之前所有查询在所选成员中执行。如果首次查询未选择根据sharding key的合适的组时,根据LOCALITY_
GROUP_POLICY 参数决定组。
上图中transaction1的UPDATE查询根据sharding key在group1执行,因此后续COMMIT 之间的所有查询均在
group 1执行。Transaction2的UPDATE查询在group3执行,即使后续查询不适合在group 3执行,但在COMMIT
之前所有查询均在group3执行。
在没有事务的情况下,只读专用查询(SELECT)与其他查询相同,根据sharding key选择执行成员,但后续执行的查询
未必在上一次选择的成员中执行。
即,包含在事务的所有查询仅在一个成员中执行,与事务无关的查询按照查询为单位选择成员。
三、Global Session:
与应用程序直接连接的会话叫做driver session,从driver session到其他成员的会话叫做cluster session。
Global connection在所有成员中创建driver session,根据所需向其他成员创建cluster session。由于global
connection的特征,可在一个成员中创建多个cluster session。
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
登录后发表回复
文章
11阅读量
162获赞
12数据库coach瑞亚 2024-08-02
数据库coach瑞亚 2024-08-02
数据库coach瑞亚 2024-07-29
数据库coach瑞亚 2024-07-29
数据库coach瑞亚 2024-07-25