我有一个大型 MySQL 表(约 1000 万行,6.5G),用于读写。这是 MyISAM,由于 MyISAM 的所有表写入锁,我得到了很多锁。
我决定尝试迁移到推荐用于读/写表的 InnoDB,它只在写入时锁定特定行。
转换后,我测试了插入语句,结果表明在 InnoDB 表中比在 MyISAM 表中多花费大约 15 倍(从 0.1 秒到 1.5 秒)。这是为什么?
我还没有为InnoDB配置任何东西,也打算添加分区,但是这个数字还是出乎我的意料。当然表是相同的,相同的索引等。
根据要求提供的附加信息:
2 个索引。 primary 是 Big INT 类型的 data_id,以及 varchar(255) 类型的非唯一 user_id。
插入具有相同 user_id 的约 150 行。
索引大小:MyISAM 200MB,InnoDB 400MB
最佳答案
A related answer建议将 innodb_flush_log_at_trx_commit
变量设置为 2 可能会在写入与读取的比率相对较高时提高性能。参见 the documentation了解更多。
关于mysql - InnoDB 与 MyISAM 插入查询时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217492/