2011-05-06 107 views
2

在SQLite中,數據庫文件的大小是數據庫的整體大小,但這不一定是實際使用空間的正確指示。如果數據被刪除,釋放的空間不會返回到操作系統。必須執行VACUUM命令對數據庫進行碎片整理並將未使用的空間釋放回操作系統。如何確定SQLite數據庫的數據庫使用情況?

我正在使用SQLite的Devart ADO.Net data provider

有沒有辦法獲得SQLite數據庫的實際使用空間?

回答

3

我發現了一個編譯freelist_count,其中根據SQLite documentation提供的未使用數量數據庫文件中的頁面。這與數據庫文件中的全部可用空間不完全相同,因爲仍可能有許多頁面被部分填充。

儘管如此,下面仍然爲我們提供了準確的可用頁數,並且足以滿足我對粗略估計數據庫文件中已用空間和空閒空間的需求。

PRAGMA freelist_count; 
PRAGMA page_size; 
0

乘上PAGE_COUNT和PAGE_SIZE編譯指示返回的值可能會給你的數據庫的大小的一個很好的估計:

PRAGMA page_count; 
PRAGMA page_size; 
+0

我試過了,但是這仍然給了我與文件本身相同的大小。根據文檔說明page_count:「返回數據庫文件中的頁面總數」。請參閱:http://www.sqlite.org/pragma.html#pragma_page_count – Elan 2011-05-07 04:08:58