I've observed that if I run a simple "SELECT *" command on a two-row table,
the query takes anywhere from half a second to four seconds:
>>>
mysql> select * from pet;
+--------------+---------+---------+------+------------+-------+----+
| name | owner | species | sex | birth | death | ID |
+--------------+---------+---------+------+------------+-------+----+
| snort | bennett | mammal | m | 1986-12-08 | NULL | 1 |
| fluttersnort | bennett | mammal | m | NULL | NULL | 2 |
+--------------+---------+---------+------+------------+-------+----+
2 rows in set (3.95 sec)
>>>
but if I enter the same command several times in succession, the time taken
is always "0.00 sec". In fact, it looks like if I re-enter the query less
than 15 seconds after the last time it was entered, it takes "0.00 sec" to
rerun it. (After the 15-second cutoff, the query times start going back up
again.)
What causes this? Does MySQL do any caching of query results? The first
alternative explanation that came to mind was that if you re-enter a recent
query, then the disk files storing the data will still be cached in
memory. This is supported by the observation that if you have recently run
the query
select * from pet;
then the query
select * from pet where name="snort";
is also very fast -- i.e. the data itself is being cached (either by MySQL
or by the file system), not the query results. However, if that's the
cache, shouldn't the data still be cached, say, 60 seconds later? I don't
think the machine is busy enough that data would be pushed out of virtual
memory less than 60 seconds after the last time it was placed there,
although I don't know anything about virtual memory on Linux.
-Bennett
[EMAIL PROTECTED] http://www.peacefire.org
(425) 649 9024
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php