返回首页

gbase数据、南大通用产品文档:GBase8s存储数据

更新日期:2024年09月11日

数据库和文件之间的另一个差异是数据库的组织方式是与数据库一起存储的。
文件可能具有复杂的内部结构,但该结构的定义不在该文件中;结构的定义在创建或使用
文件的程序中。例如:字处理程序存储的文档文件可能包含描述文档格式的详细结构。但
是,只有字处理程序能够译解该文件的内容,因为结构是在程序而不是文件中定义的。
然而,数据模型包含在它描述的数据库中。它与数据库融为一体。并且可用于使用该数据
库的任何程序。模型不但定义数据项的名称,而且定义数据项的数据类型,因此程序可以
使它自己适应该数据库。例如:某个程序可发现在当前数据库中,价格项是八位数的十进
制数,
小数点右边有两位数;
于是它可为该类型的数分配存储器。
在 SQL 编程和通过 SQL
程序修改数据中讨论了程序如何使用数据库的主题。

设置 CLUSTER_TXN_SCOPE 配置参数来配置高可用性集群,以便在客户端会话发出提交时,
服务器在辅助服务器上或跨集群地阻塞会话直到事务在那个会话中应用。
onconfig.std 值
CLUSTER_TXN_SCOPE SERVER

l SESSION = 当客户端会话发出提交时,数据库服务器阻塞会话,直到事务提交的影
响返回到那个会话。控制返回到会话之后,同一个数据库服务器的其他会话或集
群中其他数据库服务器上的其他会话可能觉察不到事务提交和事务的影响。
l SERVER (缺省行为) = 当客户端会话发出提交时,数据库服务器阻塞会话,直到
事务应用在客户端发出提交的那个数据库服务器。那个数据库服务器的其他会话
觉察到事务提交和事务的影响。集群中的其他数据库服务器会话可能觉察不到事
务的提交及其影响。对于高可用性集群服务器,这是缺省行为。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 51 -

l CLUSTER = 当客户端会话发出提交时,数据库服务器阻塞会话,直到事务应用在高
可用性集群中所有数据库服务器,除了使用 DELAY_APPLY 或 STOP_APPLY 的 RS
辅助服务器之外,这些会话觉察到事务提交和事务的影响。
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。
您运行带有 -wf CLUSTER_TXN_SCOPE=value 或 -wm CLUSTER_TXN_SCOPE=value 参数的
SQL 管理 API task() 或 admin() 函数之后。
用法
设置 CLUSTER_TXN_SCOPE 配置参数来控制从高可用性集群返回事务提交到客户端应用程
序。集群事务协调可延迟事务提交到客户端应用程序的返回,直到事务应用到辅助服务器
或高可用性集群中的所有辅助服务器。 这个例程防止由于异步日志处理导致的操作失败,
并确保多步骤处理中的那些步骤按串行顺序发生。
集群事务协调不应用到 RS 辅助服务器,
该服务器有 DELAY_APPLY 或 STOP_APPLY 配置函
数值而不是 0。在客户端应用程序可收到提交之前,事务不需要应用在 RS 辅助服务器上。

CLUSTER_TXN_SCOPE 影响只读辅助服务器和可更新辅助服务器上的会话。
示例1:在高可用性集群服务器间的事务协调
在这个示例中,客户端应用程序启动一个两步骤进程。客户端应用程序在主数据库服务器
上插入数据,然后在 HDR 辅助服务器上启动数据处理。
在来自主服务器的日志应用在 HDR 辅助服务器上之前,如果试图在 HDR 服务器上对插入
的数据执行 SELECT,
则操作失败。
为了防止此失败,
设置主服务器的 CLUSTER_TXN_SCOPE
配置参数为 CLUSTER,以便客户端应用程序不收到提交,且不可启动数据处理,直到数据
插入页应用在 HDR 辅助服务器上。
示例2:数据库服务器上的事务协调
在此示例中,您让一个客户端应用程序分作几个处理步骤。每个处理步骤使用一个不同的
SQL 会话来连接到数据库服务器。应用程序更新数据,然后应用程序的另一部分在不同的
SQL 会话中处理被更新的数据。
如果 CLUSTER_TXN_SCOPE 设置为 SESSION,
则处理被更新的数据的那部分应用程序觉察不
到更新的结果,
可发生失败。
为了防止此失败,
设置数据库服务器的 CLUSTER_TXN_SCOPE 配
置参数为 SERVER,以便客户端应用程序不接收提交,且不启动数据处理,直到在数据库服
务器上更新完成。

GBase 8s 数据库服务器支持访问模式。对于事务内的行,访问模式影响读和写的并发,并
使用 SET TRANSACTION 语句设置访问模式。您可使用访问模式来控制共享的文件之中
的数据修改。
在缺省情况下,事务是读写的。如果您指定事务为只读,则那个事务不可执行下列任务:

插入、删除或更新表行

创建、改变或删除任何数据库对象,诸如模式、表、临时表、索引或存储例程。

授予或撤销权限

更新统计信息

重命名列或表
只读访问模式禁止更新。
您可在只读事务中执行存储例程,只要该例程不试图执行任何受限制的操作。
要获取关于如何使用 SET TRANSACTION 语句来指定访问模式的信息,
请参阅
《GBase 8s
SQL 指南:语法》。