0

我今天进行了测试。查看 innodb 表上插入性能的变体,该表为空,源文件具有 10K 记录。

我使用“ mysql -uuname -pxxxxxx -Ddbanme < insert_file.sql ”

以下是不同的统计数据。

    BINARY LOGGING IS ENABLED
    innodb_flush_log_trx_commit = 1     Time: 25 minutes
    innodb_flush_log_trx_commit = 2     Time: 4 seconds

    BINARY LOGGING IS DISABLED
    innodb_flush_log_trx_commit = 1     Time: 6 minutes
    innodb_flush_log_trx_commit = 2     Time: 3 seconds

我不确定从中可以理解什么。请分享您对此测试细节的看法。

4

1 回答 1

2

看看here,您会看到innodb_flush_log_trx_commit1 MySQL 何时更频繁地写入刷新日志。正如您在文档中看到的,它必须为 1 才能实现 ACID 合规性。在您的情况下,当从文件导入数据时,如果您的值为 1 并且某些内容中断,则您的整个事务将失败(表将保持为空),值为 2,如果某些内容中断,您的表将包含成功的记录(在导入之前失败的)。

关于BINARY LOGGING,当没有二进制日志记录时,您的插入工作得更快。如果您没有从属服务器并且不想从主服务器复制命令,则不需要二进制日志记录,因此您可以将其关闭,因为这会提高您的性能。

于 2012-04-04T13:19:58.073 回答