【8-24 Java面经复习】

数据库基础

  1. 什么是是数据库事务?
    • 数据库事务是一种机制,一个操序列,使数据从一种一致性状态转化为另一种一致性状态,事务要么完成要么撤销,没有其他的执行状态;
    • 事务将一组数据库操作指令像数据库提交或者撤销,如果其中有一条指令操作失败,那么整租命令就会操作失败,此时会返回数据库执行之前的状态或者上一个节点
    • 数据库事务的实现方式是锁机制;
  2. 说一说有哪些事务状态?
    • 活跃状态:任何一个正在执行的事务都处于这个状态
    • 部分提交状态:完成事务的上一次操作之后,操作的结果将保存在主内存的缓冲区。
    • 失败状态:当事务中的操作发生失败,那么事务进入失败状态,无法进行下一步执行。
    • 终止状态:当事务发生失败之后,数据库将回滚到事务开始之前的状态,任务回滚完成,事务进入终止状态
    • 提交状态:当事务被完全执行并且没有发生异常或者错误,在内存中的结果会被提交到数据库中,从此事务不能被回滚。
  3. 事务的特性是什么?
    • 原子性:一个事务要么被完全执行,要么不被执行,事务是最小的执行单位;
    • 一致性: 一个事务完成之后,其他事务对其操作的的数据的访问结果是一致的;
    • 隔离性:在并发访问数据库时,用户的事务是互不干扰的,事务之间不会干涉内部访问的数据;
    • 持久性:当一个事务被提交之后,事务对数据库数据的改变是持久的,数据库发生故障也不会有影响。
  4. 数据库使用什么来实现事务的特性?
    • DBMS使用日志来实现数据库的原子性、一致性和持久性,日志记录了事务对数据库的更新操作,如果事务发生错误,那么就会根据日志中的记录,撤销事务对数据库的更新,使得数据库退回到事务执行之前的状态
    • DBMS使用锁机制实现事务的隔离性,当多个事务需要对同一个数据进行修改的时候,只有持有数据锁的事务才能进行修改,其他的事务只能等待获取了锁之后再对数据进行访问和修改。
  5. 事务之间有什么影响?
    • 脏读:一个事务读取了另一个事务没有提交的数据;
    • 不可重复读:在一个事务范围内,发起了两次查询操作,但是得到的结果不一样,这是因为期间有事务对数据进行了修改操作;
    • 幻读:发生于事务不是独立执行时,比如一个事务执行修改表中的所有行,而另一个事务向表中插入了数据,此时修改表的事务就会发现还有行数据没有修改,就像出现了幻觉;
    • 丢失更新:两个事务对同一个数据进行跟新操作,当事务A执行了修改之后,事务B覆盖了A的修改,此时事务A就是丢失了更新。
  6. 什么是事务的隔离级别?
    • 为了避免事务之间相互影响,数据库可以设置事务的隔离级别
      • 读取未提交:是最低级别的事务隔离界别,不能防止任何事务之间影响产生的问题
      • 读取已提交:可以避免脏读
      • 可重复读:在同一个事务中对一个数据的访问结果是一致的,无论这个数据是否被其他事务操作
      • 可串行化:可以解决所有事务之间影响产生的问题

回顾:

  1. 数据库中的触发器的使用场景有哪些?
  2. 哈希索引和B树索引,哪一个不能进行范围查询和模糊查询,为什么?
  3. 使用前缀索引的前提是什么?
  4. 在创建多列索引时,根据业务需求需要将什么放在最左边?
  5. 创建索引时,有什么注意事项?
  6. 非聚簇索引分为哪两类?分别是什么意思?
  7. 什么是数据库事务?
  8. 数据库事务的完整性和并发性是使用什么机制实现的?

个人学习记录,望各位大佬指正和补充~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值