我们有一些混乱的数据库情况。
我们的主要后台系统是用 Visual Fox Pro 编写的,带有本地数据(是的,我知道!)
为了有效地处理我们网站中的数据,我们选择定期将数据导出到 SQL 数据库。但是,执行此操作的过程基本上每次都会清除表并重新插入。
这意味着我们有两个 SQL 数据库——一个是 FoxPro 导出过程写入的,另一个是我们的网站读取的。
这个问题与从一个 SQL 数据库到另一个(SqlFoxProData -> SqlWebData)的转换有关。
对于一个特定的表(我们的主要应用程序表之一),因为在这个过程中会发生各种数据转换,所以它不是使用自连接的简单的 UPDATE、INSERT 和 DELETE 语句,而是我们不得不使用游标代替(我知道!)
这已经运行了好几个月,但现在我们开始在更新时遇到性能问题(这可能在白天经常发生)
基本上,当我们从 SqlFoxProData.ImportantTable 更新 SqlWebData.ImportantTable 时,它会导致实时网站上偶尔出现连接超时/死锁/其他问题。
我一直在努力优化查询、缓存等,但现在我正在寻找另一种更新数据的策略。
想到的一个想法是拥有两份重要表(A 和 B),一些关于哪个表当前“活动”的概念,更新非活动表,然后切换当前活动表
即当我们更新ImportantTableB 时网站从ImportantTableA 读取,然后我们切换网站以从ImportantTableB 读取。
问题是,这是可行的还是个好主意?我以前做过类似的事情,但我不相信它一定对优化/索引等有好处。
欢迎任何建议,我知道这是一个混乱的情况......长期目标是让我们的 FoxPro 应用程序指向 SQL。
(如果有帮助,我们将使用 SQL 2005)
我应该补充一点,数据一致性在实例中并不是特别重要,因为数据总是有点过时