开心了, 就笑;不开心了,就过会儿再笑。。。。
分类: Mysql/postgreSQL
2015-07-03 09:49:39
table_open_cache[global]
打开表的缓存数量。也不是定义内存的大小的。而是定义可以缓存多少打开的表的文件句柄信息。如果定义的太小,那么mysql在需要打开新表的时候就要不断的关闭已经打开的表和打开此次需要打开的表。性能会受到影响。
table_definition_cache[global]
表定义信息缓存是从MySQL5.1.3 版本才开始引入的一个新的缓存区,用来存放表定义信息。当我们的MySQL 中使用了较多的表的时候,此缓存无疑会提高对表定义信息的访问效率。MySQL 提供了table_definition_cache 参数给我们设置可以缓存的表的数量。在MySQL5.1.25 之前的版本中,默认值为128,从MySQL5.1.25 版本开始,则将默认值调整为256 了,最大设置值为524288。注意,这里设置的是可以缓存的表定义信息的数目,而不是内存空间的大小。
mysql> show variables like 'table%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| table_definition_cache | 912 |
| table_open_cache | 1024 |
| table_open_cache_instances | 1 |
+----------------------------+-------+
3 rows in set (0.03 sec)
mysql> SET GLOBAL table_definition_cache=128;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show warnings;
+-----------+------+--------------------------------------------------------------------+
| Level | Code | Message |
+----------+------+---------------------------------------------------------------------+
| Warning | 1292 | Truncated incorrect table_definition_cache value: '128' |
+-----------+------+---------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SET GLOBAL table_definition_cache=1000;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL table_open_cache=2048;
Query OK, 0 rows affected (0.00 sec)