我有两个长时间运行的查询,它们都在事务上并访问同一个表但在这些表中完全分开的行.这些查询还会根据这些查询执行一些更新和插入.
似乎当它们同时运行时会遇到某种类型的锁定,并且当它更新其中一行时,它阻止了任务完成并锁定.我正在对正在读取的行使用独占行锁,并且在进程上显示的锁是lck_m_ix锁.
两个问题:
我正在建立一个通过各种CSV Feed更新大量数据的系统.通常我会循环遍历Feed中的每一行,执行select查询以检查项目是否已存在,并根据项目是否存在插入/更新项目.
我觉得这种方法的可扩展性不高,可能会使服务器在更大的源上运行.我的解决方案是正常循环项目,但将它们存储在内存中.然后,对于每100个左右的项目,对这100个项目进行选择,并获得数据库中匹配的现有项目列表.然后将insert/update语句连接在一起并将它们运行到数据库中.这基本上可以减少到数据库的行程.
这是一个可扩展的解决方案吗?是否有关于将大型Feed导入生产环境的示例教程?
谢谢