数据库面试知识点

这篇博客详细介绍了数据库系统的基础知识,包括ACID特性、并发控制中的事务隔离级别和锁机制、范式理论以及SQL语法。此外,还讨论了索引类型和存储引擎的作用,特别提到了InnoDB和MyISAM的区别。
摘要由CSDN通过智能技术生成

概念

名词

  • ACID: 数据库系统中事务必须满足的性质, 分别是原子性(atomicity), 一致性(consistency), 隔离性(isolation), 持久性(durability).

    • 原子性: 事务要么全部完成, 要么不完成, 不存在中间状态.
    • 一致性: 系统状态是一致的, 正确的. 例如银行转账时账户的余额就是状态, 余额之和不变就是保证数据的一致性, 再比如要满足各种数据约束, 如唯一约束, 主键约束.
    • 隔离性: 并发事务之间不会干扰, 可以同时进行读写, 而不会产生不一致的状态.
    • 持久性: 事务完成后, 对数据的修改就是永久的, 不会发生丢失.
  • 候选码: 是属性或多个属性的组合, 能唯一确定一行数据, 或者说由候选码能确定其他所有属性.

  • 主码: 候选码可以有多个,其中选一个作为主码.

  • 非主属性: 不在任何候选码中的属性是非主属性.

  • 多值依赖: 一个属性能够确定一组属性的值的范围.

  • 数据库恢复技术: 数据转储(多副本), 日志.

并发控制

事务是并发控制的基本单位。常见的错误如下所示:

  • 丢失修改:两个事务A、B同时写一个数据,A的写使得B的写丢失,B再读取时得到的是A写入的值。
  • 不可重复读:一个事务两次读取一个数据得到的结果不同,例如数据值不同、后一次要读的数据丢失、增多等。
  • 读脏数据:事务读到不正确的数据。当事务A修改了数据,但是尚未提交,而事务B此时读到了修改的数据,此时如果A被回滚,B就发生了读脏数据。

不同数据库定义了不同的事务隔离级别,有下面几种,要求逐渐严格:

  1. 未提交读:允许事务读取其他事务没有提交的修改。能避免丢失修改问题。(写的时候允许读)
  2. 已提交读:只能读到其他事务已经提交的修改,避免了读脏数据问题。Oracle的默认级别。(写的时候不允许读)
  3. 可重复读:能避免部分不可重复读的问题,存在幻象读问题,例如下一次查询的结果比上一次多,是因为在之间有其他事务插入了数据。MySQL默认级别。ÿ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值