我有一个更新脚本,每晚更新我的数据库。
这是一个小型数据库~10k 项。 除了一个表之外,每个表的更新都很快。它在连接表上非常慢。
连接表是 Item 表和 Type 表之间的链接,如下所示:
Item.Code <-> JoinTable.RefCode (VARCHAR 30), JoinTable.IdType(int 11) <-> Type.id
引擎是InnoDB。引用表上有两个外键,两列上有一个唯一键。此外,在每一列上建立索引以允许使用外键。
我正在使用以下 SQL 查询来更新表:
INSERT INTO JoinTable (id, RefCode, IdType)
VALUES ( NULL, "AAA", 9584 )
ON DUPLICATE KEY UPDATE
id = LAST_INSERTED_ID(id),
refCode = values(refCode),
refType = values(refType)
因此,主要问题是它针对 15k 个引用 ID 运行了大约 30 分钟。
当我使用 MyISAM 引擎时,大约需要 2 秒。但是没有更多的外键。
我知道 MyISAM 删除外键并且速度更快,但我认为对于这么小的数据库来说 30 分钟远非正常。
你能帮我提高性能吗?
最佳答案
编辑 MySQL 配置中的 InnoDB 设置并重新启动 MySQL 守护进程。它们都以“innodb_”开头,并且会对其用途进行解释。
我更改了 innodb_buffer_pool_size 和 innodb_log_file_size。
关于mysql - InnoDB Small 更新很慢,性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637411/