Log in

View Full Version : Changing the ThreadRead INSERT to INSERT DELAYED (where to find it, plus opinions?)


SDB
08-22-2007, 04:52 PM
Hi

I want to keep the ThreadRead table being populated for a number of other functions, but has created quite a hit on performance.

I am considering changing the INSERT query to an INSERT DELAYED.

Firstly.. Any idea where I find this query?

Secondly.. Any way of changing this query without file edits?

Thirdly.. Any opinions on using INSERT DELAYED for this task?

Cheers

Simon

Paul M
08-22-2007, 08:17 PM
It's actually a REPLACE, not an INSERT - and delaying it could break other functions that subsequently use it (such as automatic 'forum read' marking)

SDB
08-23-2007, 09:37 AM
Ah, good point, it would be REPLACE, of course.

Understood re threads not appearing to be read until the REPLACE happens. But in my previous experience, these things run within a few seconds anyway, so its unlikely to be a regular problem. Certainly worth the test in order to keep load a bit lower IMHO.

Any advice where I can find this query?

Cheers

Simon

Marco van Herwaarden
08-23-2007, 09:57 AM
It is done in the mark_thread_read() function of ./includes/functions_bigthree.php.

I would however advice against changing it, as it is not using a sutdown query on purpose:
// can't be shutdown as we do a read query below on this table
$db->query_write("
REPLACE INTO " . TABLE_PREFIX . "threadread
(threadid, userid, readtime)
VALUES
($threadinfo[threadid], $userid, $time)
");

SDB
08-23-2007, 11:52 AM
hmmm ok.

Thanks for the advice.

Maybe better to leave it alone.