mozilla

Compare Revisions

Performance

Change Revisions

Revision 60927:

Revision 60927 by Sheppy on

Revision 60928:

Revision 60928 by Sheppy on

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

Revision 60927
Revision 60928
n29      Sqlite has a cache of database pages in memory. It keeps onn29      Sqlite has a cache of database pages in memory. It keeps pa
>es associated with the current transaction so it can roll them ba>ges associated with the current transaction so it can roll them b
>ck, and it also keeps recently used ones so it can run faster.>ack, and it also keeps recently used ones so it can run faster.
n41      If your application uses many small transactons, you can gen41      If your application uses many small transactons, you can ge
>t a significant performance improvement by keeping the cache live>t a significant performance improvement by keeping the cache live
> between transactions. This is done with another (dummy) connecti> between transactions. This is done by using an extra "dummy" con
>on to the same database with a special flag set to cause the cach>nection to the same database with a special flag set to cause the
>es to be shared between the two connections. The dummy connection> caches to be shared between the two connections. The dummy conne
> keeps a perpetually open transaction which locks the cache in me>ction keeps a perpetually open transaction which locks the cache 
>mory. Since the cache is shared with the main connection, the cac>in memory. Since the cache is shared with the main connection, th
>he never expires.>e cache never expires.
n44      The dummy transaction must be one that locks a page in memon44      The dummy transaction must be one that locks a page in memo
>ry. A simple <code>BEGIN TRANSACTION</code> statement doesn't do >ry. A simple <code>BEGIN TRANSACTION</code> statement doesn't do 
>this because sqlite does the locking lazily. Therefore, you must >this because sqlite does the locking lazily. Therefore, you must 
>have a statement that modifies data. It might be tempting to run >have a statement that modifies data. It might be tempting to run 
>a statement on the <code>sqlite_master</code> which contains the >a statement on the <code>sqlite_master</code> which contains the 
>information on the tables and indices in the database. However, i>information on the tables and indices in the database. However, i
>f your application is initializing the database the first time, t>f your application is initializing the database for the first tim
>his table will be empty and the cache won't be locked. nsNavHisto>e, this table will be empty and the cache won't be locked. nsNavH
>ry::StartDummyStatement creates a dummy table with a single eleme>istory::StartDummyStatement creates a dummy table with a single e
>nt in it for this purpose.>lement in it for this purpose.
n47      It is important to note that when a statement is open, the n47      It is important to note that when a statement is open, the 
>database schema can not be modified. This means that when the dum>database schema cannot be modified. This means that when the dumm
>my transaction is running, you can not create or modify any table>y transaction is running, you cannot create or modify any tables 
>s or indices, or vacuum the database. You will have to stop the d>or indices, or vacuum the database. You will have to stop the dum
>ummy transaction, do the schema-modifying operation, and re-start>my transaction, do the schema-modifying operation, and restart it
> it.>.
t56      Mozilla has added the Preload() function to mozStorageConnet56      Mozilla has added the <code>Preload()</code> function to <c
>ction to load data into the cache in bulk. Because the data is lo>ode>mozStorageConnection</code> to load data into the cache in bu
>aded from disk in one chunk, there are no disk seeks and performa>lk. Because the data is loaded from disk in one chunk, there are 
>nce can be improved, even if much more data is loaded into memory>no disk seeks and performance can be improved, even if much more 
> at once.>data is loaded into memory at once.

Back to History