[issue3783] dbm.sqlite proof of concept
Runar Tenfjord
report at bugs.python.org
Thu Nov 19 17:56:51 CET 2009
Runar Tenfjord <runar.tenfjord at gmail.com> added the comment:
By utilizing triggers on inserts and deletes it is possible to
keep track of the size and speed up __len__ by 10 x.
SQL:
CREATE TABLE IF NOT EXISTS info
(key TEXT UNIQUE NOT NULL,
value INTEGER NOT NULL);
INSERT OR IGNORE INTO info (key,value) VALUES ('size',0);
CREATE TABLE IF NOT EXISTS shelf
(key TEXT UNIQUE NOT NULL,
value TEXT NOT NULL);
CREATE TRIGGER IF NOT EXISTS insert_shelf
AFTER INSERT ON shelf
BEGIN
UPDATE info SET value = value + 1 WHERE key = 'size';
END;
CREATE TRIGGER IF NOT EXISTS delete_shelf
AFTER DELETE ON shelf
BEGIN
UPDATE info SET value = value - 1 WHERE key = 'size';
END;
On my laptop this increase the speed of 'len' about 10x
I have a slightly modified version of dbsqlite.py for
running on python 2.5 utilizing the triggers for
keep track of the size:
http://dpaste.com/hold/122439/
----------
nosy: +rute
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue3783>
_______________________________________
More information about the Python-bugs-list
mailing list