国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

在SQL Server中謹慎導(dǎo)入導(dǎo)出大容量數(shù)據(jù)

2024-08-31 00:53:24
字體:
供稿:網(wǎng)友
本文將介紹在數(shù)據(jù)庫初始化過程中,管理員需要經(jīng)常面對的一個現(xiàn)實問題——如何把大容量的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫系統(tǒng)中。   在數(shù)據(jù)庫初始化過程中,管理員需要面對的一個現(xiàn)實問題就是如何把大容量的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫系統(tǒng)中。在SQL Server數(shù)據(jù)庫中提供了一些大容量數(shù)據(jù)導(dǎo)入導(dǎo)出的工具供數(shù)據(jù)庫管理員實用。如管理員可以通過bcp實用工具,實現(xiàn)大容量導(dǎo)出數(shù)據(jù)和大容量導(dǎo)入數(shù)據(jù)并生成格式化文件。如可以利用bulk insert語句將大容量數(shù)據(jù)直接從數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)庫表或者未分區(qū)的視圖中去等等。

  雖然在SQL Server數(shù)據(jù)庫中提供了這些實用工具。不過管理員在實際工作中,仍然需要謹慎對待這項工作。具體的來說,在大容量數(shù)據(jù)導(dǎo)入導(dǎo)出的過程中,需要注意如下幾方面的內(nèi)容。

  一、 盡量采用系統(tǒng)提供的工具來倒入導(dǎo)出大容量的數(shù)據(jù)

  以上筆者提到的幾款實用工具,他們有一個共同的特點,即在導(dǎo)入的過程中會對大容量的數(shù)據(jù)進行一定的優(yōu)化。如會規(guī)范一些數(shù)據(jù)的格式、節(jié)省導(dǎo)入導(dǎo)出的時間等等。但是利用這些工具的話,跟其他普通的數(shù)據(jù)導(dǎo)入導(dǎo)出工具有一個差異,就是大容量導(dǎo)入操作不支持逗號分隔符文件中導(dǎo)入數(shù)據(jù),也就是常說的文本文件。雖然此時管理員也可以通過其他的工具來導(dǎo)入文件文件格式的大容量數(shù)據(jù),但是通常情況下筆者不建議這么做。因為其他的工具不支持導(dǎo)入過程中的優(yōu)化功能。為此筆者建議先用其他工具,如access等中間工具先把文本文件中的數(shù)據(jù)轉(zhuǎn)化為普通的表格形式,然后再利用上面這些工具導(dǎo)入到系統(tǒng)中。這雖然會增加一定的工作量,但是卻可以保證大容量數(shù)據(jù)的質(zhì)量。為此,筆者在實際工作中,如果用戶遇到這種問題筆者是強烈建議他們要采用系統(tǒng)提供的工具來導(dǎo)入導(dǎo)出大容量數(shù)據(jù)。

  另外,利用格式化文件來提高大容量數(shù)據(jù)的規(guī)范化,也是一個不錯的選擇。上面提到的幾款大容量導(dǎo)入導(dǎo)出工具都支持使用專門的格式化文件來存儲原始數(shù)據(jù)文件中每個字段的格式信息。格式化文件還可以包含相應(yīng)的數(shù)據(jù)庫表的有關(guān)信息。格式化文件可以用于提供從數(shù)據(jù)庫實例大容量導(dǎo)出數(shù)據(jù)和向其中大容量導(dǎo)入數(shù)據(jù)時所需的所有格式信息。通俗的講,格式化文件提供了一種解釋導(dǎo)入期間數(shù)據(jù)文件中數(shù)據(jù)的格式以及設(shè)置導(dǎo)出期間數(shù)據(jù)文件中數(shù)據(jù)格式的靈活方式。這種靈活性使得解釋數(shù)據(jù)時無需編寫專用代碼,也無需為滿足數(shù)據(jù)庫或外部應(yīng)用程序的特殊需要而重新設(shè)置數(shù)據(jù)的格式。如果靈活利用格式化文件,那么用戶可以直接按需要的格式導(dǎo)出或者導(dǎo)入大容量數(shù)據(jù),而不用事后再進行額外的格式調(diào)整。

  二、 選擇合適的數(shù)據(jù)庫日志操作模式

  正如大家所知道的,用戶在數(shù)據(jù)庫中做的任何變化,都會記錄在相關(guān)的日志中。導(dǎo)入導(dǎo)出大容量數(shù)據(jù)也不例外。可是由于大容量數(shù)據(jù)比較大,會占用比較大的事務(wù)日志功能。為此筆者建議,在用戶導(dǎo)入大容量數(shù)據(jù)之前,最好選擇合適的數(shù)據(jù)庫日志操作模式。筆者的做法是,如果用戶需要導(dǎo)入大容量數(shù)據(jù),那么最好選擇大容量日志恢復(fù)模式。等到導(dǎo)入工作完成之后,再恢復(fù)到原先的模式。

  這主要是因為在大容量日志模式下,對于大容量數(shù)據(jù)導(dǎo)入工作中說,支持力度相對來說比較好。與其他日志恢復(fù)模式相比(如完全恢復(fù)模式),大容量日志恢復(fù)模式只對大容量操作進行最小記錄。為此大容量日志操作恢復(fù)模式保護大容量操作不受硬件故障的危害,提供比較好的性能并且占用日志的空間也是最小的。所以,使用大容量日志恢復(fù)有助于防止事務(wù)日志出現(xiàn)空間不足的情況,因為大容量日志恢復(fù)不會插入日志行。這個大容量日志操作模式,非常適用于使用完整恢復(fù)模式的數(shù)據(jù)庫。對無索引表執(zhí)行大容量操作時,大容量日志恢復(fù)模式非常有用。

  不過大容量日志操作模式也具有一定的風(fēng)險。如大容量日志恢復(fù)模式會增加這些大容量復(fù)制操作丟失數(shù)據(jù)的風(fēng)險。因為大容量日志操作模式將會阻止數(shù)據(jù)庫系統(tǒng)捕獲對每個事務(wù)逐一所做的更改。如果日志備份包含大容量日志操作,則無法還原到該日志備份中的時點,而只能還原整個日志備份。另外在大容量日志恢復(fù)模式下,如果日志備份覆蓋了任何大容量操作,則日志備份將包含由大容量操作所更改的日志記錄和數(shù)據(jù)頁。這對于捕獲大容量日志操作的結(jié)果至關(guān)重要。合并的數(shù)據(jù)區(qū)可使日志備份變得非常龐大。再者,備份日志需要訪問包含大容量日志事務(wù)的數(shù)據(jù)文件。如果無法訪問任何受影響的數(shù)據(jù)庫文件,則事務(wù)日志將無法備份,并且在此日志中提交的所有操作都會丟失。所以大容量日志備份模式并不是安全的日志模式。

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

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

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

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

  四、 數(shù)據(jù)導(dǎo)入后即時進行數(shù)據(jù)庫備份

  同建立數(shù)據(jù)庫對象一樣,把大容量數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫系統(tǒng)后,管理員要及時對現(xiàn)有的數(shù)據(jù)庫進行備份。因為及時有系統(tǒng)大容量導(dǎo)入工具的幫助,這個數(shù)據(jù)導(dǎo)入的工作仍然是非常繁瑣、耗時的。為此當(dāng)大容量數(shù)據(jù)順利導(dǎo)入到數(shù)據(jù)庫系統(tǒng)之后,管理員要及時得對數(shù)據(jù)庫進行備份。這里筆者要提醒大家的是,不同的操作日志模式下,其備份的方法往往是不同的。

  大容量數(shù)據(jù)導(dǎo)入后,管理員需要對數(shù)據(jù)庫進行備份。對此筆者的建議是,如果當(dāng)時管理員采用的是簡單的日志恢復(fù)模式,則管理員在大容量導(dǎo)入操作完成后應(yīng)該立即執(zhí)行完整備份或差異備份(如果時間允許的話,最好還是完整備份)。而如果數(shù)據(jù)庫管理員當(dāng)時采用的是大容量日志恢復(fù)模式或完整恢復(fù)模式,如果時間不是很多或者怕?lián)耐耆珎浞輹绊懏?dāng)時用戶的訪問,那么只需執(zhí)行日志備份就足夠了。如果數(shù)據(jù)庫服務(wù)器還沒有變成生產(chǎn)服務(wù)器(即還有沒有用戶在用),則還是對數(shù)據(jù)庫進行完全備份保險一點。

  五、 常見的錯誤

  在大容量數(shù)據(jù)導(dǎo)入過程中,最常見的錯誤大概有兩個。

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 娱乐| 丰都县| 云梦县| 杭锦旗| 南召县| 昭苏县| 贵阳市| 连云港市| 灵石县| 双峰县| 灵寿县| 扎赉特旗| 灌南县| 会东县| 安多县| 南木林县| 天台县| 昌平区| 疏勒县| 睢宁县| 富川| 留坝县| 巴林左旗| 府谷县| 绥中县| 广南县| 浙江省| 漯河市| 宣化县| 紫金县| 聂拉木县| 祁东县| 称多县| 曲阳县| 东光县| 阜阳市| 彝良县| 慈溪市| 汕尾市| 华亭县| 德清县|