mysql - InnoDB Small 更新很慢,性能问题

标签 mysql sql performance sql-update innodb

我有一个更新脚本,每晚更新我的数据库。

这是一个小型数据库~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/

相关文章:

php - mysql 数据库插入将所有 ID 更改为 4294967295

php - 我想按条件删除数据。如果数据在另一个表中作为外键可用,则不要删除它

sql - 此时如何选择 4 天前的日期?

scala - 数组构造器优化——Double的装箱

javascript - 根据垂直滚动移动元素 - 最高效的方式?

mysql - 帮助加速此 MySQL 查询,该查询由于聚合函数而花费的时间过长

mysql - 如果 Left Join 返回行,条件 Where 子句?

php - 平均和比较左连接 MySQL

sql - BigQuery 标准 SQL 查询返回错误答案

mysql - 使用常量列表值加快查询速度