>-----Original Message-----
>From: Keith Medcalf [mailto:kmedc...@dessus.com]
>Sent: Monday, 15 July, 2019 19:13
>To: 'SQLite mailing list'
>Subject: RE: [sqlite] [EXTERNAL] Re: how to delete BLOB object from
>the data base
>
>
>Use one connection.  Use one thread.  As follows:
>
>sqlite *db;
>sqlite_stmt *beginstatement;
>sqlite_stmt *commitstatement;
>sqlite_stmt *insertstatement;
>sqlite_stmt *deletestatement;
>int i = 0;
>
>sqlite_open_v2('database.db', &db, ...);
>sqlite_prepare_v2(db, "begin immediate", &beginstatement, ...);
>sqlite_prepare_v2(db, "insert into blah (_rowid_, data) values (?,
>?);", &insertstatement, ...);
>sqlite_prepare_v2(db, "delete from blah where _rowid_ < ?;",
>&deletestatement ... );
>sqlite_prepare_v2(db, "commit;", &commitstatement, ...);
>while 1:
>  char *data = WaitForDataToArrive()
>  if (!data) break;
>  int64 ts = GetTheTimeInMSsinceTheUnixEpochAsInt64()
>  if (!i) {
>     sqlite_step(beginstatement);
>     sqlite_reset(beginstatement);
>  }
>  sqlite_bind_int64(deletestatement, 0, ts -
>(numberofmillisecondsofdatatoretainindatabase));
>  sqlite_step(deletestatement);
>  sqlite_reset(deletestatement);
>  sqlite_bind_int64(insertstatement, 0, ts);
>  sqlite_bind_blob(insertstatement, 1, data);
>  sqlite_step(insertstatement);
>  sqlite_reset(insertstatement);
>  i++;
>  if (i>NumberOfRecordsInEachBatch) {
>     sqlite_step(commitstatement);
>     sqlite_reset(commitstatement);
      i = 0;  /* Add this cuz you are going to start another batch */
>  }
>}
>if (i) {
>  sqlite_step(commitstatement);
>  sqlite_reset(commitstatement);
>}
>sqlite_finalize(beginstatement);
>sqlite_finalize(commitstatement);
>sqlite_finalize(insertstatement);
>sqlite_finalize(deletestatement);
>sqlite_close_v2(db);
>
>Use a separate connection for the data reading on its own
>thread/process.  Make sure the database is in WAL mode.  Don't bother
>with auto vacuum (not needed).  Space freed will be re-used
>automatically.  Assuming that the data rate is constant you will
>eventually end up with a stable database size.  Reading will not
>interfere with writing.  Make sure you do your reads in a deferred
>transaction if they require a REPEATABLE READ across multiple
>statements.  Be aware that your rowid (the timestamp) will overflow
>in a couple of hundred million years, so you will have to devise a
>different timestamp calculation method before then.  You are probably
>fine with a NumberOfRecordsInEachBatch being 1, but you might want to
>set it larger, particularly if your persistent storage is old and
>slow.
>
>--
>The fact that there's a Highway to Hell but only a Stairway to Heaven
>says a lot about anticipated traffic volume.
>
>>-----Original Message-----
>>From: sqlite-users [mailto:sqlite-users-
>>boun...@mailinglists.sqlite.org] On Behalf Of Zhu, Liang
>>[AUTOSOL/ASSY/US]
>>Sent: Monday, 15 July, 2019 15:11
>>To: SQLite mailing list
>>Subject: Re: [sqlite] [EXTERNAL] Re: how to delete BLOB object from
>>the data base
>>
>>We do the increment of 1000,  when the record reaches number which
>>dividable by 1000, we delete the record.
>>
>>-----Original Message-----
>>From: sqlite-users <sqlite-users-boun...@mailinglists.sqlite.org> On
>>Behalf Of Robert Hairgrove
>>Sent: Monday, July 15, 2019 4:00 PM
>>To: sqlite-users@mailinglists.sqlite.org
>>Subject: [EXTERNAL] Re: [sqlite] how to delete BLOB object from the
>>data base
>>
>>On 15.07.19 21:38, Zhu, Liang [AUTOSOL/ASSY/US] wrote:
>>> ... I am inserting to the BLOB data into the table at every 250ms,
>>I
>>> delete the oldest row at every 600ms, also I am reading the data
>>from
>>> the database at every 10ms...
>>
>>How do you determine the "oldest" row? I believe the timestamps
>>generated by SQLite are only accurate to the nearest second.
>>_______________________________________________
>>sqlite-users mailing list
>>sqlite-users@mailinglists.sqlite.org
>>https://urldefense.proofpoint.com/v2/url?u=http-
>>3A__mailinglists.sqlite.org_cgi-2Dbin_mailman_listinfo_sqlite-
>>2Dusers&d=DwIGaQ&c=jOURTkCZzT8tVB5xPEYIm3YJGoxoTaQsQPzPKJGaWbo&r=4Y1
>Z
>>hFy9bpH-
>>wvkl_u5WMmphQqcZcyyY0DFEINZ4E6I&m=JgVnpDzYgWWXrCfLyoOP5F3fhNn1Gk3rk2
>t
>>6Ak5G8Tw&s=9h4tFOoFd335e5M_jT34B0HuiTqMKR2HMqh_E0wcp1Y&e=
>>_______________________________________________
>>sqlite-users mailing list
>>sqlite-users@mailinglists.sqlite.org
>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to