文档中心

快速入门

安装

基本操作

数据模型

SQL引擎

系统架构

数据库管理

连接器

驱动

参考手册

故障排除

SAC

版本信息

setSessionAttr()

语法

db.setSessionAttr ( <options> )

设置会话属性。

参数描述

参数名 参数类型 描述 是否必填
options Json 对象 会话属性选项

options 格式

属性名 描述 格式
PreferedInstance 会话读操作优先选择的实例,取值列表:"M"、"m"、"S"、"s"、"A"、"a"、1-255。可以使用数组指定多个取值。
"M", "m":可读写实例(主实例)
"S", "s":只读实例(备实例)
"A", "a":任意实例
1-255:通过 --instanceid 指定实例 ID 的实例
PreferedInstance : "M"
PreferedInstance : [ 1, 10 ]
PreferedInstanceMode 指定会话当多个实例符合 PreferedInstance 的条件时的选择模式。
"random":从候选的实例中随机选择。
"ordered":从候选的实例中按照 PerferedInstance 的顺序进行选择。
PreferedInstaceMode : "random"
Timeout 指定会话执行操作的超时时间(单位:毫秒),-1 表示不进行超时检测。 Timeout : 10000

Note:

  • PreferedInstance 和 PreferedInstaceMode 的缺省值是协调节点配置中 --preferedinstance 和 --preferedinstancemode 的取值。
    • 协调节点配置 --preferedinstance 的默认值是 "M",--preferedinstacemode 的默认值是 "random"。
    • 实例的 ID 可以通过数据节点的配置项 --instanceid 进行设置,同一个数据组中可以配置多个相同实例 ID 的数据节点。
    • 修改数据节点的配置项 --instanceid 不能动态生效,需要手工停启数据节点。重启之后也需要手工调用 Sdb.invalidateCache() 清空各个协调节点的缓存。
    • 如果多个 1-255 的实例和 "M" 一起指定,则满足指定实例中的主实例会优先选择;如果多个 1-255 的实例和 "M" 或 "m" 一起指定,则当没有满足指定的实例时选择主实例。如 [ 1, 2, "M" ] 表示优先从实例 1 和实例 2 中的主实例读取;如果不存在实例 1 和实例 2,则从主实例读取。
    • 如果多个 1-255 的实例和 "S" 一起指定,则满足指定实例中的备实例会被优先选择;如果多个 1-255 的实例和 "S" 或 "s" 一起指定,则当没有满足指定的实例时选择备实例。如 [ 1, 2, "S" ] 表示优先从实例 1 和实例 2 中的备实例读取;如果不存在实例 1 和实例 2,则从任意一个备实例读取。
    • 如果指定多个 "M"、"m"、"S"、"s"、"A"、"a" 实例,则只有第一个生效。
    • 如果没有符合 PreferedInstance 的实例,会话将随机选择使用上一次写操作的实例,即可读写(主)实例进行查询(如无写操作,则随机选取实例)。
    • 在节点配置了instanceid的情况下,按照instanceid进行获取。在节点没有配置instanceid的情况下,按照节点的nodeid在组内的排序序列(从1开始)作为instanceid来进行选取,例如 组 db1 中有3个节点 [ { NodeID:1001}, {NodeID:1004}, {NodeID:1002} ],那么其节点的 instanceid 分别为 1, 3, 2。如果指定的1-255的实例ID大于数据组内的节点总数,则实例ID对节点总数取模后在组内按照nodeid的排序顺序选取。
  • Timeout 的默认值是 -1,即不进行超时检测。
  • 获取会话属性请参考 Sdb.getSessionAttr()

返回值

无返回值,出错抛异常,并输出错误信息,可以通过getLastErrMsg()获取错误信息或通过getLastError()获取错误码。

  • SDB_INVALIDARG( -6 ) options 属性的输入错误,请检查设置属性的值和范围等。

更多错误处理可以参考常见错误处理指南

示例

  • 设置会话优先从“主”数据库实例获取数据
> db.setSessionAttr( { PreferedInstance: "M" } )
  • 设置会话优先从 1 和 3 的备实例读取数据
> db.setSessionAttr( { PreferedInstance : [ 1, 3, "S" ] } )
  • 设置会话的操作超时时间为 10 秒
> db.setSessionAttr( { Timeout : 10000 } )
回到顶部