首页 > 解决方案 > 如果同时调用该过程两次,设置会话自动提交 = 0、插入行、提交是否允许重复 ID?

问题描述

我有一个 API,它将调用 MySQL 8 存储过程。我一直在阅读交易,我意识到我并不真的需要交易的回滚/安全网,但它确实极大地提高了插入速度,所以我想做标题中的内容。将会话自动提交设置为 false,插入内容,提交,然后再次将自动提交设置为 true。我插入的行具有自动递增的 ID。

  1. 如果另一个 api 请求调用相同的过程,但使用不同的数据,这是否会充当默认事务,并阻止对表的其他插入?

  2. 如果该过程被调用两次,同时使用不同的数据,是否存在自动生成相同行 ID 的风险?

  3. 我正在使用 Spring Boot。是否可以在那里将会话自动提交设置为 false,进行批量插入、提交并再次设置自动提交 = 1?程序方式或bulkInsert哪个更好?

  4. 与 #1 中的问题相同,但在 SpringBoot 中使用 bulkInsert,没有调用任何过程。

标签: mysqlspring-boottransactionsspring-transactionsmysql-8.0

解决方案


这是加快我查询速度的主页: https ://github.com/brettwooldridge/HikariCP/wiki/MySQL-Configuration

并检查每个选项在https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html上的作用

rewriteBatchedStatements=true 加快了我的 bulkInserts 大约 350%


推荐阅读