2.3 数据库面试题

1、数据库有哪些索引?
根据功能分类
唯一索引(Unique):可单列也可多列组合,每个索引值对应唯一的记录,且索引的字段具有唯一性,最多只能有一个NULL。
主键索引(Primary Key):可单列也可多列组合,其值唯一标识表中的一行,不能为NULL。
聚集索引(Cluster):一个表只能包含一个聚集索引,表中行的物理顺序与键值的逻辑顺序相同,加快查询速度。
根据实现方式分类
B+树索引:平衡的树,不一定是二叉树,一个节点中可以存多个值或者指针,最常用,性能好,范围查询和单查询都适用。
散列索引:通过散列函数来定位,只支持单值查询,单值查询比B+树略快。
位图索引:适用于字段值固定且值的种类很少的情况。

2、MySQL的数据引擎有哪些?特点?
ISAM:读取数据快,不支持事务、索引、容错。
MyISAM:基于ISAM,表格锁定机制优化并发读写,静态型(不含varchar等长度可变数据类型)、动态型(含长度可变数据类型)、压缩型(若只含只读表课减少存储空间)。
HEAP:每个表对应一个磁盘文件,表结构存在磁盘,数据存在内存。
CSV:基于普通文本文件,每个数据行占一个文本行。
BLACKHOLE:用作日志记录。
ARCHIVE:提供压缩功能,适合存储大量的独立的历史数据,插入速度快,无索引查询慢。
PERFORMANCE SCHEMA:用于收集数据库服务器的参数。
InnoDB:提供ACID事务支持、系统奔溃修复能力、多版本并发控制的行级锁、支持自增长列、外键,为5.5之后的默认引擎。
3、数据库连接池采用了什么设计模式?有什么意义?
单例模式:全局只有且仅需要一个数据库连接池对象。
创建者模式——对象池模式:一个缓存对象的对象池类Pool,创建好固定数量的抽象对象,提供取对象、返还对象的功能。
装饰者模式或代理模式:使得close方法不再是关闭连接而是返还连接给数据库连接池。

4、数据库事务ACID特性?
(1)原子性:整个事务的操作看成一个操作,要么全部完成,要么全部不完成,事务发生异常会回滚。
(2)一致性:从一个一致的状态到另一个一致的状态,转账后总额不变。
(3)隔离性:隔离状态执行事务,使它们好像是系统在给定时间执行的唯一操作。
(4)持久性:事务对数据库所作的更改持久化在数据库中不会回滚。

5、数据库的隔离特性?
(1)脏读:事务处理过程中读取了 另一个 未提交的的事务中的数据。
(2)不可重复读:一个事务范围内多次查询返回了不同的数据,查询间隔内被另一个事务修改并提交了。
(3)幻读(虚读):T1对某列进行更新操作,另一个事务T2插入一行,T1看到有一行未被更新。
四种隔离级别:
Serializable(可串行化):可避免脏读、不可重复读、幻读,是表锁。
Repeatable read(可重复读):可避免脏读、不可重复读。
Read committed(读已提交):可避免脏读。
Read uncommited(读未提交):最低级别,任何情况都不能保证。

6、数据库的范式?
第一范式:每一列都是原子的,不可分割的。
第二范式:每一条记录都是唯一的,且不存在部分依赖。
第三范式:不存在可传递依赖。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值