2.4 系统日志表的特点:

  • 通常,日志表主要是用来提供一个供用户查看MySQL服务运行时执行的接口;
  • 日志表能够支持CREATE TABLE / ALTER TABLE / DROP TABLE / TRUNCATE TABLE操作;
  • 默认情况下,日志表使用CSV存储引擎(可以通过show create table slow_log/general_log查看),因此直接复制这个文件到其它位置,或者轻松导入其它数据库。从5.1.12版本开始,日志表也可以修改成MyISAM引擎。
  • 要禁用日志功能,以便执行ALERT/DROP操作,可以通过下列示例中的机制:

    SET @old_log_state = @@global.general_log;

    SET GLOBAL general_log = ¨OFF¨;

    ALTER TABLE mysql.general_log ENGINE = MyISAM;

    SET GLOBAL general_log = @old_log_state;

  • 日志表也能支持RENAME TABLE语句;
  • 日志表不支持LOCK TABLES,并且也不允许用户在其上进行INSERT / UPDATE / DELETE操作;
  • FLUSH TABLES WITH READ LOCK以及设置全局系统变量read_only,均对日志表无效,在此期间MySQL仍能向其中写入数据;
  • 日志表的写操作不会记入二进制日志,同样,如果有复制环境的话,日志表的内容也不会被复制到其它slaves节点;
  • 刷新日志表或日志文件,可以使用FLUSH TABLES或FLUSH LOGS,注意在5.1.12到5.1.20版本时,FLUSH TABLES语句忽略日志表,而FLUSH LOGS则会刷新日志表及其文件。
  • 不建议对日志表做分区,何况从5.1.20版本开始,也不再提供这种操作的支持。