mysql - InnoDB 与 MyISAM 插入查询时间

标签 mysql database optimization innodb myisam

我有一个大型 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/

相关文章:

mysql - Tomcat启动时如何避免分钟延迟

php - PHP、MySQL 中的数据阻塞

ios - SwiftUI:通过数据库连接实现评级 View

java - BigDecimal 的 StringBuilder 的模拟

php - Apache header 中的欧元字符

php - UNION 查询的问题

python - 如何计算 Pandas Dataframe 中变量的唯一组合

mysql - Visual Studio 和 MySQL 之间的连接问题

mysql - 使用索引优化mysql查询

javascript - 分析 JavaScript 性能