0

为了测试,我最近几乎每天都在重新设计新设计的 MySQL 数据库,我也有一个基于它的 PHP 应用程序。据我了解,每次重建都会积累一些系统变量值,例如:

mysql> show global status like '%tmp%';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Created_tmp_disk_tables | 14062 |
| Created_tmp_files       | 437   |
| Created_tmp_tables      | 20854 |
+-------------------------+-------+
3 rows in set (0.00 sec)

Created_tmp_disk_tables 和 Created_tmp_tables 在每次重建的基础上不断增长。当然还有其他一些变量在做同样的事情。我想知道我们如何在每次重建时安全地清理它们,这样我们就不会被这些值所欺骗。我们将看到真正的价值。

如果问题不清楚,请随时告诉我。谢谢。

在测试@dwjv 的建议后,执行“刷新状态”,得到:

mysql> flush status;
Query OK, 0 rows affected (0.02 sec)

mysql> show global status like '%tmp%';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Created_tmp_disk_tables | 14062 |
| Created_tmp_files       | 0     |
| Created_tmp_tables      | 20856 |
+-------------------------+-------+
3 rows in set (0.00 sec)

变量“Created_tmp_files”已清除,但其他两个没有改变。“刷新状态”只会重置会话状态,一些但不是所有全局状态变量。

mysql> show status like '%tmp%';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Created_tmp_disk_tables | 0     |
| Created_tmp_files       | 0     |
| Created_tmp_tables      | 0     |
+-------------------------+-------+
3 rows in set (0.00 sec)

然后我按照&Yak的建议'service mysql restart',得到:

mysql> show global status like '%tmp%';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Created_tmp_disk_tables | 14062 |
| Created_tmp_files       | 0     |
| Created_tmp_tables      | 20857 |
+-------------------------+-------+
3 rows in set (0.00 sec)

还是一样,没有变化。

4

2 回答 2

2
FLUSH STATUS;

这将刷新许多全局变量。

于 2013-05-22T14:12:44.267 回答
2

您需要做的就是重新启动服务器。

于 2013-05-22T14:09:50.963 回答