首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何同时更新和同步数据库表?

如何同时更新和同步数据库表?
EN

Stack Overflow用户
提问于 2014-04-17 06:59:22
回答 2查看 2.3K关注 0票数 2

I需要同步(首先上载到远程DB -下载到移动设备下一步) DB表与来自移动设备的远程DB(这可以从多个表中插入/更新/删除行)。

远程DB基于上传的同步data.When同步执行其他操作,继续将数据下载到移动设备,远程DB仍在执行先前的任务,并导致同步失败。类似于‘关键条件’‘同步和DB操作’都希望访问远程数据库。如何解决这个问题?是否可以一次同步数据库并对同一DB进行操作?

我正在使用Sql server 2008 DB和mobilink同步。

编辑:我按顺序执行的操作:

1.一个带有应用程序的iPhone,它使用mobilink来同步数据。

2.同步意味着上载(从设备到远程DB ),然后下载(从远程DB到设备)。

3.远程数据库意味着合并DB;设备DB是Ultralite DB。

4.在更新某些表时,Remote DB会触发一些触发器。

5.当同步上传完成时,从设备到远程的上传将触发触发器。

6.就在下一分钟,上传完成,下载到设备开始。

7.与这些DB触发器开火的时刻完全相同。

8.现在出现DB同步(-DOWNLOAD)和触发器(更新查询)操作之间的死锁。

9.同步失败,错误说无法访问某些表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-23 09:53:05

我做了很多工作和谷歌!拿出一个简单的(?!)解决问题的方法。(尽管这个问题无法解决,..i还是尽了最大努力)。

  1. 跟踪执行同步(某种用户详细信息)的所有客户端。
  2. 创建一个sql作业调度程序,其中包含用户同步时要执行的所有操作。
  3. 每天宣布一个“维护期”,以执行与保存的用户/客户端同步细节有关的sql作业的任务
  4. 在这里,保持客户的详细信息,每次都是昂贵的,但非常需要!
  5. 远程合并数据库“完全更新”后,只有在维护期。

任何比这更好的方法,我们将不胜感激!欢迎所有建议!

票数 1
EN

Stack Overflow用户

发布于 2014-04-24 21:32:52

我对你们系统的理解如下:

  1. 移动应用程序向Server发送UPDATE语句。
  2. ON UPDATE触发器,它可以更新大约30个表(=触发器+1主update语句中至少30条UPDATE语句)
  3. UPDATE在单个事务中执行。当触发器完成所有更新时,此事务将结束。
  4. 移动应用程序不等待UPDATE完成,而是发送多个SELECT语句从数据库获取数据。
  5. 这些SELECT语句查询与上面正在更新的触发器相同的表。
  6. 在某些用户的查询中会发生阻塞和死锁,因为触发器在选择和保持表的锁定之前没有完成更新。

在优化时,我们试图使我们的进程对计算机来说不那么容易,在较少的迭代中获得相同的结果,并且使用更少的资源或那些更多可用/更少重载的资源。

我对你的设计的建议:

  1. 使用参数化的SPs。每次Server收到任何语句时,它都会创建执行计划。对于一个带有触发器DB的UPDATE语句,至少需要31个执行计划。每次应用程序更新DB时,每个连接都会发生在繁忙的生产环境中。这是一种巨大的浪费。
  2. SPs将如何帮助减少阻塞?现在您有了一个事务,用于31个查询,其中针对所有涉及的表发出锁,并一直保持到事务提交为止。使用SP,您将有31个小事务,每次只有1-2个表将被锁定。

我想解决的另一个问题是:如何对数据库进行异步更新? Server中有一个名为Service的特性。它允许自动处理消息队列(队列表中的行):它监视队列,接收来自队列的消息,并处理您指定和删除队列中的消息。

例如,为SPs - messages保存参数,Service使用参数执行SP。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23126559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档