Mysql 将多个SQL查询作为一个字符串排队,服务器行为?
当您将例如3个查询作为一个字符串提交给SQL数据库,并用分号分隔,而另一个用户同时执行相同的操作时,我们的查询是否会被视为一个查询的“组”或“队列”,每个用户始终以相同的逻辑顺序执行,或者这些查询的队列是否可以“混在一起”,结果是我们的两个查询被一个接一个地激发 因此,基本上,我想知道发生这种情况时,MySQL和SQL Server的行为会是以下哪种情况:Mysql 将多个SQL查询作为一个字符串排队,服务器行为?,mysql,sql,sql-server,tsql,queue,Mysql,Sql,Sql Server,Tsql,Queue,当您将例如3个查询作为一个字符串提交给SQL数据库,并用分号分隔,而另一个用户同时执行相同的操作时,我们的查询是否会被视为一个查询的“组”或“队列”,每个用户始终以相同的逻辑顺序执行,或者这些查询的队列是否可以“混在一起”,结果是我们的两个查询被一个接一个地激发 因此,基本上,我想知道发生这种情况时,MySQL和SQL Server的行为会是以下哪种情况: 执行路径情况1: 用户1查询1、用户1查询2、用户1查询3、用户2查询1、用户2查询2、用户2查询3 执行路径情况2: 用户1查询1、用户
- 执行路径情况1:
- 用户1查询1、用户1查询2、用户1查询3、用户2查询1、用户2查询2、用户2查询3
- 执行路径情况2:
- 用户1查询1、用户2查询1、用户1查询2、用户2查询2、用户1查询3、用户2查询3
- 原子-整个事务成功或失败
- 组-无论事务成功与否,数据库始终保持一致状态
- 隔离的-同时处理的多个事务不能相互干扰
- 持久-数据库必须能够在软件和硬件故障后恢复提交的数据
为了安全起见,我会用
开始事务
开始查询,然后用提交事务
结束查询(或者数据库需要的任何语法)。如果数据库确实将其视为多个单独的查询,则如果它们写入数据库,则可能会出现问题。最好使用事务。对于SQL Server,特定用户的查询将按照指定的顺序运行,但可以与其他用户的语句交错,这取决于资源何时可用le.在事务内部,您可以保证数据的一致性,但您的语句仍可能与其他用户的语句交错。您使用的语句和锁的类型将决定其他语句是否能够访问您在查询中使用的相同表和行。MyISAM引擎不是事务性的,所以本质上,每个查询都是在单独的事务中执行的。