MySQL刷新表 - 当前数据库还是每个数据库?

Ric*_*ard 15 mysql

MySQL命令是否:

FLUSH TABLES;
Run Code Online (Sandbox Code Playgroud)

刷新当前数据库中的每个表,还是服务器上的每个表?

我正在使用MySQL 5.0 - 文档不清楚,虽然它确实提到:

FLUSH TABLES WITH READ LOCK;
Run Code Online (Sandbox Code Playgroud)

将对所有数据库执行此操作.

谢谢.

Bre*_*ent 19

这是所有数据库.

  • 需要引用。你怎么知道的? (3认同)
  • @UltimateBrent :) (2认同)

Bil*_*win 9

我试着看一下,但我也找不到权威的答案.

  • 我像你一样查看了手册.
  • 我发现了MySQL Internals文档FLUSH TABLES,但没有具体说明.
  • 我甚至阅读了源代码mysql_server/sql/sql_base.cc但很快找不到答案.

我认为答案是开发人员认为非常明显的事情之一,他们永远不需要说出来.

根据内部文档,MySQL表缓存包含最近使用的表的列表.没有提到特定于数据库的表缓存,MySQL服务器中似乎只有一个表缓存.

FLUSH TABLES被描述为强制关闭所有打开的表(表缓存中的表).没有提到这仅限于一个数据库,但您可以在参数中指定单个表FLUSH TABLES.同样,我认为这默认适用于整个表缓存,因此适用于MySQL服务器上具有打开文件的所有数据库.


小智 7

当你只做一个mysql_connect,然后"show tables"例如 - > mysql_error():没有选择数据库

与"刷新表"没有mysql_error,所以我认为答案是每个数据库