Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't create indices for the databases #69

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

mzanetti
Copy link
Member

@mzanetti mzanetti commented Oct 7, 2022

Indices are really helpful on databases that hold many thousands of rows and are searched frequently. On the other hand, indices are harmful on tables which are frequently written to because not only the actual entry needs to be updated but also the index.

So especially in the particular case of the attributes tables, the index is of more harm than use because we write updates all the time and never read it. Removing the index on the attributes table reduces the disk io footprint of the zigbee db by 30%.

As the other tables are mostly sitting still all the time, the index doesn't really do much harm either in terms of disk io, but it increases the database size, while not providing much benefit, as those entries are also only read once at startup and the tables are reasonably small (a few hundreds).

Indices are really helpful on databases that hold many thousands
of rows and are searched frequently. On the other hand, indices
are harmful on tables which are frequently written to because not
only the actual entry needs to be updated but also the index.

So expecially in the particular case of the attributes tables,
the index is of more harm than use because we write updates all
the time and never read it. Removing the index on the attributes
table reduces the disk io footprint of the zigbee db by 30%.

As the other tables are mostly sitting still all the time, the
index doesn't really do much harm either in terms of disk io,
but it increases the database size, while not providing much
benefit, as those entries are also only read once at startup
and the tables are reasonably small (a few hundreds).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants