数据库

用户正常断开连接时,事务自动提交
系统崩溃或断电时,事务自动回滚

事务的四个特性:ACID
原子性Atomic:不可分割,一个操作集合要么全部成功,要么全部失败
一致性Consistent:最终是为了保证数据的一致性(存取钱)
隔离性Isolation:各个事务之间相互不会产生影响,严格的隔离性会导致效率降低,在某些情况下为了提高效率需要降低隔离级别,mysql默认隔离级别是可重复读,(mysql只支持可重复读和serializable出自开课吧)
持久性Durable
隔离级别:
读未提交 read uncommitted
读已提交 read committed
可重复读 repeatable read
序列化 serializable
产生数据不一致的情况
脏读
不可重复读
幻读
隔离级别 脏读 不可重复读 幻读
读未提交 √ √ √
读已提交 × √ √
可重复读 × × √
序列化 × × ×
脏读:a事务修改数据后没有commit b事务读取到修改后的数据
不可重复读:b查询数据为1 a修改数据commit后 b查询的数据为2 同一事务中读取到数据不一致
例如取钱:账户1000 取款500 取款过程中别人转账五千 此时取款后余额5500是不对的
脏读:a事务插入数据4commit后 b事务查询数据没有4 但是b事务插入数据4报主键重复错误
持久化:所有数据的修改都必须要持久化到存储介质中,不会因为应用程序的关闭而导致数据丢失
四个特性中,哪个是最关键的?
所有特性都是为了保证数据的一致性,所以一致性是最终的追求
事务中的一致性是通过原子性,隔离性,持久性来保证的

锁的机制:
为了解决并发访问的时候,数据不一致的问题,需要给数据加锁,加锁的同时需要考虑粒度的问题
操作的对象:数据库,表,行
一般情况下,锁的粒度越小,效率越高,大部分都是行级锁

三范式是为了减少数据冗余,比如表里需要存储cd,而不是name,cd占空间小

  1. 列不可分
  2. 不存在部分依赖(联合主键或者对照表)确保表中每一列都和主键相关
    在这里插入图片描述
    在这里插入图片描述
  3. 不存在传递依赖 确保表中每一列都和主键直接关联而不是间接关联
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值