发布网友 发布时间:2022-04-29 20:01
共1个回答
热心网友 时间:2022-04-29 21:31
事务操作是对于一系列数据库操作行为进行管理的过程,当多用户同时访问或修改同一数据资源时,如不进行事务控制,可能会造成一个用户的行为结果导致另一个用户使用的数据无效的问题,因此需要根据实际情况对关系数据库的事务进行适当的干预与调整。
2.2.1隔离级别设置绝大多数主流的数据库服务器的默认事务隔离级别是提交读(ReadCommitted),轻巧型开源数据库MySQL则不在此范围之列,MySQL默认的事务隔离级别是可重复读(RepeatableRead)。在实际应用中,数据库的事务隔离级别是可以修改的,也往往需要根据实际场景进行查询、变更等操作。
1.查询事务隔离级别全局事务隔离级别(整个数据库)的查询语法是:SELECT@@global.tx_isolation在命令行输入以上命令便可以查询看到数据库的事务隔离级别为REPEATABLE−READ,前面提到,关系数据库的事务模型有显式事务、隐式事务和自动事务三种类型,当使用显式事务模型进行事务控制时,需手动开启、提交、回滚事务。显式事务能够更灵活地根据实际需要对关系数据库进行底层的操作控制,更有利于实现复杂、细粒度的功能需求。
1.语法命令((1)开启事务MySQL开启一个事务的语法是:方式一:starttransaction方式二:begin(2)提交事务MySQL提交一个事务的语法是:commit)回滚事务MySQL回滚一个事务的语法是:rollback
user数据表
user.sql
user.sql续
(2)第一个MySQL客户端连接到数据库服务器,手动开启事务,进行一个update操作,但未提交或回滚事务,如图2−4所示。
客户端1更新操作
(3)第二个MySQL客户端连接到数据库服务器,检索上面被更新的记录,可以看到数据还是未做update操作前的数据,如图2−5所示。
客户端2查询操作((1)
(4)再回到第一个MySQL客户端,手动提交事务,如图2−6所示。
客户端1提交事务操作
(5)回到第二个MySQL客户端,重新检索上面被更新的记录,可以看到数据已经是update操作后的数据,如图2−7所示。
客户端2查询操作(2)
由于数据库的事务隔离级别是提交读(ReadCommitted),一个事务对数据资源的操作只有提交后才能被其他事务读取到;所以步骤(3)所读取的数据还是旧数据,步骤(5)所读取的数据则是新数据。