程序员面试-数据库3

8.2 SQL高级应用

8.2.1 触发器

触发器是一种特殊类型的存储过程,它由事件触发,而不是程序调用或手工启动。可以用来保证数据的有效性和完整性。
触发器与存储过程的区别

触发器存储过程
当某列数据操纵DML语句时隐式调用从一个应用或过程中显示调用
触发器体内禁止使用COMMIT、ROLLBACK语句过程体内可使用所有PL/SQL语句
不能接受参数输入可以接受参数输入

触发器的分类:DML触发器和DLL触发器
DML是当数据库服务器发生数据操作语言事件时执行的存储过程
DLL触发器是在响应数据定义语言事件是执行的存储过程。
触发器的作用:

    + 增加安全性
    + 跟踪用户对数据库的操作,实现审计
    + 维护那些通过创建表时的声明约束不能实现的的复杂的完整性约束以及对数据库中特定事件进行监控与响应。
    + 实现复杂的非标准的数据库相关完整性规则、同步实时地复制表中的数据。
    + 触发器是自动的,他们在对表的数据做了任何修改之后就会被激活。

8.2.2 索引

索引是一种提高数据库查询速度的机制,它是一个在数据库的表或者视图上按照某个关键字值的值,升序或或降序创建的对象。
索引分为聚焦索引和非聚焦索引:
聚焦索引:是表中的行的物理顺序与键值的逻辑顺序一样,一个表只能有一个聚焦索引。
非聚焦索引:数据存储于索引存储不在同一个地方。
索引的作用(提高性能):

+ 通过创建唯一的索引,可以保证数据库表中每一行数据的唯一性。
+ 通过索引,可以大大加快数据的检索速度。
+ 通过索引可以加速表和表之间的连接,从而有效实现数据的参考完整性。
+ 在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
+ 通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统的性能。

缺点:

+ 创建索引和维护索引需要耗费时间、空间。
+ 除了数据表占数据空间外,每一个索引还需要占用一定的物理空间。

8.2.3 回滚

回滚(rollback)就是事务在提交之前将数据库数据恢复到事务修改之前的数据库数据状态。
注意回滚与撤销的区别回滚是指将数据库状态恢复到执行事务之前的状态,其中可能会使用UNDO日志回滚。撤销是一种记录日志的方式,并不是主要服务于事务回滚,而是主要用于系统从故障中恢复。

8.2.4 数据备份有哪些种类

数据备份一般分为:完全备份、差异备份、事务日志备份、增量备份。

完全备份

完全备份是将数据库中的全部信息进行备份,它是恢复的基线,不但备份数据库的数据文件、日志文件还需备份文件的存储位置信息及数据库中的全部对象和相关信息,从开始备份到开始恢复这段时间内发生的任何指针对数据库的修改都将无法恢复。

差异备份

差异备份是备份从最近的完全备份之后对数据所做的修改,它以完全备份为基准点,备份从完全备份之后变化了的数据文件、日志文件以及数据库中其他被修改的内容。

事务备份

事务日志备份是备份从上次备份之后的日志记录,而且在默认情况下,事务日志备份完成后要截断日志,事务日志备份记录了用户对数据进行的修改操作。
为了避免日志中的记录数越来越大,要定期低将日志记录中不必要的记录清除掉,以节省空间。称之为截断日志。

增量备份

增量备份是针对于上一次备份的,备份上一次备份后所有发生变化的文件。

与数据备份相对应的就是数据恢复。数据恢复是指将数据恢复到事故之前的状态,可以将其看作是数据备份操作的逆过程。数据备份是数据恢复的前提,数据恢复是数据备份的目的。

8.2.5游标

在数据库中,游标提供了一种对表中检索出的数据进行操作的灵活手段。它实际上是一种能从包含多条数据结果集中每次提取一条记录的机制。
优点:

+ 在使用游标的表中,对行提供删除和更新能力
+ 在游标将面向集合的数据库管理系统和面向行的程序设计连接了起来。

8.2.6 在并发环境下保持数据的一致性

在并发环境下,一般可以使用多种机制来保证数据的一致性。例如Oracle系统提供的事务级的一致性、行级锁、表级锁等

8.2.7如果数据库日志满了,会出现什么情况

日志的特点:

+ 每一数据库至少包含两个日志文件组,每个日志文件组至少包含两个日志文件成员。
+ 日志文件组以循环方式进行写操作
+ 每一个日志文件成员对应一个物理文件。

通过日志文件来记录数据库事务可以最大限度的保证数据的一致性和安全性,但一旦数据库慢满了,就只能执行查询等读操作,不能进行更改、备份等操作。其原因是:任何写操作都要记录日志,也就是说基本上处于不能使用的状态。

8.2.8 如何判断谁往数据库中插入了一行数据

  • 审计功能
  • 触发器
  • 通过logmnr日志查看
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值