我有一个大型 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。
插入约 150 行,具有相同的 user_id。
索引大小:MyISAM 200 MB,InnoDB 400 MB
A 相关答案 https://stackoverflow.com/questions/20148/myisam-versus-innodb/414934#414934建议设置innodb_flush_log_at_trx_commit
当写入与读取的比率相对较高时,将变量设置为 2 可能会提高性能。看文档 http://dev.mysql.com/doc/refman/4.1/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit了解更多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)