数据库高频面试题汇总(附部分答案,定期更新)

数据库基础知识

1、为什么要使用数据库?

使用数据库可以高效且条理分明地存储数据,它使人们能够更加迅速和方便地管理数据。
​1、数据库可以有效地保持数据信息的一致性、完整性、降低数据冗余。
​2、数据库可以满足应用的共享和安全方面的要求
​3、数据库技术能够方便智能化地分析,产生新的有用信息

2、mysql 有关权限表都有哪几个?

MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别 user,db,table_priv,columns_priv 和 host。
user:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
db:记录各个帐号在各个数据库上的操作权限。
table_priv:记录数据表级的操作权限。
columns_priv:记录数据列级的操作权限。
host:配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。

数据类型

1、mysql有哪些数据类型

严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC)
近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。
时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR

索引(重要)

1、什么是索引? 有哪几种类型?有哪些优缺点? 使用场景(重点)

索引是一种数据结构,可以帮助我们快速的进行数据的查找.
索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引.

6、索引的基本原理, 数据结构(b树,hash)
7、索引算法有哪些?
8、索引设计的原则?
9、创建索引的原则(重中之重)
10、创建索引的三种方式,删除索引
11、创建索引时需要注意什么?
12、使用索引查询一定能提高查询的性能吗?为什么?
13、百万级别或以上的数据如何删除
15、说一说前缀索引, 什么是最左前缀原则?什么是最左匹配原则?
16、B树和B+树的区别,使用B树的好处,使用B+树的好处
19、Hash索引和B+树所有有什么区别或者说优劣呢?

hash索引:底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据
B+树: 底层实现是多路平衡查找树.对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据.
区别:
​hash索引进行等值查询更快(一般情况下), 但是却无法进行范围查询.
B+树的查询效率比较稳定,对于所有的查询都是从根节点到叶子节点,且树的高度较低.

20、数据库为什么使用B+树而不是B树?

21、B+树在满足聚簇索引和覆盖索引的时候需不需要回表查询数据?

22、什么是聚簇索引?何时使用聚簇索引与非聚簇索引

23、非聚簇索引一定会回表查询吗?

24、联合索引是什么?为什么需要注意联合索引中的顺序?

使用多个字段同时建立一个索引,叫做联合索引。在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引。

事务

1、什么是数据库事务?

事务是一系列的操作,他们要符合ACID特性

2、事物的四大特性(ACID)介绍一下?

A:原子性, 要么全部成功,要么全部失败.不可能只执行一部分操作.
C:一致性,系统总是从一个一致性的状态转移到另一个一致性的状态,不会存在中间状态.
I:隔离性, 通常一个事务在完全提交之前,对其他事务是不可见的.
D:持久性,一旦事务提交,那么就永远不会变, 哪怕系统崩溃也不会影响到事务结果.

3、什么是脏读?幻读?不可重复读?
4、什么是事务的隔离级别?MySQL的默认隔离级别是什么?
5、三范式

第一范式: 每个列都不可以再拆分.第二范式: 非主键列完全依赖于主键,而不能是依赖于主键的一部分.第三范式: 非主键列只依赖于主键,不依赖于其他非主键.

1、对MySQL的锁了解吗,mysql有哪些锁

数据库有并发事务时,可能产生数据不一致,这时需要一些机制来保证访问的次序,锁机制就是这样的一个机制.
共享锁:又叫做读锁. 当用户要进行数据的读取时,对数据加上共享锁.共享锁可以同时加上多个
排他锁:又叫做写锁. 当用户要进行数据的写入时,对数据加上排他锁.排他锁只可以加一个,他和其他的排他锁,共享锁都相斥.

2、隔离级别与锁的关系
3、按照锁的粒度分数据库锁有哪些?锁机制与InnoDB锁算法
4、从锁的类别上分MySQL都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了
5、MySQL中InnoDB引擎的行锁是怎么实现的?
6、InnoDB存储引擎的锁的算法有三种
7、什么是死锁?怎么解决?
8、数据库的乐观锁和悲观锁是什么?怎么实现的?

视图

1、为什么要使用视图?什么是视图?
2、视图有哪些特点?
3、视图的使用场景有哪些?
4、视图的优点
5、视图的缺点
6、什么是游标?

存储过程与函数

1、什么是存储过程?有哪些优缺点?

触发器

1、什么是触发器?触发器的使用场景有哪些?
2、MySQL中都有哪些触发器?

常用SQL语句

1、SQL语句主要分为哪几类
2、超键、候选键、主键、外键分别是什么?
3、SQL 约束有哪几种?
4、六种关联查询
5、什么是子查询
6、子查询的三种情况
7、mysql中 in 和 exists 区别
8、varchar与char的区别
9、varchar(50)中50的涵义
10、int(20)中20的涵义
11、mysql为什么这么设计
12、mysql中int(10)和char(10)以及varchar(10)的区别
13、FLOAT和DOUBLE的区别是什么?
14、drop、delete与truncate的区别
15、UNION与UNION ALL的区别?

SQL优化

1、如何定位及优化SQL语句的性能问题?创建的索引有没有被使用到?或者可以知道这条语句运行很慢的原因?

explain命令来查看语句的执行计划

2、SQL的生命周期?

3、mysql 分页, 超大分页怎么处理?

一般从两个方向上来解决:
1、虽然也load了一百万的数据,但是由于索引覆盖,要查询的所有字段都在索引中,所以速度会很快. 同时如果ID连续的好,我们还可以select * from table where id > 1000000 limit 10,效率也是不错的,优化的可能性有许多种,但是核心思想都一样,就是减少load的数据.
2、解决超大分页,其实主要是靠缓存,可预测性的提前查到内容,缓存至redis等k-V数据库中,直接返回即可.

4、关心过业务系统里面的sql耗时吗? 统计过慢查询日志吗?对慢查询都怎么优化过?

1、分析语句,看看是否load了额外的数据,可能是查询了多余的行并且抛弃掉了,可能是加载了许多不需要的列,对语句进行分析以及重写
2、分析语句的执行计划,然后获得其使用索引的情况,之后修改语句或者修改索引,使得语句可以尽可能的命中索引.
3、对语句的优化已经无法进行,可以考虑表中的数据量是否太大,如果是的话可以进行横向或者纵向的分表.

5、为什么要尽量设定一个主键?

6、主键使用自增ID还是UUID?

在InnoDB存储引擎中,主键索引是作为聚簇索引存在的,也就是说,主键索引的B+树叶子节点上存储了主键索引以及全部的数据(按照顺序),如果主键索引是自增ID,那么只需要不断向后排列即可,如果是UUID,由于到来的ID与原来的大小不确定,会造成非常多的数据插入,数据移动,然后导致产生很多的内存碎片,进而造成插入性能的下降.

7、字段为什么要求定义为not null?

null值会占用更多的字节,且会在程序中造成很多与预期不符的情况.

8、如果要存储用户的密码散列,应该使用什么字段进行存储?

密码散列,盐,用户身份证号等固定长度字符串应该使用char而不是varchar来存储,这样可以节省空间且提高检索效率.

12、优化查询过程中的数据访问

13、优化长难的查询语句

14、优化特定类型的查询语句

15、优化关联查询

16、优化子查询

17、优化LIMIT分页

18、优化UNION查询

19、优化WHERE子句

20、MySQL的binlog有有几种录入格式?分别有什么区别?

三种格式:statement、row 和 mixed
statement:模式下,记录单元为语句.即每一个sql造成的影响会记录。
row:级别下,记录单元为每一行的改动,基本是可以全部记下来但是由于很多操作。
mixed 一种折中的方案,普通操作使用statement记录,当无法使用statement的时候使用row。

数据库优化

1、为什么要优化、说说数据库结构优化

2、MySQL数据库cpu飙升到500%的话他怎么处理?

3、大表优化?某表有近千万数据,CRUD比较慢,如何优化?分库分表怎么做的?分表分库有什么问题?有用到中间件么?他们的原理知道么?

4、垂直分表:适用场景、缺点。水平分表:适用场景、缺点

5、MySQL的复制原理以及流程

6、读写分离有哪些解决方案?

7、备份计划,mysqldump以及xtranbackup的实现原理

8、数据表损坏的修复方式有哪些?

全部评论

相关推荐

评论
1
13
分享

创作者周榜

更多
牛客网
牛客企业服务