mysql数据库基础

什么是事务?

事务是数据库并发控制的基本单位

事务可以看作是一系列的SQL语句集合

事务必须要么全部执行成功,要么全部执行失败(回滚)

 

事务的ACID特性 

ACID是事务的四个基本特性

原子性(Atomicity):一个事务中所有操作全部完成或者失败

一致性(Consistency):事务开始和结束之后数据完整性没有被破坏

隔离性(Isolation):允许多个事务同时对数据库修改和读写

持久性(Durability):事务结束之后,修改是永久的不会丢失

 

事务的并发控制可能产生哪些问题

如果不多事务进行并发控制,可能会产生四种异常情况

幻读:一个事务第二次查出现第一次没有的结果

非重复读:一个事务重复读两次得到不同的结果

脏读:一个事务读取到另外一哥事务没有提交的修改

丢失修改:并发写入造成其中一些修改丢失

 

四种事务隔离级别

为了解决并发控制异常,定义了四种事务隔离级别

读未提交:别的事务可以读取到未提交改变

读已提交:只能读取已经提交的数据

可重复读:同一个事务先后查询结果一样

串行化:事务完全串行化的执行,隔离级别最高,执行效率最低

 

 

如何解决高并发场景下的插入重复

高并发场景下,写入数据库会有数据重复问题

   使用数据库的唯一索引

  使用队列异步写入

  使用redis实现分布式锁

 

 

什么是乐观锁,什么是悲观锁

悲观锁是先获取锁再进行操作,一锁二查三更新select for update

悲观锁先修改,更新的时候发现数据已经变了就回滚(check and set)

乐观锁一把通过版本号或者时间戳实现

使用需要根据响应速度,冲突频率,重试代价来判断使用哪一种锁

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值