当 MobiLink 服务器接收到来自 MobiLink 客户端的上载时,只有在同步完成之后才存储整个上载。这是因为:
过滤下载行 确定下载行的最常用技术是下载最近一次下载后修改过的行。在同步的时候,上载先于下载进行。在上载期间插入或更新的任何行都是上一次下载后修改过的行。
很难编写一个从下载中去掉那些作为上载部分而发送的行的 download_cursor 脚本。因此,MobiLink 服务器将自动从下载中删除这些行。
处理插入和更新 缺省情况下,上载中的表会按照可避免参照完整性违规的顺序应用到统一数据库中。上载中的表将根据外键关系排序。例如,如果表 A 和表 C 都有外键引用了表 B 中的主键列,那么首先上载表 B 行的插入和更新。
在插入和更新之后处理删除 删除操作在应用了所有插入和更新之后应用到统一数据库。当应用删除操作时,将以与其在上载中出现方式相反的顺序处理表。当一个要删除的行引用另一个表中也要被删除的行时,这一操作顺序将保证引用行在被引用行之前删除。
死锁 将上载应用于统一数据库时,可能会因为与其它事务并发而出现死锁。这些事务可能是来自其它 MobiLink 服务器数据库连接的上载事务,或者是来自其它使用统一数据库的应用程序事务。上载事务发生死锁时将被回退,而 MobiLink 服务器将自动重新开始应用上载。
性能提示 编写同步脚本时务必要尽可能避免争用。在多个用户同时进行同步时,争用会对性能产生明显的影响。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |