文档

关于 SequoiaDB

快速入门

安装

基本操作

数据模型

SQL引擎

FileSystem引擎

S3引擎

系统架构

数据库管理

连接器

驱动

参考手册

SequoiaDB Shell方法

概述

Global

Sdb

SecureSdb

SdbCS

SdbCollection

SdbCursor

SdbQuery

SdbReplicaGroup

SdbNode

SdbDomain

Oma

File

FileContent

Cmd

Remote

Hash

IniFile

Sdbtool

Ssh

System

辅助类型对象

特殊类型对象

操作符

SQL语法

SQL to SequoiaDB 映射表

限制

错误码

故障排除

SAC 管控中心

Web服务

版本信息

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"
PreferedStrict 指定节点选择是否为严格模式,当为严格模式时,节点只能从 preferedinstance 指定的ID中选取 PreferedStrict : true
Timeout 指定会话执行操作的超时时间(单位:毫秒)。
-1 表示不进行超时检测。
最小值为 1000 毫秒。
Timeout : 10000
TransIsolation 会话事务的隔离级别,0为RU级别,1为RC级别,2为RS级别。 TransIsolation : 1
TransTimeout 会话事务锁等待超时时间(单位:秒)。 TransTimeout : 10
TransLockWait 会话事务在RC隔离级别下是否需要等锁。 TransLockWait : true
TransUseRBS 会话事务是否使用回滚段。 TransUseRBS : true
TransAutoCommit 会话事务是否支持自动事务提交。 TransAutoCommit : true
TransAutoRollback 会话事务在操作失败时是否自动回滚。 TransAutoRollback : true
TransRCCount 会话事务是否使用读已提交来处理 count() 查询。 TransRCCount : true

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,即不进行超时检测。
  • 事务相关属性只有 TransTimeout 允许在事务中设置,其它事务属性需要在非事务中设置。
  • 获取会话属性请参考 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 } )
回到顶部