我有一个正在运行的服务,它可以转换数据并将转换后的(几百万行)数据写入 SQL Server。前端从这些表中读取。
自然,我们的目标是尽可能快地写入这些数据,但不牺牲读取性能。
我目前的方法是编写单独的行,一次一个服务器调用。这似乎最大限度地减少了锁定,但写入速度并不是最佳的。不受限制,我们可能达到每秒几千行。
我也尝试批量加载数据,但我遇到了死锁和超时。我假设这是由于插入/更新时的锁升级(我将提交分批成 256 行)。
关于在不牺牲读取性能的情况下更快地将记录提交到数据库的任何想法?
一些细节:
- 转换后的数据驻留在许多不同的表中,所有表都编入索引以最大限度地提高读取性能。
- 我使用一个持续打开的连接来写入数据。