2012-08-22 96 views
1

在處理不同的Access版本時(2002,2003 & 2007),我注意到filename.accdb的給定訪問文件的文件大小遠遠大於具有* .mdb文件的相同文件大小類型。Microsoft Access文件大小

我通過保存爲Access 2000-2003 batabase的方式將文件從2007(.acccdb)轉換爲2003( .mdb)。

有人會解釋爲什麼嗎?

另一個問題,爲強大的數據庫的目的和存儲的數據的安全性,什麼是首選選項* .mdb或* .accdb文件類型知道任何文件類型由於數據日復一日增大每天存儲。

在此先感謝

mhegazy

+0

訪問不是一個高容量系統關鍵數據庫的最佳選擇。轉換後是否緊湊和修復? – Fionnuala

回答

5

其實,你嘗試從MDB轉換該應用程序到ACCDB格式?文件的大小不應以意義的方式改變。 (所以,請嘗試這樣的轉換)。

事實上,據我所知,存儲大小沒有任何不同。實際上,轉換與緊湊+修復非常相似。由於未編譯代碼,整個生成的文件可能會稍微小一些。 (在此過程中編譯的二進制代碼部分被刪除)。

因此,作爲一般規則,從Access 2000開始,使用mdb文件或accDB文件時的文件大小在大小上應該不同。

當然,從access 97文件轉換是另一回事。 2000年以前的格式不支持國際字符集。 2000年以前並沒有將文本數據存儲爲uni-code(但是使用ASCII)。

因此理論上,從舊的97格式升級到2000甚至更高版本實際上可能會增加兩倍因子的存儲需求。這意味着保存在數據庫中的每個文本字符都需要兩個字符(這就是uni-code的工作原理)。

爲了彌補數據存儲需求的大幅增加以及2 gig文件沒有相應增加,在Access 2000及更高版本中引入了數據壓縮技術。這種壓縮不會與緊湊+修復相混淆。

您可以在列的基礎上啓用/禁用壓縮。如這裏:

enter image description here

所以不管這個問題,你不應該看到2003格式的文件相比,ACCDB文件大小格式之間的任何差異文件的大小。存儲要求相同,唯一的原因是您看到差異的原因是由於緊湊+修復和移除轉換過程中出現的額外「JUNK」。 (實際上,通過執行C + R和解編譯,然後再另一個C + R,您可以獲得相同的文件大小而無需轉換)。

因此,例如,嘗試將減小大小的mdb轉換爲accDB - 您注意到該文件沒有增加 - 事實上,如您所述,在從該mdb轉換爲accDB期間,您將經常看到大小減小。所以這又是由於轉換過程中的垃圾清除造成的 - 而不是使用mdb文件反對accDB文件,而不是因爲使用mdb和accDB。

如上所述,上述規則的唯一例外是2000以前的格式mdb。他們沒有uni-code,因此文本數據理論上應該使用NEW格式的DOUBLE存儲。但是,通過爲這些文本列引入壓縮技術,實際上您的商店需求不會增加 - 實際上在某些情況下可能會比2000年以前少一些,而且沒有壓縮列。原因是文本數據往往會壓縮(壓縮)的確非常好。

至於要使用什麼文件格式?我會使用給定版本的默認文件格式。所以,就你而言,我建議最好使用accDB。

良友Kallal(訪問MVP)

埃德蒙頓,加拿大阿爾伯塔省

+0

非常感謝你的回答 – mhegazy