在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
事务(transaction)事务是业务逻辑的一个基本的单元组成。 每一个事务由一条条sql语句组成。 和事务相关的语句( 事务的存在保证了数据的安全性。 事务机制: 每一次执行DML语句都会记录操作,但不会修改数据,等到所有DML执行, 最后提交事务(删除记录,修改硬盘数据)或者回滚事务(删除记录,不修改数据)。 事务由四大特性:ACID
事务的隔离级别: 1.读未提交( 这种级别存在脏读现象 2.读以提交(r 这种级别解决了脏读现象,但是不可以重复读 3.可重复读( 解决了不可重复读现象,但是存在幻读,读取到的数据不真实。 4.序列化读/串行化读。解决了所有问题,和多线程里面的线程安全相似。但是存在效率低下。因为事务需要排队。
想要手动提交事务。在执行DML之前。先 演示手动回滚事务: drop table if exists t_user1; create table t_user1( id int(3) primary key auto_increment, username varchar(10) ); mysql> create table t_user1( -> id int(3) primary key auto_increment, -> username varchar(10) -> ); Query OK, 0 rows affected (0.02 sec) mysql> insert into t_user1(username) values('h1'); Query OK, 1 row affected (0.01 sec) mysql> select * from t_user1; +----+----------+ | id | username | +----+----------+ | 1 | h1 | +----+----------+ 1 row in set (0.00 sec) mysql> rollback;//回滚事务 Query OK, 0 rows affected (0.00 sec) mysql> select * from t_user1;//回滚之后还是和之前一样,因为myql自动提交了 +----+----------+ | id | username | +----+----------+ | 1 | h1 | +----+----------+ 1 row in set (0.00 sec) mysql> start transaction;//手动开启事务,关闭事务自动提交 Query OK, 0 rows affected (0.00 sec) mysql> insert into t_user1(username) values('h2'); Query OK, 1 row affected (0.01 sec) mysql> insert into t_user1(username) values('h3'); Query OK, 1 row affected (0.00 sec) mysql> insert into t_user1(username) values('h4'); Query OK, 1 row affected (0.00 sec) mysql> select * from t_user1; +----+----------+ | id | username | +----+----------+ | 1 | h1 | | 2 | h2 | | 3 | h3 | | 4 | h4 | +----+----------+ 4 rows in set (0.00 sec) mysql> rollback;//回滚 Query OK, 0 rows affected (0.01 sec) mysql> select * from t_user1; +----+----------+ | id | username | 最后硬盘上的数据还是和之前一样。 +----+----------+ 回滚删除记录,不修改硬盘上的数据。 | 1 | h1 | +----+----------+ 1 row in set (0.00 sec) 到此这篇关于mysql 事务解析的文章就介绍到这了,更多相关mysql 事务内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论