2012-01-06 42 views
0

我有一個包含RTF(富文本格式)字段的數據庫表。我需要將RTF轉換爲HTML,以便稍後在HTML編輯器中正確顯示它。在數據庫中執行重複更新的性能指南

爲了達到這個目的,我開發了一個控制檯應用程序,爲每個表項讀取RTF字段並將其轉換爲HTML。這步驟將只完成一次(是一個獨特的遷移過程),並有大約1500記錄受影響

由於所涉及的記錄數並非如此身高,性能不會受到deeeply影響,但暫時忽略的數據量,我想知道這將是對這種場景的最佳模式:

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爲HashTable,modifiedValue)提交()所有?上DBMS

回答

1

性能通常以該順序受硬件:

  1. 網絡帶寬
  2. 磁盤延遲
  3. 磁盤帶寬
  4. 存儲器速度
  5. CPU速度

在軟件方面,通常是瓶頸是它們中的至少一個,不一定在這個順序和效果可以先在上面的列表範圍到最後:

  • 算法
  • 指標
  • 查詢計劃
  • 交易

你的算法很簡單,並且 - 假設你有一個主鍵並且它只是一個表 - 你不能從索引或查詢計劃中獲得。

你提到這是一個單一的事情,所以我會開始把所有事情放到一個事務中。

如果你的DBMS是微軟SQL Server 2005或,你可以只使用CLR Integration服務器本身的整個事情,消除了很好的解釋了硬件邊界數1

+0

+1。控制檯應用程序將在數據庫所在的同一臺服務器上執行一次,因此不會出現網絡延遲。我正在使用SQL Server 2008 R2,但如果可能的話,我寧願使用LINQ,正弦我不熟悉CLR集成,這只是一個「做一次,忘記它」的步驟,並且期限很短。 – Francesco 2012-01-06 09:48:41

+0

@Luca謝謝。在控制檯上運行比CLR稍慢(CLR稍微集成一點點),但對於「做一次,忘記它」也同樣適用。 – 2012-01-06 13:30:20