Как я могу определить использование базы данных базы данных SQLite? - PullRequest
2 голосов
/ 06 мая 2011

В SQLite размер файла базы данных - это общий размер базы данных, но это не обязательно является правильным указанием фактического используемого пространства. Если данные удалены, освободившееся пространство не возвращается операционной системе. Необходимо выполнить команду VACUUM, чтобы выполнить дефрагментацию базы данных и освободить неиспользуемое пространство обратно в операционную систему.

Я использую поставщика данных Devart ADO.Net для SQLite.

Есть ли способ получить фактически используемое пространство базы данных SQLite?

Ответы [ 2 ]

3 голосов
/ 07 мая 2011

Я нашел прагму freelist_count, которая согласно документации SQLite содержит количество неиспользуемых страниц в файле базы данных. Это не является точным в отношении общего свободного пространства в файле базы данных, поскольку все еще может быть много страниц, которые частично заполнены.

Тем не менее, приведенные ниже данные дают нам точное количество свободных страниц и позволяют мне получить приблизительную оценку использованного и свободного места в файле базы данных.

PRAGMA freelist_count;
PRAGMA page_size;
0 голосов
/ 07 мая 2011

Умножение значений, возвращаемых прагмами page_count и page_size, может дать вам хорошую оценку размера БД:

PRAGMA page_count;
PRAGMA page_size; 
...