Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 在数据库中执行重复更新的性能准则_Performance_Design Patterns_Sql Update - Fatal编程技术网

Performance 在数据库中执行重复更新的性能准则

Performance 在数据库中执行重复更新的性能准则,performance,design-patterns,sql-update,Performance,Design Patterns,Sql Update,我有一个数据库表,其中一个字段包含RTF(富文本格式)。我需要将RTF转换为HTML,以便稍后在HTML编辑器中正确显示它 为了实现这一点,我开发了一个控制台应用程序,它可以为每个表条目读取RTF字段并将其转换为HTML。此步骤只需执行一次(这是一个独特的迁移过程),大约有1500条记录受到影响 由于涉及的记录数量不太多,性能不会受到严重影响,但暂时忽略数据量,我想知道哪种模式是此类场景的最佳模式: 1) Extract data from DB<br> 2) Execute mod

我有一个数据库表,其中一个字段包含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
1)从数据库中提取数据
2) 对该数据执行修改
3) 使用修改后的值更新相对行

考虑到我正在使用LINQ to SQL,仍然可以为每个修改的记录执行submit(),还是最好将修改后的记录存储在数据结构中(如带有ID的哈希表,modifiedValue),并为所有记录创建一个submit()?

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

  • 网络带宽
  • 磁盘延迟
  • 磁盘带宽
  • 存储速度
  • CPU速度
  • 在软件方面,瓶颈通常至少是其中的一个,不一定按此顺序排列,影响范围从上表中的第一个到最后一个:

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

    你提到这是一次性的,所以我开始把所有的东西都放在一个交易中


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

    +1作为良好的解释。控制台应用程序将在数据库所在的同一服务器上执行一次,因此不会有网络延迟。我正在使用SQL Server 2008 R2,但如果可能的话,我更喜欢使用LINQ,因为我还不熟悉CLR集成,这只是一个“只做一次,忘记它”的步骤,期限很短。@Luca谢谢。在控制台上运行比CLR稍微慢一点(CLR的集成度稍微高一点),但对于“只做一次就忘了它”来说,运行起来也一样好。