2011-05-05 11 views

Respuesta

70

Puede usar sqlite3_analyzer desde http://www.sqlite.org/download.html.

Es una herramienta realmente genial. Le muestra el número de páginas utilizadas por cada tabla con y sin índices (cada página, por defecto, tiene 1024 bytes).

Esta es una salida sqlite3_analyzer muestra para la base de datos Neptuno:

*** Page counts for all tables with their indices ******************** 

EMPLOYEES............................. 200   34.4% 
ORDERS................................ 152   26.2% 
CATEGORIES............................ 90   15.5% 
ORDER DETAILS......................... 81   13.9% 
CUSTOMERS............................. 17   2.9% 
SQLITE_MASTER......................... 11   1.9% 
PRODUCTS.............................. 7   1.2% 
SUPPLIERS............................. 7   1.2% 
TERRITORIES........................... 6   1.0% 
CUSTOMERCUSTOMERDEMO.................. 2   0.34% 
CUSTOMERDEMOGRAPHICS.................. 2   0.34% 
EMPLOYEETERRITORIES................... 2   0.34% 
REGION................................ 2   0.34% 
SHIPPERS.............................. 2   0.34% 

También genera las sentencias SQL que se pueden utilizar para crear una base de datos con estadísticas de uso, que luego se puede analizar.

+0

Muchas Gracias! Justo lo que estaba buscando ... – MrMage

+1

Cuidado, sqlite3_analyze tarda mucho tiempo en ejecutarse. – alecco

+0

¡Jaja! ¡Así que esto es lo que hace 'sqlite3_analyzer'! –

3

Soy consciente de que esta respuesta viola totalmente el espíritu de la pregunta, pero le consigue el tamaño sin copiar el archivo ...

$ ls -lh db.sqlite 
-rw-r--r-- 1 dude bros 44M Jan 11 18:44 db.sqlite 
$ sqlite3 db.sqlite 
sqlite> drop table my_table; 
sqlite> vacuum; 
sqlite> ^D 
$ ls -lh db.sqlite 
-rw-r--r-- 1 dude bros 23M Jan 11 18:44 db.sqlite 
+0

¡Eso es furtivo! Sugiero que agregue un comentario sobre el código que explica lo que hace el fragmento, me tomó un momento. – Moot