程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 在SQL Server中謹慎導入導出大容量數據(二)

在SQL Server中謹慎導入導出大容量數據(二)

編輯:關於SqlServer


  通常情況下,只有在需要大容量導入導出數據的時候才臨時啟用這種操作模式。為了大容量導入性能與數據庫安全考慮,筆者建議建議數據庫管理員可以在執行大容量導入操作之前,先將數據庫改為使用大容量日志恢復模式。完成之後馬上將數據庫重設為完整恢復模式。

  一、 考慮是否需要先暫時刪除表的索引。

  引是一種特殊的文件,在數據庫中它的作用是舉足輕重的。簡單的來說,如果把數據庫比喻成一本書的話,那麼索引就好像是書的目錄。索引包含著對數據表裡所有記錄的引用指針。索引可以提高數據庫的性能,這是毋庸置疑的。但是不是在任何場合索引都可以起到正面的效果。在某些特殊情況下,其反而會降低一些操作的性能,如大容量數據的導入。

  索引可以加快數據檢索操作,但它會使數據修改操作變慢。因為每次修改或者插入數據記錄,索引就必須刷新一次。也就是說,插入一百萬條記錄,則索引就必須重新所新一百萬次。可見,當大容量數據導入的時候,索引將耗費數據庫大量的資源,從而降低數據庫的性能。如果目的表中有索引,那麼不僅會影響數據庫大容量數據導入的速度,而且還會降低其他用戶正常訪問數據庫的性能。

  為此,筆者的建議是,如果要導入的表中數據並不是很多,那麼最好先刪除索引來提高大容量數據導入的性能。導入之後再重新啟用索引。但是,如果在需要導入的表中已經有不少的數據,而需要導入的數據可能跟已存在的數據差不多或者要少的話,那麼還是不用刪除索引。此時如果刪除索引會起到適得其反的效果。因為數據庫系統重新生成索引所需要的時間可能比大容量導入操作期間所節省的時間要更長。此時管理員刪除目的表的索引就有點得不償失了。

  二、 數據導入後即時進行數據庫備份。

  同建立數據庫對象一樣,把大容量數據導入到數據庫系統後,管理員要及時對現有的數據庫進行備份。因為及時有系統大容量導入工具的幫助,這個數據導入的工作仍然是非常繁瑣、耗時的。為此當大容量數據順利導入到數據庫系統之後,管理員要及時得對數據庫進行備份。這裡筆者要提醒大家的是,不同的操作日志模式下,其備份的方法往往是不同的。

  大容量數據導入後,管理員需要對數據庫進行備份。對此筆者的建議是,如果當時管理員采用的是簡單的日志恢復模式,則管理員在大容量導入操作完成後應該立即執行完整備份或差異備份(如果時間允許的話,最好還是完整備份)。而如果數據庫管理員當時采用的是大容量日志恢復模式或完整恢復模式,如果時間不是很多或者怕擔心完全備份會影響當時用戶的訪問,那麼只需執行日志備份就足夠了。如果數據庫服務器還沒有變成生產服務器(即還有沒有用戶在用),則還是對數據庫進行完全備份保險一點。

  三、 常見的錯誤。

  在大容量數據導入過程中,最常見的錯誤大概有兩個。

  一是提供文件的格式不對。如上面所說,通常情況下數據庫提供的大容量導入工具不支持文本文件。為此管理員需要進行事先的轉換。二是要注意隱藏字符可能帶來到問題。許多軟件和文本編輯器都會顯示隱藏字符。這些隱藏字符通常位於數據文件末尾。在大容量導入操作期間,數據文件中的隱藏字符可能會導致一些難以預測的問題,如意外空字符錯誤等等。這個錯誤很好避免。只要數據庫管理員在導入數據之前先查找並刪除所有隱藏字符即可。其實,不僅在大容量數據導入過程中,還是在少量數據導入過程中,都會遇到這個問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved