On Mon, Feb 1, 2010 at 2:21 PM, Cui Shijun <rancp...@gmail.com> wrote:

> "To minimize the problem with multiple client sessions having
> different states on the same table, the table is opened independently
> by each concurrent session."
>

That literally means that every time a table gets referenced, it is "opened"
anew. Even if you use the same table twice in a single select, it gets
opened twice.


>  Are sessions using private table caches?
>

No, as far as I understand the internals there's a global cache, and as soon
as a table is no longer in use, the object gets returned for subsequent use
by another thread (or free()ing if there's not enough room for something
else).


>  if I have M concurrent sessions and N tables, assume each session
> will access tables one by one, will mysql open M*N tables?
>

Yes, this is correct. This also implies that you need to make sure your
system allows sufficient filehandles for the MySQL user/process.

Table cache objects don't really use a lot of space, so feel free to set it
to a large enough value. I've got hosts where it's set to 30.000, although
it's quite rare that they ever get there - I've had one occurrence where it
grew to 26.000 open tables, with up to 20 tables being opened per second.
Graph it (Open_tables variable) and make sure you don't run into the limit.




-- 
Bier met grenadyn
Is als mosterd by den wyn
Sy die't drinkt, is eene kwezel
Hy die't drinkt, is ras een ezel

Reply via email to