線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4824
推到 Plurk!
推到 Facebook!

如何解決SQL 2000資料庫空間異常增加

答題得分者是:pcboy
11250308
一般會員


發表:2
回覆:3
積分:0
註冊:2004-01-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-11-29 09:15:36 IP:220.130.xxx.xxx 訂閱
本來我的資料庫只有5G左右 , 在短短半年中 , 資料庫已長大到 13G ,
我每天都有備份 , 觀察的結果是 , 這個資料庫大概每個月都長大1G左右 .

我想請問下列的這些動作會導致資料庫異常變大嗎 ? 會的話要如何解決呢?

1. 我有用DELPHI寫的外掛程式 , 純綷是查詢的動作
2. 有的外掛程式 , 會新增TMP TABLE , 來串查詢 , 但查詢結果出來後 , 隨即DROP掉此TMP TABLE .

3. 我查過突然持續異常變大的時間點 , 那時我有調整 "SQL資料庫維護計劃" , 我的是SQL SERVER2000的 , 這個動作會影響到資料庫空間嗎?


我查過資料庫的各個資料表的空間 , 發現很多資料表的已配置空間 ( 實際使用空間 未使用空間 索引大小空間 )很大,
實際使用空間不大 , 但「未使用空間卻比實際空間還要大 」

我有壓縮過資料庫 , 也用SQL語法壓縮過 , 壓縮後的資料庫容量僅小了一百多MB ,
請問有什麼方法可以釋放資料庫中的「未使用空間」?

這個問題煩惱我好久了, 我希望可以找出導致資料庫異常變大的原因所在 , 希望各位大大能提供意見給我 , 謝謝 ^^
編輯記錄
taishyang 重新編輯於 2007-11-29 09:50:58, 註解 將[急]字拿掉‧
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-11-29 10:01:06 IP:61.220.xxx.xxx 訂閱
「未使用空間卻比實際空間還要大 」這點有些奇怪
MS-SQL資料庫一般為了效能, 會有一部分未使用空間, 避免每新增一筆, 都要做一次空間配置的動作
每當資料庫中的未使用空間用盡, 會新增一次未使用空間, 好像是目前資料庫容量的10%(可以改)
資料庫的中資料刪除, 只是做個標記, 空間不會釋放, 好像也不算未使用空間
可以利用 "SQL資料庫維護計劃" 釋放已經刪除資料的空間 (好像也會重新調整目前未使用空間大小)
PS: 有陣子沒用MS-SQL了, 有問題歡迎指正

******************

1.請重新思考一下您的資料庫欄位定義
例如 
char(255), 就算您只儲存 "test" (只有 4 bytes), 資料庫中仍是占用 255 bytes 
varchar(255) , 只儲存 "test" 就只占用 4 bytes
但是  非固定大小欄位 的資料表, 存取速度會比 固定大小欄位 的資料表 慢
2.您的 13 GB 是指包含 log 嗎?
3.您是否建立的一大堆 index ? 
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
編輯記錄
pcboy 重新編輯於 2007-11-29 10:05:31, 註解 無‧
11250308
一般會員


發表:2
回覆:3
積分:0
註冊:2004-01-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-11-29 10:16:10 IP:220.130.xxx.xxx 訂閱
感謝pcboy給我的回覆 ^^

我現在的SQL資料庫維護計劃 的 「最佳化」設定是 下面畫面 , 這個是否是你說的 釋放已經刪除資料的空間 ?





資料庫13G是完整備份時 , ".BAK"檔的容量 , 請問這裡面會包含LOG檔的容量嗎?
這個資料庫的屬性如下 :



















麻煩你幫我看一下... 這樣的屬性哪裡有不妥 , 謝謝 !!
編輯記錄
11250308 重新編輯於 2007-11-29 10:26:15, 註解 無‧
11250308 重新編輯於 2007-11-29 10:36:13, 註解 無‧
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-11-29 10:19:55 IP:61.220.xxx.xxx 訂閱
沒看到圖片
圖片的路徑是 "file:///C:/Documents and Settings/daby.LEOTEK/桌面/最佳化.JPG"

------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
11250308
一般會員


發表:2
回覆:3
積分:0
註冊:2004-01-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-11-29 10:55:43 IP:220.130.xxx.xxx 訂閱

● 若我在DELPHI程式新增資料表 , DROP掉後 , 空間會釋放掉嗎 ?

● 我的資料庫中有100多個資料表 , 有幾個資料表空間很大 ,
其中有一個資料表的已配置空間約 3G (實際資料空間 470M , 保留的配置空間很大 ) , 非常之奇怪 ,

這個資料表在外掛程式中只有做查詢的動作 , 不會透過程式去Maintain它 ,

而它裡頭的資料是由 鼎新ERP系統 (此系統已用了快6年) 跑批次作業時Maintain上去的 . 不曉得為什麼莫名的大

● 資料庫13G是完整備份時 ".BAK"檔的容量 , 請問這裡面會包含LOG檔的容量嗎?

● ERP系統的資料表我都沒有動過Index , 只是所有資料表的 被保留的配置空間 都比實際資料空間比例上大很多




pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-11-29 11:23:59 IP:61.220.xxx.xxx 訂閱
● 若我在DELPHI程式新增資料表 , DROP掉後 , 空間會釋放掉嗎 ?
Ans: 可能要等到  "SQL資料庫維護計劃" 執行時候才會釋放
     (或許有某些 function 或命令或 stored procedure (不確定有) 可以插入程式中, 要求立刻釋放, 
     但是不建議這樣做, 因為這個跑起來可能很耗用時間, 尤其 DB 已經龐大到 13 GB)
● 我的資料庫中有100多個資料表 , 有幾個資料表空間很大 ,
   其中有一個資料表的已配置空間約 3G (實際資料空間 470M   , 保留的配置空間很大 ) , 非常之奇怪 , 
 
   這個資料表在外掛程式中只有做查詢的動作 , 不會透過程式去Maintain它 , 
   而它裡頭的資料是由 鼎新ERP系統 (此系統已用了快6年) 跑批次作業時Maintain上去的 . 不曉得為什麼莫名的大
Ans: 這要問鼎新了
● 資料庫13G是完整備份時 ".BAK"檔的容量 ,  請問這裡面會包含LOG檔的容量嗎?
Ans : Leader_Date 是資料, Leader_Log 是 Log, 所以不包含
● ERP系統的資料表我都沒有動過Index , 只是所有資料表的 被保留的配置空間 都比實際資料空間比例上大很多
Ans : 根據您的設定(預設值), 應該是未保留空間應該是每次成長 10% 而已
13 GB, 如果其中未使用空間用盡, 下次配置 1.3 GB 當未使用空間, DB 會變成 14.3 GB
如果一陣子後未使用空間用盡, 下次配置 1.43 GB 當未使用空間, DB 會變成 15.73 GB
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
11250308
一般會員


發表:2
回覆:3
積分:0
註冊:2004-01-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-11-29 11:37:11 IP:220.130.xxx.xxx 訂閱


謝謝你的回答 ^^

請問有無辦法可以針對某一個 TABLE 進行壓縮釋放空間 ?
我想我先針對我的外掛程式 , 看是不是哪裡有問題導致空間變大 . 謝謝你!!
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-11-29 11:44:25 IP:61.220.xxx.xxx 訂閱
> 請問有無辦法可以針對某一個 TABLE 進行壓縮釋放空間 ?
不知道, 建議等 "SQL資料庫維護計劃" 每天or每周半夜執行的時候釋放
免得影響白天運作效能
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-11-30 01:20:05 IP:61.67.xxx.xxx 未訂閱
提供你我的經驗
1.MS-SQL 分為 資料庫 MDF, LOG檔 LDF 兩支, 如果LDF很大, 你去維護MDF壓縮的結果有限
2.MDF依成長計劃比例運作, 但很可惜, M$ 並沒有處理的很好, 就是只能往上長, 不能廋身, 除非做一些維護計劃
3.建議刪除LDF檔, 缷載資料庫, 重新整理, 再啟動資料庫, 應該可以看到MDF的廋身效果
4.做任何動作前, 請務必備份所有資料, 我不保證這樣下來會不會有什麼突發狀況
你可以用 MDF, LDF 關鍵字找本站討論, 早些年這類討論不少
系統時間:2024-05-02 15:12:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!