On Thu, 15 Jan 2004 02:35:45 -0800, Brion Vibber brion@pobox.com wrote:
I suspect there are 150000+ articles to check against 10-500 entries on the watchlist.
The longest watchlists are in the range of a couple thousand, iirc. A few hundred is not atypical for power users. Most people have relatively few.
Ok.
I do not know how many watchlist entries are there (brion?), but I suspect at least a magnitude less. Let's say 10000 entries.
Actually, it's about on the same order as the total number of pages. de.wikipedia has 60419 watchlist entries; en.wikipedia has 263770.
Huh. I thought it's much less.
However any given page has at most a couple hundred people watching it.
What if the entries have:
watchlist db: the user id watched article # article last changed (date, submitter, comment)
And every time an article gets updated, it updates all the _watchlist_ entries for itself.
Updating up to a couple hundred rows on page save may or may not be a worse performance drain than the current system. If it works, it might be worth it for the faster reads.
You should check how many updates and how many watchlist checks are there in every sec/min.
I think it should be tested (dunno how big piece of code would that require, which would be discarded is it turns out not to be better)...
I don't know about locking issues and difference on read/write performance on a loaded mySQL; maybe lots of small writes (update on save) slow the db more than lots of larger reads (check watchlist now).
Tests I did some time ago were inconclusive about read improvements, but they may not have been properly indexed for the join to cur to get the revision data.
I can't help in that. :-)
Also a slight complication; currently the watchlist only uses a single entry for each page and its talk page. To add timestamps to sort on, we'd have to double the number of rows involved.
Well, you can usually only gain speed by using more space for auxilary tables. I do not believe in that hardware upgrade is the solution for lack of design. :-]
(...which doesn't mean that I have the holy grail handy, though.)
cya, grin