Forums intermittently going down?
Vladimir Panteleev
thecybershadow.lists at gmail.com
Wed Sep 26 02:33:27 UTC 2018
On Wednesday, 26 September 2018 at 01:52:31 UTC, H. S. Teoh wrote:
> What version of SQLite are you using? AFAIK, SQLite itself
> does support concurrent access. Though it does have to be
> explicitly compiled with that option, otherwise it will only
> issue a runtime error. Of course, locking is not as
> fine-grained, so if one request locks one table then it will
> block everything else.
Yep, well, it's not very good at it (as it wasn't designed for
it). It locks the entire database when writing, and when the lock
is held, you get an exception or have to retry on a timer. So,
it's "supported" but not actually scalable.
> I don't know what your schema looks like, so it's hard to give
> specifics,
I posted a link to the schema earlier in the thread.
> but basically, any column used in a WHERE clause is a candidate
> for indexing.
Yep, I think we're past that already.
The last issue I ran into was subscriptions. Some people seem to
be creating subscriptions to collect and email them frequently,
sometimes on every post - not that those work well, because the
forum stops emailing people as soon as they have unread messages
in their subscriptions, but they still get saved to the queue.
Still, the longer the forum was online, the more subscriptions
have accumulated, and every new post resulted in all those
subscriptions getting triggered. Now, every time a subscription
with an email action was triggered, we had to check if there are
any unread messages in their subscription queue, and there can be
a lot of messages in there - thus, this caused something like an
O(m*n) database operation (with the underlying database
implementation also not having a constant execution time of
course). I fixed this by limiting the check to the first unread
post instead of reusing a function to count all unread messages
in the subscription queue:
https://github.com/cybershadow/DFeed/commit/9cfcab2
More information about the Digitalmars-d
mailing list