我将一些数据插入到两个不同的表中。我目前正在使用2个不同的SQL语句,但我从这个网站上读到可以在事务中执行此操作。
关于数据的大小,哪种方法更好?目前我只是将2个单独的行同时插入2个不同的表中,无序,所以我认为2个语句更好。
编辑:对不起,我不是很清楚:我正在处理的数据库是微不足道的,我只是想知道事务与2个单独语句的性能差异,以及执行更多语句时的性能差异。答案 0 :(得分:9)
Well Transaction为您提供了回滚sql语句的功能。例如,您有两个表table1和table2,只有在table1中正确插入数据时才要在table2中插入数据,如果在table1中插入数据时发生错误,则不会在table2中插入数据,在这种情况下您将使用事务。
交易的四个基本功能:
Atomicity:
当交易中涉及两条或多条信息时,要么所有的提交都被提交,要么都没有提交。Consistency:
在交易结束时,存在新的有效数据形式或数据返回其原始状态。Isolation:
在事务期间(在提交或回滚之前),数据必须保持隔离状态,并且其他事务无法访问。Durability:
在对事务进行评估后,即使服务器出现故障或重新启动,数据的最终状态仍然可用。答案 1 :(得分:3)
如果数据是相关的,这意味着第二个sql存储的数据依赖于,以某种方式与第一个查询存储的数据链接和/或反之亦然,那么你应该考虑制作一个transaction
。以这种方式,如果其中一个查询遇到问题,您可以rollback
。您可以在try-catch
语句中实现此功能。如果查询彼此完全无关,则可以使用两个单独的SQL语句。
但我认为,由于两个表的数据相同,因此最好进行交易。因此,如果您将来必须进行连接,删除等操作,那么您就拥有了一致的数据库。
答案 2 :(得分:1)
有一件事与另一件事无关。
将它们放在同一个交易中的意义既可以发生,也可以不发生。
如果您的第一次插入成功而第二次插入失败,那么您需要问的问题是什么,并回答。
就个人而言,由于我在某些操作中进行了两次插入操作,即使第二次失败的后果在其他地方处理,单个事务也是有意义的。
答案 3 :(得分:1)