Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 数据库管理 » 高可用性和只读向外扩展系统 » 数据库镜像 » 数据库镜像中应用程序开发的注意事项 » 在镜像系统中连接到数据库

 

在镜像数据库中执行查询

在数据库镜像系统中,可以使用只读连接访问在镜像服务器上运行的数据库。如果要下放报告或需要此数据库的只读访问的其它操作,此功能很有用。

尝试更改镜像数据库将导致错误,其行为与使用 -r 选项作为只读启动数据库时的行为相同。您可在临时表上执行操作。

根据指定的隔离级别,针对镜像数据库执行的查询可设置锁。如果锁干扰从主服务器应用的操作,则将回退持有锁的连接的事务,并关闭这些连接的任何打开的游标。以隔离级别 0 运行的应用程序不添加行锁,但仍获取模式锁。如果模式锁干扰从主服务器应用的操作,则将回退针对镜像数据库的事务。

需要一致的数据库视图(所以不能使用隔离级别 0)的应用程序应考虑使用快照隔离。为此,allow_snapshot_isolation 选项必须设置为 On。此选项在主服务器和镜像服务器上均生效,所以必须考虑与快照隔离有关的成本。

与镜像服务器的连接受针对主服务器的事务影响,因为这些操作随后通过镜像服务器处理和应用。在主服务器上提交更新的时间与在镜像服务器上更新可用的时间之间有短暂延迟。此延迟通常很短,但访问在镜像服务器上运行的数据库时应记住此延迟。

如果发生故障转移,镜像服务器变为主服务器,将维持与镜像服务器的连接。故障转移后,连接可对数据库进行更改。查询 ReadOnly 数据库属性的值,以确定您所连接的数据库是否可以更新:

SELECT DB_PROPERTY( 'ReadOnly' );

在某些情况下,当复制节点或镜像数据库上的连接阻止应用事务日志时,将断开或取消这些连接。例如,如果某个连接正在使用的过程是事务日志正在尝试更改或删除的,那么此连接妨碍事务日志的应用,将断开此连接并将消息输出到服务器控制台。

 另请参见