第七部分数据库面试高频知识点积累

1、事务是什么?

事务(transaction)是 并发控制 的基本单位。所谓的事务,它是一个操作系列,是由一条或多条SQL语句组成,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

2、事物的ACID特性是什么?

事务应该具有4个属性:原子性、一致性、隔离性、持久性。

  • 原子性(Atomicity): 指整个数据库事务是不可分割的工作单位。只有事务中所有的数据库操作都执行成功,整个事务的执行才算成功。事务中任何一个SQL语句执行失败,那么已经执行成功的sql语句也必须撤销,数据库状态应该退回到执行事务前的状态。
  • 一致性(Consistency): 事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束,也就是说在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
  • 隔离性(Isolation): 隔离性也叫做 并发控制、可串行化或者锁 。事务的隔离性要求每个读写事务的对象与其他事务的操作对象能相互分离,即该事务提交前对其他事物都不可见,这通常使用 来实现。多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
  • 持久性(Durability): 表示事务一旦提交了,其结果就是永久性的,也就是数据就已经写入到数据库,如果发生了宕机等事故,数据库也能将数据恢复。

3、并发一致性问题

  • 修改丢失问题: 两个事物都对一个数据进行修改,先修改,随后修改的覆盖了先修改后的数据。简记同时修改
  • 读脏数据: 对一个数据做了修改,读取这一个数据。若执行Rollback操作,则读取的结果和第一次的结果不一样。简记为读取失败的修改。最简单的场景是修改完成后,紧接着查询检验结果。
  • 不可重复读: 读取一个数据,对该数据做了修改。如果再次读取这个数据,此时读取的结果和第一次读取的结果不同。简记为读时修改。重复读取的结果不一样。
  • 幻读: 读取某个范围的数据,在这个范围内插入新的数据,再次读取这个范围的数据,此时读取的结果和第一次读取的结果不同。简记为读时插入,重复读取的结果不一样。

4、数据库的DDL、DML和DCL的区别与理解

  • DML(data manipulation language): 它们是SELECT、UPDATE、INSERT、DELETE,最常用的4条命令是用来 对数据库里的数据进行操作 的语言。
  • DDL(data definition language): DDL比DML要多,主要的命令有CREATE、ALTER、DROP等, DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上, 他们大多在建立表时使用。
  • DCL(Data Control Language): 是数据库控制功能。是 用来设置或更改数据库用户或角色权限的语句 ,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_ownerdb_securityadmin等人员才有权力执行DCL。
  • TCL (Transaction Control Language): 事务控制语言, COMMIT - 保存已完成的工作,SAVEPOINT - 在事务中设置保存点,可以回滚到此处,ROLLBACK - 回滚,SET TRANSACTION - 改变事务选项。

猜你喜欢

转载自blog.csdn.net/weixin_43605266/article/details/123168026