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

SQL Anywhere 11.0.1 (中文) » MobiLink - 服务器管理 » 使用 MobiLink 服务器技术 » 同步技术

 

MobiLink 隔离级别

如果在 RDBM 上启用隔离级别,MobiLink 将在它所能够达到的最优隔离级别连接到统一数据库。选择缺省隔离级别可以提供最佳性能并确保数据的一致性。

通常,MobiLink 上载时使用隔离级别 SQL_TXN_READ_COMMITTED,如果可能,将在下载时使用快照隔离(如果不可能,则使用 SQL_TXN_READ_COMMITTED)。快照隔离可避免下载阻塞问题,直到事务在统一数据库上关闭。

快照隔离可导致下载数据重复(例如长时间运行的事务使同一快照被长期使用),但 MobiLink 客户端会自动处理这种情况,因此唯一的损失就是传输时间和远程的处理工作。

隔离级别 0 (READ UNCOMMITTED) 通常不适用于同步,它会导致数据不一致。

在连接到数据库后立即设置隔离级别。会出现一些其它连接设置,随后将提交事务。大多数 RDBMS 都需要 COMMIT,只有这样隔离级别(可能还有其它设置)才会生效。

SQL Anywhere 版本 10

SQL Anywhere 版本 10 支持快照隔离。缺省情况下,MobiLink 对上载使用 SQL_TXN_READ_COMMITTED 隔离级别,对下载使用快照隔离。

如果在 SQL Anywhere 统一数据库中启用快照隔离,MobiLink 将只能使用快照隔离。如果未启用快照隔离,MobiLink 将使用缺省的 SQL_TXN_READ_COMMITTED。

使数据库启用快照隔离可能会影响性能,因为无论使用快照隔离的事务有多少,都必须维护所有修改行的副本。请参见启用快照隔离

使用 mlsrv11 -esu 选项可为上载启用快照隔离,使用 mlsrv11 -dsd 选项可禁用快照隔离。如果需要在连接脚本中更改 MobiLink 缺省隔离级别,应在 begin_upload 或 begin_download 脚本中执行此操作。如果在 begin_connection 脚本中更改缺省隔离级别,则您的设置可能会在上载和下载事务开始时被替换。

请参见-esu 选项-dsd 选项

SQL Anywhere 版本 10 之前的版本

如果您使用的是 SQL Anywhere 版本 10 之前的版本,则缺省的 MobiLink 隔离级别为 SQL_TXN_READ_COMMITTED。可在 begin_connection 脚本中更改整个 MobiLink 会话的缺省值,也可在 begin_upload 和 begin_download 脚本中为上载和下载分别更改。

Adaptive Server Enterprise

对于 Adaptive Server Enterprise,缺省的 MobiLink 隔离级别为 SQL_TXN_READ_COMMITTED。可在 begin_connection 脚本中更改整个 MobiLink 会话的缺省值,也可在 begin_upload 和 begin_download 脚本中为上载和下载分别更改。

Oracle

Oracle 支持快照隔离,但将其称为 READ COMMITTED。缺省情况下,MobiLink 在上载和下载时使用快照/READ COMMITTED 隔离级别。

可在 begin_connection 脚本中更改整个 MobiLink 会话的缺省值,也可在 begin_upload 和 begin_download 脚本中为上载和下载分别更改。

为使 MobiLink 服务器能够最有效地使用快照隔离,MobiLink 服务器使用的 Oracle 帐户必须拥有对 V_$TRANSACTION Oracle 系统视图的权限。如果没有此权限,将会发出警告而且下载时可能会丢失行。只有 SYS 可授予此访问权限。授予此访问权限的 Oracle 语法为:

grant select on SYS.V_$TRANSACTION to user-name
Microsoft SQL Server 2005 及更高版本

Microsoft SQL Server 2005 支持快照隔离。缺省情况下,MobiLink 对上载使用 SQL_TXN_READ_COMMITTED 隔离级别,对下载使用快照隔离。

如果在 SQL Server 统一数据库中启用快照隔离,MobiLink 将只能使用快照隔离。如果未启用隔离,MobiLink 将使用缺省的 SQL_TXN_READ_COMMITTED。有关详细信息,请参见 SQL Server 文档。

使用 mlsrv11 -esu 选项可为上载启用快照隔离,使用 mlsrv11 -dsd 选项可禁用快照隔离。如果需要在连接脚本中更改 MobiLink 缺省隔离级别,应在 begin_upload 或 begin_download 脚本中执行此操作。如果在 begin_connection 脚本中更改缺省隔离级别,则您的设置可能会在上载和下载事务开始时被替换。

请参见-esu 选项-dsd 选项

要在 SQL Server 上使用快照隔离,则用于连接 MobiLink 服务器与数据库的用户 ID 必须具有访问 SQL Server 系统表 SYS.DM_TRAN_ACTIVE_TRANSACTIONS 的权限。如果未授予此权限,MobiLink 将使用缺省的级别 SQL_TXN_READ_COMMITTED。

统一数据库在同时还运行其它数据库的 Microsoft SQL Server 上运行时,如果您将快照隔离用于上载或下载,并且上载或下载脚本不访问服务器上的任何其它数据库,这时应指定 MobiLink 服务器 -dt 选项。此选项使 MobiLink 忽略除当前数据库中的事务之外的所有事务。这可增加吞吐量并减少行的重复下载。

请参见-dt 选项

Microsoft SQL Server 版本 2005 之前的版本

如果您使用的是 Microsoft SQL Server 版本 2005 之前的版本,则缺省的 MobiLink 隔离级别为 SQL_TXN_READ_COMMITTED。可在 begin_connection 脚本中更改整个 MobiLink 会话的缺省值,也可在 begin_upload 和 begin_download 脚本中为上载和下载分别更改。

另请参见