Saturday, January 12, 2008 - 文章

連一拉一

收到一只DHL快遞包裹。

咦... 是誰送禮物給我?

打開箱子,裡面是一只盒子,取出盒子時看到一位宅男對我傻笑型男對我微笑...

取出盒子,封面上斗大的MVP字樣,揉揉眼睛,莫非?

西滴! 微軟感念不服老的中年人過去一年拼了老命在Blog上講得口沬橫飛、寫了超過200篇自以為很珍貴的技術文章、還很雞婆地回答網友的問題... 念在沒有功勞也有苦勞,沒有苦勞也很疲勞(很不少Post是在凌晨或清晨時分瞇著眼寫完的,可謂字字血淚...orz 無論如何,疲勞是真的。),微軟佛心大發,特別讓中年人連任MVP一年,這是特地奉上的MVP寶盒。

今年有一枚金屬浮雕胸章...(不知與大和拜金女裡的馬主別針有沒有得拼?)

接著來看最讓人期待的Geek禮品! 去年MVP寶盒中有皮質名片夾,1G行動碟跟簡報雷射筆的紀念禮,今年的禮物藏在中間的方盒中...

是藍牙裝備組! 有藍牙USB Dongle(說明書中叫它USB加密狗)、可以插進PCMCIA插槽的藍牙滑鼠(那麼扁,會好用嗎?)、藍牙耳機以及藍牙音源發射器(附一個耳機接頭,可將音源送到耳機裡),看起來很不錯哩。

兒子說: "有個一天到晚打電腦,抽不出時間陪我玩的把拔,搶走他MVP禮品的第一手試用權作只是剛好而已。這是一定要的啦!"

(1/1接到微軟通知,勤奮無畏的中年人連任MVP成功! 不過基於有圖有真相的原則,還是乖乖等拿到MVP寶盒才公告這個消息。沒錢敗家,所以沒寫過開箱炫耀文,難得有機會拿到別人買不到的東西,就用這個寫寫開箱文過乾癮吧!)

BULK INSERT Performance

一直以為BULK INSERT就不會記Log,結果今天跌了一跤...

我下的語法如下(錯誤示範,小朋友不要學)

TRUNCATE TABLE RESD

BULK INSERT RESDE
FROM 'C:\DataProc\Output\RESD.txt'
WITH
(
    FIELDTERMINATOR = '\t',
    ROWTERMINATOR = '\n'
)

RESD.txt約1.4G,結果BULK INSERT花了30分鐘還沒做完,Log檔就長到20G,把HD空間給吃光。急忙Cancel,但依DB的運作,此時SQL會將剛才未做完的INSERT Rollback回去,20G的Log! 等了40分鐘還等不到Cancel完成。

請教了DBA,DBA認為剛才有HD空間不足的變數,SQL Server 2005可能已經不正常,建議我重新啟動SQL試試。重新啟動SQL後,順道見識了SQL 2005的新功能,SQL還是會將剛才沒做完的Rollback繼續做完,此時正在Rollback的DB會顯示(in recovery)而暫時不能用,但其他的DB則Ready了,花了約兩分鐘,in recovery的DB也回到可用狀態。(SQL 2000需要等Rollback做完,整台Server才能用)

在苦等DB Rollback的過程裡,我Google了一下,發現幾件事:

  1. Nonlogged BULK INSERT只有在一些條件下才成立(我一直以為BULK INSERT==No Log):
    - DB選項必須開啟SELECT INTO/BULK INSERT
    - 不可設Index;如果有,開始BULK INSERT時,TABLE必須是空的
    - 需加上TABLOCK提示
    - 資料表沒有設定複寫(Replication)
    http://www.mssqlcity.com/Tips/bulk_copy_optimization.htm
  2. 由於誤認BULK INSERT不會有Log Issue、加上將DB設成Simple Recovery Mode(Truncate Log At Checkpoint),我沒意會到讓2.5億筆資料變成一個Transaction是多可怕的事。因此才會爆出可怕的Log量,其實我只要透過BATCHSIZE=1000,讓BULK INSERT過程中每1000筆Commit一次,Log量就會小很多了。不過資料匯入後,不過2G,Index也只有一組,我還是無法理解為什麼可以產生10倍大小的Log?

綜合以上,BULK INSERT SQL可以改成:

BULK INSERT RESDE
FROM 'C:\DataProc\Output\RESD.txt'
WITH
(
    BATCHSIZE = 1000,
    FIELDTERMINATOR = '\t',
    ROWTERMINATOR = '\n',
    TABLOCK
)

搜尋

Go

<January 2008>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789
 
RSS
【工商服務】
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication