在数据库中执行重复更新的性能指南

时间:2012-01-06 08:42:19

标签: performance design-patterns sql-update

我有一个数据库表,其中包含一个包含RTF(富文本格式)的字段。我需要将RTF转换为HTML,以便以后在HTML编辑器中正确显示它。

为了实现这一点,我开发了一个控制台应用程序,为每个表条目读取RTF字段并将其转换为HTML。此步骤只需执行一次(是一个独特的迁移过程),并且 1500条记录受影响

由于所涉及的记录数量不是很高,因此性能不会受到严重影响,但暂时忽略了我想知道的数据量,这对于这种情况来说是最好的模式:

1) Extract data from DB<br>
2) Execute modification on that data<br>
3) Update the relative row with modified values

考虑到我正在使用LINQ to SQL,仍然可以为每个修改过的记录执行submit(),或者将修改后的记录存储在数据结构中(比如带有ID,modifiedValue的HashTable)并进行单个提交()为所有人?

1 个答案:

答案 0 :(得分:1)

DBMS上的性能通常受以下顺序的硬件影响:

  1. 网络带宽
  2. 磁盘延迟
  3. 磁盘带宽
  4. 记忆速度
  5. CPU速度
  6. 在软件方面,瓶颈通常至少是其中之一,不一定按此顺序排列,效果可以从上面列表中的第一个到最后一个:

    • 算法
    • 索引
    • 查询计划
    • 交易

    您的算法很简单,并且 - 假设您有一个主键并且它只是一个表 - 您无法从索引或查询计划中获益。

    你提到这是一回事,所以我开始把所有东西都放到一个交易中。

    如果您的DBMS是Microsoft SQL Server 2005或更高版本,您可以使用CLR Integration在服务器上运行整个操作,并消除硬件边界编号1.