mysql - 如果同时调用该过程两次,设置会话自动提交 = 0、插入行、提交是否允许重复 ID?
问题描述
我有一个 API,它将调用 MySQL 8 存储过程。我一直在阅读交易,我意识到我并不真的需要交易的回滚/安全网,但它确实极大地提高了插入速度,所以我想做标题中的内容。将会话自动提交设置为 false,插入内容,提交,然后再次将自动提交设置为 true。我插入的行具有自动递增的 ID。
如果另一个 api 请求调用相同的过程,但使用不同的数据,这是否会充当默认事务,并阻止对表的其他插入?
如果该过程被调用两次,同时使用不同的数据,是否存在自动生成相同行 ID 的风险?
我正在使用 Spring Boot。是否可以在那里将会话自动提交设置为 false,进行批量插入、提交并再次设置自动提交 = 1?程序方式或bulkInsert哪个更好?
与 #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%
推荐阅读
- python - Python:一个非常简单的星形盒子
- react-native - 如何将反应导航参数传播到共享同一导航器的多个屏幕
- javascript - 将变量添加到响应路径
- sql - 错误:Postgres 中“\”处或附近的语法错误
- c# - .NET 5 MySql TypeInitializationException:从单文件包加载的程序集不支持 CodeBase
- ruby - 我可以从 Gemfile.lock 文件重建 Gemfile 吗?
- android - 虚幻引擎 我们检测到此应用使用了不受支持的 Play 计费版本。请升级到帐单库版本 3 或更高版本
- reactjs - react-hook-form 错误信息未显示
- collections - 为什么在 defold 上创建我的代理会导致资源出现大量错误
- javascript - 将 JS 方法更改为 jQuery sumbit 事件的问题