mozilla

Compare Revisions

Performance

Change Revisions

Revision 60916:

Revision 60916 by BrettWilson on

Revision 60917:

Revision 60917 by BrettWilson on

Title:
Performance
Performance
Slug:
Storage/Performance
Storage/Performance
Tags:
Storage, "Toolkit API"
Storage, "Toolkit API"
Content:

Revision 60916
Revision 60917
tt80    <h2 name="Vacuuming_and_zero-fill">
81      Vacuuming and zero-fill
82    </h2>
83    <p>
84      Sqlite has a VACUUM command to compress unused space from t
 >he database. Sqlite works like a memory manager or a file system.
 > When data is deleted, the associated bytes are marked as free bu
 >t are not removed from the file. This means that the file will no
 >t shrink, and some data may still be visible in the file. The way
 > to work around this is to run the VACUUM command to remove this 
 >space.
85    </p>
86    <p>
87      Vacuuming is very slow. The vacuum command is essentially t
 >he same as the command line <code>sqlite3 olddb .dump | sqlite3 n
 >ewdb; mv newdb olddb</code>. On some networked drives, vacuuming 
 >a 10MB database has been timed at over one minute. Therefore, you
 > should avoid vacuuming whenever possible.
88    </p>
89    <p>
90      Some items in databases are privacy sensetive such as delet
 >ed history items. Users have the expectation that deleting items 
 >in their history will remove the traces of that from the databasb
 >e. As a result, Mozilla enables the <code>SQLITE_SECURE_DELETE</c
 >ode> preprocessor flag. This flag causes deleted items to be fill
 >ed with 0s on disk. This eliminates the need to vacuum except to 
 >reclaim disk space, and makes many operations much faster.
91    </p>
92    <p>
93      Zero-filling can have significant performance overhead in s
 >ome situations. For example, the history service used to delete m
 >any database items at shutdown when expiring old history items. T
 >his operation is not necessarily slow, but writing 0s to disk in 
 >an "ACI" database is still slow. This made shutdown very slow bec
 >ause the AsyncIO thread would block shutdown ({{template.Bug(3285
 >98)}}). Shutdown times of more than 30 seconds were seen. As a re
 >sult, this bug introduced incremental history expiration eliminat
 >ing the need to write many 0s to disk on shutdown.
94    </p>
95    <p>
96      Unfortunately, this operation can not be controlled on a pe
 >r-transaction or per-connection basis. Some operations will benef
 >it, while others will be hurt.
97    </p>

Back to History