2013-05-09 102 views
0

我是數據庫的新手,我很喜歡從關係數據庫(如Derby數據庫)獲取數據的容易程度。我不喜歡的是一個數據佔多少;我創建了一個包含兩個表的數據庫,向這些表中總共寫入了130條記錄(每個表都有6列),整個關係數據庫作爲一個總共大約1914014字節的文件夾保存在系統目錄中! (假設我的算術權是......)發生如此巨大的記憶請求會發生什麼? //我還注意到log文件夾中有一個log1.dat文件,它佔用了1MB的數據。我通過Notepad ++查看了這個文件,發現它主要是NULL個字符。那是什麼?爲什麼Derby數據庫佔用這麼多空間?

回答

1

當在2011年最後一次檢查,一個空的Derby數據庫大約需要770的K磁盤空間:http://apache-database.10148.n7.nabble.com/Database-size-larger-than-expected-td104630.html

的log1.dat文件是事務日誌和記錄數據庫變化,使數據庫可以,如果有一個崩潰恢復(或者,如果你的程序調用ROLLBACK)

注意LOG1。 .dat是磁盤空間,而不是內存

如果您想了解德比交易日誌的基本知識,請從這裏開始:http://db.apache.org/derby/papers/recovery.html

4

德比需要跟蹤您的數據庫數據,重做日誌和事務,以便您的數據庫處於一致狀態,甚至可以從電腦崩潰中恢復。 他還創建了大多數具有固定大小(比如1MB)的文件,以確保他以後不需要增加文件大小(性能問題並且不會將他的文件碎片太多)。

在運行時或停止時,Derby將清理一些這些文件或重新組合它們並釋放空間。

因此,整體而言,空間和文件是您使用數據庫的權衡。

也許你可以通過一些德比CONFIGS改變一些這種行爲(我沒有找到合適的文檔:(任意一個)。

相關問題