数据库事务以及隔离级别和可能出现的问题

1、事务:由一条或者多条SQL语句组成的工作单元,这些工作单元的内容,或者同时成功,或者同时失败

2、mySQL中如果没有显示开启事务,那么默认自动开启,每执行一条SQL语句,自动提交事务
    -通过show variables like'%auto%'查看事务是否自动提交
     -执行set autocommit = 'off' 关闭自动提交模式    

3、事务的ACID特性
    -原子性(Atomicity):整个事务中的所有操作,必须作为一个单元同时成功或者同时失败
    -一致性(Consistency):在事务开始和结束后,数据库的数据都应保持一致
    -隔离性(Isolation):多个事物之间,相互隔离;一个事务不会影响其它事务的运行
    -持久性(Durability):在事务完成之后,该事物对数据库所做的更改将持续地保存在数据库中,
                并不会被回滚

4、事务的隔离级别:决定了事务之间可见的级别
    -读未提交(READ UNCOMMITED):允许一个事务看到其它事务未提交的修改
    -读已提交(READ COMMITED):允许一个事务只能看到其它事务已经提交的修改,未提交的不可见 Oralce默认
    -可重复读(REPEATABLE READ):确保如果在一个事务中执行两次两桶的select语句,都能得到相同的结果,不管
        其它事务是否对这些数据进行了修改  mySQL默认
    -序列化读(SERIALAZABLE):将一个事务与其它事务完全隔离
    
    -可通过select@@tx_isolation查看当前窗口的隔离级别  select@@session.tx_isolation
    -可通过set global transaction isolaction level read uncommitted;设置隔离级别
    -prompt 提示名称:修改提示名


5、当多个客户端并发的访问同一个表时,可能出现的问题
    -脏读取:一个事务开始读取了某行数据,但是另一个事务已经更新了此数据但是没有能够及时提交
    -不可重复读:在同一个事务中,同一个操作对同一个数据的前后两次读取产生了不同的结果
    -幻读:在同一个事务中,以前没有的行,由于其它的事务提交而出现新的行
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值