Refer to the MySQL page on Open and Closed Tables
MySQL is multi-threaded, so there may
be many clients issuing queries for a
given table simultaneously. To
minimize the problem with multiple
client sessions having different
states on the same table, the table is
opened independently by each
concurrent session.
table_cache is related to
max_connections. For example, for 200
concurrent running connections, you
should have a table cache size of at
least 200 × N, where N is the maximum
number of tables per join in any of
the queries which you execute. You
must also reserve some extra file
descriptors for temporary tables and
files.
You can determine whether your table
cache is too small by checking the
mysqld status variable Opened_tables,
which indicates the number of
table-opening operations since the
server started:
SHOW GLOBAL STATUS LIKE 'Opened_tables';
If the value is very large or
increases rapidly, even when you have
not issued many FLUSH TABLES
statements, you should increase the
table cache size.