On Thu, Aug 20, 2009 at 8:33 AM, pierr<pierr.c...@gmail.com> wrote: > > Hi, > We have a database with a very simple schema: > CREATE TABLE IF NOT EXISTS tblIndex( > frame_type INT, > pts VARCHAR(5), > ts_start INT primary key, > ts_end INT) > > And the application scenario is : > 1. Every second usr will insert 2 ~ 50 records ,and the ts_start fields of > those records is always increasing. After 8 hours ,there are at most > 1_800_000 records. By setting the sync mode to off, the performance seems OK > so far.And because the data of each record has only 16 bytes, we may use > some buffer even if the insert speed is not too fast. > > 2. After 8 hours , usr will told me to delete the oldest data by telling the > upper bound ts_start , so I will do DELETE FROM tblIndex WHERE ts_start < > upper_bound_ts_start. Delete 90_000 (which is the records for half a hour) > out of the 1_800_000 now take 17 seconds. A litter bit longer than expected. > Any way to reduce this ?
With a simple schema as below (no indexes other than the stock INTEGER PRIMARY KEY on ts_start CREATE TABLE tblIndex ( ts_start INTEGER PRIMARY KEY, frame_type INTEGER, pts VARCHAR(5), ts_end INTEGER ) and using Perl DBD::SQLite on my Macbook, I get the following times 65 seconds to insert 1,800,000 records with a commit every 100,000 1 second to delete the first 90,000 records > We don't care if the records is synced to the hard > disk immediately. We are thinking start a seperated thread to do the delete > so to make this call to be async. The things I am not sure is whether the > (long time )delete will impact the insert performance if they share the same > connection? Or should I use a seperated connection for insert and delete? > But In this way, do they need be synced in application level? > > 3. Search. SELECT ts_start FROM tblIndex WHERE ts_start BETWEEN ? AND ? " - > As ts_start is the primary key so the performance is OK for our need now. I > am thinking i should use a seperated connection for search , right? > > Configuration of sqlite : > hard disk database (usb interface) > cache size is 2000 > page size is 1024 > sync mode is 0 (off) > journal_mode mode is truncate > > > Thanks for any suggestion to improve the delete performance or about the > overall design. > -- > View this message in context: > http://www.nabble.com/suggestion-on-the-database-design-tp25062134p25062134.html > Sent from the SQLite mailing list archive at Nabble.com. > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > -- Puneet Kishor http://www.punkish.org Carbon Model http://carbonmodel.org Charter Member, Open Source Geospatial Foundation http://www.osgeo.org Science Commons Fellow, http://sciencecommons.org/about/whoweare/kishor Nelson Institute, UW-Madison http://www.nelson.wisc.edu ----------------------------------------------------------------------- Assertions are politics; backing up assertions with evidence is science ======================================================================= _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users