【数据库】基本知识

4-24 ACID 数据库四大特性
      A:原子性(Atomicity),要么做完,要么不做,举个例子,A给B转钱,不会出现A转了钱,B没有收到钱
      C:一致性(Consistency),从一个状态到另一个状态是一致的,再举个例子,A给B转钱,不会出现A转了100块,B只得到了50块.
      I:隔离性(Isolation),一个事务在未提交之前,对其他事务来说,是不可见的,这里有四个隔离等级.
      D:持续性(Durabilty),一旦事务提交,将会将会永远保存在数据库里.

4-24 四个隔离等级 & 脏读 不可重复读 幻读
      分别为读未提交,读提交,可重复读,序列化,读未提交 什么也防不了,读提交防脏读,可重复读在读提交的基础上还能防止不可重复读,序列化在可重复读的基础上,还能防止幻读.

      下面来说说 什么是脏读,不可重复读,幻读
      脏读,一个事务读取了另一个事务未提交的数据. 举个例子,A要给B100块,但是没提交事务,这个时候B去看看自己的支付宝,多了100块,但是A想了想,还是不给了,就没有提交.虽然B看到多了100块,但是实际100块钱也没有得到.

      不可重复读,一个事务读取了数据的时候,另一个事务在update或者delete,再次读取的时候,数据读取不同. 举个例子,A看了看自己的支付宝有100块钱,想去买东西准备付钱,这个时候B从A的支付宝里转走了100块,并在A付账前(提交事务)转走,这个时候,A认为自己是有钱的,但是却支付失败.

      幻读,一个事务读取数据的时候,另一个事务执行insert,再次读取的时候,发现读取数据不同,举个例子,A在看支付宝消费记录的时候,B用A的支付宝消费了100块,A刷新支付宝消费记录的时候,突然多了100块,他认为自己出现了幻觉.

四个隔离等级,依次效率降低,降低并发性.

4-25 乐观锁与悲观锁
      乐观锁与悲观锁,我想了想,还是放到了数据库相关知识里.
      乐观锁:假定不会发生并发冲突,所以在所需数据之外,还需要一个版本号version,来确定当前做出的修改,在保存的时候,是否是基于上一个版本的.乐观锁的优点又是不会用数据库大量资源,适合并发的环境.但是这是有条件的,这仅仅是针对写操作较少的情况下.如果一直版本号不对应(也就是写操作过,导致版本号更新过快),那么占用的资源不一定比悲观锁少.CAS就是一种乐观锁.
      悲观锁,正好与乐观锁相反,是一种假定会发生并发冲突的锁.所以,在修改数据前,它首先会取得锁,让其他事务暂时无法取得它所取得的数据.这样会占用数据库大量资源.synchronized就是一种悲观锁.

4-27 数据库锁机制
      数据库锁有三种表级,页级,行级,三种锁的并发能力依次由小到大递增.
      表级:是对访问数据所在表加锁,这样粒度虽然变大,但是也降低了并发能力.
      行级:对访问数据加锁,这样虽然降低了发生冲突的可能,但是因为粒度小,对数据的加锁解锁也对数据库效率造成一定影响.
      页级:锁机制在表级和行级之间,并发能力和数据库效率都处于表级和行级之间.

5-8 mysql索引失效
1. 当使用is null
2. 使用like进行模糊查询
3. 使用不等于 (!= <>)
4. 当mysql估计全表查询比使用索引快的时候
5. 查询字符串的时候 没有使用单引号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值