MySQL 的 `FLUSH` 命令有哪些用法?

推荐答案

MySQL 的 FLUSH 命令用于清除或重新加载 MySQL 服务器中的各种缓存和状态信息。常见的用法包括:

  1. FLUSH PRIVILEGES;
    重新加载权限表,通常在修改了用户权限后使用。

  2. FLUSH TABLES;
    关闭所有打开的表,并清除查询缓存。

  3. FLUSH TABLES table_name;
    关闭指定的表,并清除其缓存。

  4. FLUSH HOSTS;
    清除主机缓存,通常在连接错误过多时使用。

  5. FLUSH LOGS;
    关闭并重新打开所有的日志文件,通常用于日志轮换。

  6. FLUSH STATUS;
    重置状态变量,通常用于性能监控。

  7. FLUSH QUERY CACHE;
    清除查询缓存,但不影响正在执行的查询。

  8. FLUSH TABLES WITH READ LOCK;
    关闭所有表并加全局读锁,通常用于备份操作。

本题详细解读

1. FLUSH PRIVILEGES;

当通过 GRANTREVOKE 语句修改了用户权限后,MySQL 不会立即更新内存中的权限表。使用 FLUSH PRIVILEGES; 可以强制 MySQL 重新加载权限表,使更改立即生效。

2. FLUSH TABLES;

该命令会关闭所有当前打开的表,并清除查询缓存。这在需要释放表锁或重新加载表结构时非常有用。

3. FLUSH TABLES table_name;

FLUSH TABLES; 类似,但只针对指定的表。该命令会关闭指定的表并清除其缓存。

4. FLUSH HOSTS;

当某个主机多次连接失败时,MySQL 会将其加入黑名单。使用 FLUSH HOSTS; 可以清除主机缓存,解除黑名单。

5. FLUSH LOGS;

该命令会关闭并重新打开所有的日志文件(如二进制日志、错误日志等),通常用于日志轮换或日志文件切换。

6. FLUSH STATUS;

该命令会重置状态变量(如 Com_selectCom_insert 等),通常用于性能监控和调试。

7. FLUSH QUERY CACHE;

该命令会清除查询缓存,但不会影响正在执行的查询。这在查询缓存过大或需要强制刷新缓存时非常有用。

8. FLUSH TABLES WITH READ LOCK;

该命令会关闭所有表并加全局读锁,通常用于备份操作。在执行备份时,确保数据一致性非常重要,因此需要使用该命令来防止数据写入。

纠错
反馈