前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL命令 SET OPTION

SQL命令 SET OPTION

作者头像
用户7741497
发布2022-05-07 09:17:26
1.1K0
发布2022-05-07 09:17:26
举报
文章被收录于专栏:hml_知识记录

设置执行选项。

大纲

代码语言:javascript
复制
SET OPTION option_keyword = value

描述

SET OPTION语句用于设置执行选项,如编译模式、SQL配置设置和控制日期、时间和数字约定的区域设置。 每个set option语句只能设置一个关键字选项。

SET OPTION支持以下选项:

  • `AUTO_PARALLEL_THRESHOLD
  • COMPILEMODE
  • `DEFAULT_SCHEMA``
  • EXACT_DISTINCT
  • LOCK_ESCALATION_THRESHOLD
  • LOCK_TIMEOUT
  • PKEY_IS_IDKEY
  • SUPPORT_DELIMITED_IDENTIFIERS
  • Locale Options (date, time, and numeric conventions)

SET OPTION可以在动态SQL(包括SQL Shell)和嵌入式SQL中使用。

为了SQL兼容性,IRIS会解析其他SET OPTION参数(这里没有文档),但不执行任何操作。

因为SET OPTION的准备和执行速度很快,而且通常只运行一次,所以IRIS不会在ODBCJDBC或动态SQL中为SET OPTION创建缓存查询。

IRIS支持下列选项:

AUTO_PARALLEL_THRESHOLD

AUTO_PARALLEL_THRESHOLD选项被设置为一个整数n,用于确定当启用自动并行处理时是否应该对查询应用并行处理。 由于与并行处理相关的性能成本,因此需要为并行处理的优势确定一个阈值。 n越高,SQL查询使用并行处理执行的可能性就越低。 默认为3200。 这是一个系统范围的设置。 值n大致对应于所访问的映射中发生并行处理所需的最小元组数量。

当自动并行被禁用时,AUTO_PARALLEL_THRESHOLD选项没有作用。

也可以使用$SYSTEM.SQL.Util.SetOption()方法AutoParallelThreshold选项设置该选项。

COMPILEMODE

COMPILEMODE选项将当前名称空间的编译模式设置为DEFERREDIMMEDIATEINSTALLNOCHECK。 默认为IMMEDIATE。 从DEFERRED编译模式更改为IMMEDIATE编译模式会导致DEFERRED compile Queue中的任何类立即被编译。 如果所有类编译都成功,IRIS将SQLCODE设置为0。 如果有任何错误,SQLCODE设置为-400。 类编译错误记录在^mtemp2 ("Deferred Compile Mode","Error")中。 如果将SQLCODE设置为-400,则应该查看此全局结构以获得更精确的错误消息。 INSTALL编译模式类似于DEFERRED编译模式,但它应该只用于表中没有数据的DDL安装。

NOCHECK编译模式与IMMEDIATE编译模式类似,只是在编译时忽略了以下约束:如果一个表被删除, IRIS不检查引用被删除表的其他表中的外键约束。 如果添加了外键约束, IRIS不会检查现有数据以确保它对这个外键有效。 如果添加了NOT NULL约束, IRIS不会检查现有数据是否为NULL,也不会指定字段的默认值。 如果删除了UNIQUEPrimary Key约束 IRIS不会检查该表或其他表中的外键是否引用了被删除的键。

也可以使用$SYSTEM.SQL.Util.SetOption()方法CompileMode选项设置该选项。

DEFAULT_SCHEMA

DEFAULT_SCHEMA选项为所有名称空间设置系统范围的默认模式。 在显式更改之前,此默认值将保持有效。 默认模式名用于为所有未限定的表、视图或存储过程名提供模式名。

可以指定一个文字模式名或指定_CURRENT_USER。 如果指定_CURRENT_USER作为默认模式名, IRIS会将当前登录进程的用户名作为默认模式名。

EXACT_DISTINCT

EXACT_DISTINCT布尔值选项指定是否在系统范围内使用DISTINCT处理(TRUE)Fast DISTINCT处理(FALSE)。 系统范围的默认值是使用Fast Distinct处理。

EXACT_DISTINCT=TRUE时,GROUP BYDISTINCT查询生成原始值。 当EXACT_DISTINCT=FALSE时,启用快速Distinct,通过更好地使用索引(如果有索引),使涉及DistinctGROUP BY子句的SQL查询更有效地运行。 但是,这些查询返回的值以与存储在索引中的相同的方式进行排序。 这意味着此类查询的结果可能都是大写的。 这可能对区分大小写的应用程序有影响。

这个选项也可以使用$SYSTEM.SQL.Util.SetOption()方法FastDistinct boolean选项来设置。

LOCK_ESCALATION_THRESHOLD

LOCK_ESCALATION_THRESHOLD选项被设置为一个整数n,用于确定何时将行锁定升级为表锁定。 默认值是1000。 值n是单个事务中单个表的插入、更新或删除次数,当到达时将触发表级锁。 这是针对所有名称空间的系统范围设置。 例如,如果锁阈值为1000,并且进程启动一个事务,然后插入2000行,那么在插入第1001行之后,进程将尝试获取表级锁,而不是继续锁定各个行。 这有助于防止锁表变得太满。

这个选项也可以使用$SYSTEM.SQL.Util.SetOption()方法LockThreshold选项来设置。

LOCK_TIMEOUT

LOCK_TIMEOUT数值选项允许为当前进程设置默认的锁定超时。 LOCK_TIMEOUT值是SQL执行期间试图建立锁时等待的秒数。 当锁定冲突阻止当前进程对lockINSERTUPDATEDELETESELECT操作立即锁定一条记录、表或其他实体时,使用此锁定超时。 SQL继续尝试建立锁,直到超时超时,这时将生成SQLCODE -110-114错误。

可用的值是正整数和零。 超时设置是每个进程的。 可以使用$SYSTEM.SQL.Util.GetOption(“ProcessLockTimeout”)方法确定当前进程的锁定超时设置。

如果没有为当前进程设置锁定超时,则默认为当前系统范围的锁定超时设置。 如果您的ODBC连接断开并重新连接,重新连接的进程将使用当前系统范围的锁定超时设置。 系统范围的锁定超时默认为10秒。

PKEY_IS_IDKEY

PKEY_IS_IDKEY boolean选项指定主键是否也是系统范围内的ID键。 取值为TRUEFALSE。 如果为TRUE,且该字段不包含数据,则将主键创建为ID键。 也就是说,表的主键也成为了类定义中的IDKey索引。 如果字段不包含数据,则没有定义IDKey索引。 如果将主键定义为IDKey索引,则数据访问将更加有效,但主键值一旦设置,就永远不能修改。 一旦设置,就不能更改分配给主键的值,也不能将其他键指定为主键。 使用此选项还将更改主键排序规则的默认值; 主键字符串值默认为EXACT排序规则。 如果为FALSE,则主键和ID键被定义为独立的,效率较低。 但是,主键值是可修改的,主键字符串值默认为当前排序规则类型default,默认为SQLUPPER

要设置PKEY_IS_IDKEY选项,必须具有%Admin_Manage:USE权限。 否则,将收到一个SQLCODE -99错误(特权违反)。 一旦设置,该选项将在系统范围内对所有进程生效。 该选项的系统范围默认值也可以通过以下方式设置:

  • $SYSTEM.SQL.Util.SetOption()方法配置选项DDLPKeyNotIDKey。 要确定当前设置,调用$SYSTEM.SQL.CurrentSettings(),它显示通过DDL创建的是主键而不是ID键; 默认值是1。
  • 管理门户配置设置。 选择系统管理,配置,SQL和对象设置,SQL。 查看或修改通过DDL创建的表的“将主键定义为ID键”的当前设置。

PKEY_IS_IDKEY设置保持有效,直到通过另一个SET OPTION PKEY_IS_IDKEY重置或直到 IRIS Configuration被重新激活,将该参数重置为IRIS System Configuration设置。

SUPPORT_DELIMITED_IDENTIFIERS

默认情况下,系统范围内支持分隔标识符。 SUPPORT_DELIMITED_IDENTIFIERS布尔选项允许您更改系统范围内对分隔标识符的支持。 取值为TRUEFALSE。 如果为TRUE,用双引号分隔的字符串被认为是SQL语句中的标识符。 如果为FALSE,由双引号分隔的字符串被认为是SQL语句中的字符串字面值。

要设置SUPPORT_DELIMITED_IDENTIFIERS选项,必须具有%Admin_Manage:USE权限。 否则,将收到一个SQLCODE -99错误(特权违反)。 一旦设置,该选项将在系统范围内对所有进程生效。 SUPPORT_DELIMITED_IDENTIFIERS设置将保持有效,直到通过另一个设置选项SUPPORT_DELIMITED_IDENTIFIERS进行重置,或者直到由$SYSTEM.SQL.Util.SetOption()方法delimitedifiers选项在系统范围内进行更改。

Locale Options

区域设置选项是关键字选项,用于为当前进程的日期、时间和数字约定设置IRIS区域设置。 可选关键字有AM、DATE_FORMAT、DATE_MAXIMUM、DATE_MINIMUM、DATE_SEPARATOR、DECIMAL_SEPARATOR、MIDNIGHT、MINUS_SIGN、MONTH_ABBR、MONTH_NAME、NOON、NUMERIC_GROUP_SEPARATOR、NUMERIC_GROUP_SIZE、PM、PLUS_SIGN、TIME_FORMAT、TIME_PRECISION、TIME_SEPARATOR、WEEKDAY_ABBR、WEEKDAY_NAME、YEAR_OPTION。 所有这些选项都可以设置为文字,并且都采用默认值(美式英语惯例)。 TIME_PRECISION选项是可配置的(参见下面)。 如果将这些选项中的任何一个设置为无效值,InterSystems IRIS将发出SQLCODE -129错误(set OPTION区域设置属性的非法值)。

Date/Time Option Keyword

Description

AM

String. 默认 'AM'

DATE_FORMAT

Integer. 默认值为1。取值范围为0 ~ 15。

DATE_MAXIMUM

Integer. 默认为2980013(12/31/9999)。可以设置为更早的日期,但不能设置为更晚的日期。

DATE_MINIMUM

Positive Integer. 默认为0(12/31/1840)。可以设置为较晚的日期,但不能设置为较早的日期。

DATE_SEPARATOR

Character. Default is '/'

DECIMAL_SEPARATOR

Character. Default is '.'

MIDNIGHT

String. Default is 'MIDNIGHT'

MINUS_SIGN

Character. Default is '-'

MONTH_ABBR

String. Default is ' Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'. (注意,该字符串以空格字符开始,这是默认分隔符.)

MONTH_NAME

String. Default is ' January February March April May June ... November December'. 注意,该字符串以空格字符开始,这是默认分隔符.)

NOON

String. Default is 'NOON'

NUMERIC_GROUP_SEPARATOR

Character. Default is ','

NUMERIC_GROUP_SIZE

Integer. Default is 3.PM String. Default is 'PM'

PLUS_SIGN

Character. Default is '+'

TIME_FORMAT

Integer. Default is 1. 取值范围为1 ~ 4。

TIME_PRECISION

Integer from 0 through 9 (inclusive). Default is 0. 小数秒的位数。

TIME_SEPARATOR

Character. Default is ':'

WEEKDAY_ABBR

String. Default is ' Sun Mon Tue Wed Thu Fri Sat'. (注意,该字符串以空格字符开始,这是默认分隔符.)

WEEKDAY_NAME

String. Default is ' Sunday Monday Tuesday Wednesday Thursday Friday Saturday'. (注意,该字符串以空格字符开始,这是默认分隔符.)

YEAR_OPTION

Integer. Default is 0. 取值范围为0 ~ 6。有关表示2位数和4位数年份的这些方法的解释,见ObjectScript $ZDATE函数。

要在系统范围内配置TIME_PRECISION,请进入管理门户,选择“系统管理”、“配置”、“SQL”和“对象设置”、“SQL”。 查看和编辑GETDATE()CURRENT_TIMECURRENT_TIMESTAMP的默认时间精度的当前设置。 它指定小数秒的精确位数。 默认值是0。 允许的值的范围是09位精度。 小数秒中有意义的数字的实际数目与平台有关。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大纲
  • 描述
    • AUTO_PARALLEL_THRESHOLD
      • COMPILEMODE
        • DEFAULT_SCHEMA
          • EXACT_DISTINCT
            • LOCK_ESCALATION_THRESHOLD
              • LOCK_TIMEOUT
                • PKEY_IS_IDKEY
                  • SUPPORT_DELIMITED_IDENTIFIERS
                    • Locale Options
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档