mysql事务

目录

一、事务的介绍

二、事务的四大特性(ACID)

三、事务的操作方式查询、修改

四、并发事务问题

五、事务的隔离级别


一、事务的介绍

        是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作化为一个整体,一起向系统提交或撤销操作请求,即,这些操作要么同时成功,要么同时失效。
默认mysql的事务是自动提交的,也就是说,当执行一条DML语句,mysql会立即隐式的提交事务。

二、事务的四大特性(ACID)

原子性:事务是不可分割的最小单元,要么全部成功要么全部失败;
一致性:事务完成时,必须使所有的数据保持一致;
隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行;
持久性:事务一旦提交或者回滚,它对数据库中的数据的改变就是永远的。

三、事务的操作方式查询、修改

查询事务的提交方式

select @@autocommit (1 为自动提交, 0为手动提交需要执行commit)

修改事务提交方式为手动    

set @@autocommit=0

开启事务

start t'ransaction 或 begin

提交事务

commit

回滚事务

rollback

四、并发事务问题

脏读:一个事务读到另一个事务还没有提交的数据;
不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读;
幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了一个幻影。

五、事务的隔离级别

隔离级别为read uncommitted会出现脏读、不可重复读、幻读问题,性能是最好的;
隔离级别为read committed不会出现脏读,会出现不可重复读、幻读问题;
隔离级别为repeatable read(默认)不会出现脏读、不可重复读问题,会出现幻读的问题;
隔离级别为serializable不会出翔脏读、不可重复读、幻读问题,性能最差。

查看事务隔离级别

select @@transaction_isolation

设置事务的隔离级别

set [session|global]transaction isolation level {read uncommitted|read committed|repeatable read|serializable} 

        难才有意思,just do it!

        自由的前提是自律,自律的顶端是享受,愿你以渺小启程,以伟大结局;

        希望我们都能成为自由又自律的人。

你可能感兴趣的:(mysql,mysql,数据库)