在数据库中,所谓事务是指作为单个逻辑工作单元执行的一系列操作。
命令行实现事务处理
1 查看提交模式 MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行
set autocommit
=0 禁止自动提交
set autocommit
=1 开启自动提交, 来实现事务的处理。
*
当你用 set
autocommit
=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束。
* 注意:当你结束这个事务的同时也开启了个新的事务
1 串行化(SERIALIZABLE)
2 可重复读(REPEATABLE READ)
3 读已提交(READ COMMITED)
4 读未提交(READ UNCOMMITED)
1、mysql默认的隔离级别为Repeatable_Read
2、sqlserver 默认的隔离级别为Read Commited
3、oracle数据库支持READ COMMITTED和SERIALIZABLE两种事务隔离性级别,不支持READ UNCOMMITTED和REPEATABLE READ这两种隔离性级别,Oracle数据库默认使用的事务隔离性级别却是READ COMMITTED.
隔离级需要使用SET 命令来设定其语法如下:
SET TRANSACTION ISOLATION LEVEL 隔离级别
隔离级别
分为四种:
READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SERIALIZABLE
select @@tx_isolation
隔离级需要使用SET 命令来设定其语法如下:
SET global TRANSACTION
ISOLATION LEVEL 隔离级别
对于同时运行的多个事务,当这些事务访问数据库相同的数据时,如果没有采取必要的隔离机制,就会产生并发问题.
脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。
不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。换句话说就是,后续读取可以读到另一事务已提交的更新数据。
可重复读:在同一事务中多次读取数据时,能够保证所读数据一样,也就是,后续读取不能读到另一事务已提交的更新数据。
幻读:一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了。再后来的查询中,第一个事务就会发现有些原来没有的记录。