设计表以支持使用sql server更快地更新一个字段的最佳实践

Joh*_*Liu 6 sql-server performance database-design readwritelock

我正在研究Workflow like system.我有一个任务表和状态字段.状态值可以是新的,准备好的,处理的,错误的,中止的,完成的.

我有大约7个过程,它们将根据不同的情况触发,以改变任务状态的值.大多数时候,每个进程都可以在自己的数据集上工作,每次只处理多达5000条记录.但如果数据达到约200万条记录,我仍然会看到一些僵局.我检查SQL Profiler,看起来像一些页面资源相关.我不擅长sql server性能调优,也不太了解它.

由于非活动任务将每天存档,我想重新设计该表以支持大约1000万条记录.

几个选择可能是:

  1. 根据状态创建拆分表.
  2. 根据状态创建包含静态数据和支持表的主表

这种情况有什么好的做法吗?

谢谢!

Siv*_*iva 0

  • 您可以根据状态列对表进行分区。一个分区中的活动记录。关闭另一个分区中的记录
  • 您还可以按月清除已关闭的记录(如果不再需要则删除)或移至存档表
  • 拆分表我认为这不是更好的选择(您不需要多个表来实现相同的功能)
  • 为了避免死锁,您使用的是哪个版本的 SQL Server
  • 如果您使用的是 SQL 2005 及更高版本,请使用读取已提交快照隔离来读取已提交的数据。这将确保您的读取不会阻止写入