事务日志和二进制日志有什么区别?

Rya*_*yan 10 mysql sql-server transaction-log

来自 SQL Server 商店,我现在使用 MySQL,我很好奇。

MySQL的二进制日志和MSSQL的事务日志有什么区别?

从目前的前景来看,似乎每个 MySQL 实例只有一个二进制日志,而不是 MSSQL 中每个数据库的事务日志。

Rol*_*DBA 5

仅回答问题的 MySQL 部分

二进制日志记录完成的 SQL 语句。你可以有很多二进制日志。在默认设置下,二进制日志以 1G 标记旋转(请参阅expire_logs_daysmax_binlog_size)。

您可以通过运行以下任一命令来查看二进制日志:

SHOW BINARY LOGS;
SHOW MASTER LOGS;
Run Code Online (Sandbox Code Playgroud)

当前的主日志始终是列表中的最后一个。要仅查看最后一个二进制日志,即当前的二进制日志,请运行以下命令:

SHOW MASTER STATUS;
Run Code Online (Sandbox Code Playgroud)

谈到 InnoDB 存储引擎和事务

  • 有一个元数据文件(ibdata1,默认保存数据页、索引页、表元数据和MVCC信息),也称为 InnoDB 表空间文件。
  • 您可以拥有多个 ibdata 文件(请参阅innodb_data_file_path
  • 有重做日志(ib_logfile0 和 ib_logfile1)
  • 您可以拥有两个以上的重做日志(请参阅innodb_log_files_in_group
  • 如果禁用innodb_file_per_table,您可以将数据和索引分布在多个 ibdata 文件中
  • 您可以将 ibdata 中的数据和索引页分离到单独的表空间文件中(有关如何设置,请参阅innodb_file_per_tableStackOverflow Post