如果同时调用该过程两次,设置 session autocommit=0、插入行、提交是否允许重复 ID?

Does setting session autocommit=0, inserting rows, commiting, allow for duplicate IDs if the procedure is called twice at the same time?

我有一个 API,它将调用一个 MySQL 8 存储过程。我一直在阅读交易,我意识到我并不真的需要交易的 rollback/safety 网络,但它确实大大提高了插入速度,所以我想做标题。将 session 自动提交设置为 false,插入东西,提交,然后再次将自动提交设置为 true。我插入的行具有自动递增的 ID。

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

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

  3. 我正在使用 Spring Boot。是否可以在那里将 session auto commit 设置为 false,进行批量插入、提交,然后再次设置 auto commit = 1?程序方式和bulkInsert哪个更好?

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

这是加快我查询速度的主页: 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%