如果在 RDBM 上启用隔离级别,MobiLink 将在它所能够达到的最优隔离级别连接到统一数据库。选择缺省隔离级别可以提供最佳性能并确保数据的一致性。
通常,MobiLink 上载时使用隔离级别 SQL_TXN_READ_COMMITTED,如果可能,将在下载时使用快照隔离(如果不可能,则使用 SQL_TXN_READ_COMMITTED)。快照隔离可避免下载阻塞问题,直到事务在统一数据库上关闭。
快照隔离可导致下载数据重复(例如长时间运行的事务使同一快照被长期使用),但 MobiLink 客户端会自动处理这种情况,因此唯一的损失就是传输时间和远程的处理工作。
隔离级别 0 (READ UNCOMMITTED) 通常不适用于同步,它会导致数据不一致。
在连接到数据库后立即设置隔离级别。会出现一些其它连接设置,随后将提交事务。大多数 RDBMS 都需要 COMMIT,只有这样隔离级别(可能还有其它设置)才会生效。
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 脚本中更改缺省隔离级别,则您的设置可能会在上载和下载事务开始时被替换。
如果您使用的是 SQL Anywhere 版本 10 之前的版本,则缺省的 MobiLink 隔离级别为 SQL_TXN_READ_COMMITTED。可在 begin_connection 脚本中更改整个 MobiLink 会话的缺省值,也可在 begin_upload 和 begin_download 脚本中为上载和下载分别更改。
对于 Adaptive Server Enterprise,缺省的 MobiLink 隔离级别为 SQL_TXN_READ_COMMITTED。可在 begin_connection 脚本中更改整个 MobiLink 会话的缺省值,也可在 begin_upload 和 begin_download 脚本中为上载和下载分别更改。
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 支持快照隔离。缺省情况下,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 脚本中更改缺省隔离级别,则您的设置可能会在上载和下载事务开始时被替换。
要在 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 之前的版本,则缺省的 MobiLink 隔离级别为 SQL_TXN_READ_COMMITTED。可在 begin_connection 脚本中更改整个 MobiLink 会话的缺省值,也可在 begin_upload 和 begin_download 脚本中为上载和下载分别更改。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |