如何解决MySQL插入执行成功并返回ID,但并发时有时不保存数据
我遇到了一个奇怪的问题。 我使用的是 MySQL Enterprise Server VERSION 8。
我有一个 API,它在 Mysql 数据库中执行以下语句:
START TRANSACTION;
Many select statements;
INSERT INTO ... VALUES(...);
COMMIT;
Many select statements;
这是在一张表中插入并检索表中新创建记录的 ID。 当服务器负载低时调用此 api 时,这完美地工作。
但是当服务器负载增加时,它执行得很好,也返回新创建的记录ID,但它没有将记录保存在数据库中。
目前,如果我同时从前端调用这个 API 25 次,那么这个问题会发生 1 到 2 次。即我可以在日志中看到所有查询和事务,并且都给出了记录的 ID,但是数据库中没有保存 1-2 条记录。
如果有任何想法,有人可以帮助我吗?
解决方法
当我处理高并发时,我使用 ON DUPLICATE KEY UPDATE 语句。这可能会解决您的问题。
https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html
但是数据没有插入到数据库中,但是服务器却没有报错为什么
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。