数据库相关面试题

1.视图的作用是什么?好处有哪些?

什么是视图: 视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应 于一条SELECT语句,结果集被赋予一个名字,即视图名字。视图本身并不包含 任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数 据也随之变化。
视图的作用: (1)如果需要经常执行某项复杂查询,可以基于这个复杂查询建立视图,此后查 询此视图即可,简化复杂查询;(2)视图本质上就是一条SELECT语句,所以当访问视图时,只能访问到所对应 的SELECT语句中涉及到的列,对基表中的其它列起到安全和保密的作用,可以限制数据访问。

2.索引的原理

(1)索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效 率而引入,是独立于表的对象,可以存放在与表不同的表空间(TABLESPACE) 中。索引记录中存有索引关键字和指向表中数据的指针(地址)。对索引进行的 I/O操作比对表进行操作要少很多。
(2)索引一旦被建立就将被Oracle系统自动维护,查询语句中不用指定使用哪个 索引,是一种提高查询效率的机制。
(3)ROWID: 伪列,唯一标识一条数据记录,可理解为行地址。

3.索引的必要性有哪些?怎么合理添加索引?索引的优势

必要性: 数据库在执行一条SQL语句时,默认是进行全秒扫描,遇到匹配的条件就加入搜索结果集合,如果我们对某一字段增加索引,查询时就会先去索引列表中定位到特定值的行数,大大减少遍历匹配的行数,从而提高查找效率。
合理添加索引:

  • 为经常出现在WHERE子句中的列创建索引
  • 为经常出现在ORDER BY、DISTINCT后面的字段建立索引。如果建立的是复 合索引,索引的字段顺序要和这些关键字后面的字段顺序一致
  • 为经常作为表的连接条件的列上创建索引
  • 不要在经常做DML操作的表上建立索引
  • 不要在小表上建立索引
  • 限制表上的索引数目,索引并不是越多越好
  • 删除很少被使用的、不合理的索引
    索引的优势:
  • 通过创建唯一索引,可以保证数据库每一行数据的唯一性
  • 可以大大提高查询速度
  • 可以加速表与表的连接
  • 可以显著的减少查询中分组和排序的时间

4.事务会出现哪些并发性问题?怎么解决?

事务的隔离级别:
(1)读未提交的(Read Uncommitted) —— 最低,解决不了任何问题
(2)读已提交的(Read Committed) —— 解决脏读问题
(3)可重复读(Repeatable Read) —— 解决脏读、不可重复问题
(4)串行化(Serializable) —— 最高级别,解决所有问题,但是效率低
事务并发锁:行级锁,表级锁
乐观锁(Optimistic Locking): 乐观锁假定当前事务操纵数据资源时,不会有其他事务同时访问该数据资源,因此不作数据库层次上的锁定。为了维护正确的数据,乐观锁使用应用程序上的版本控制(由程序逻辑来实现的)来避免可能出现的并发问题。
悲观锁(Pessimistic Locking): 悲观锁假定当前事务操纵数据资源时,肯定还会有其他事务同时访问该数据资源,为了避免当前事务的操作受到干扰,先锁定资源。尽管悲观锁能够防止丢失更新和不可重复读这类并发问题,但是它影响并发性能,因此应该很谨慎地使用悲观锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值