mysql面试15问?

1.数据库三大范式是什么?

答:

第一范式:每个列都不可以在拆分

第二范式:在第一范式的基础上非主键完全依赖于主键,而不是依赖主键的一部分

第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键

温馨提示:设计数据库时尽量遵守第三范式,如不遵守,必须有足够的理由 ,比如性能

2.mysql有关权限的表有几个?

答:

mysql服务器通过权限表来控制 用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化

user权限表:记录允许连接到服务器的用户账号信息,里面的权限是全局的

db权限表:记录各个账号在各个数据库上操作的权限

table_priv权限表:记录数据表级的操作权限

columns_priv权限表:记录数据列级的操作权限

host权限表:配合db权限表对给定主机上数据库级操作权限更细致的控制。这个权限表不受grant和revoke语句的影响

3.事务的四大特性(ACID)介绍

答:

原子性:事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用

一致性:执行事务后,数据保持一致,多个事务对同一个数据读取的结果是相同的

隔离性:并发访问数据库时,一个用户的事务不被其他事务所干扰

持久性:一个事务被提交之后,它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响

4.SQL语句主要分为哪几类?

答:

数据定义语言DDL,create,drop,alter等操作语言

数据查询语言DQL,例如select语句

数据操纵语言DML,insert,update,delete等增删改查操作

数据控制功能DCL,grant,revoke,commit,rollback等对数据库安全性完整性等操作(权限控制)

5.MySQL分库分表的目的是?
答:

目的是为了解决由于数据量过大而导致数据库 性能降低的问题

6.什么是死锁?怎么解决?

答:

死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环得现象

解决死锁的方法:(1)如果不同程序会并发存取多个表 ,尽量约定以相同的顺序访问表,可以大大 降低死锁机会

(2)在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率

(3)对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率

如果业务处理不好可以用分布式事务锁或者使用乐观锁

7.什么是脏读?幻读?不可重复读?

答 :

脏读:某个事务已更新一份数据,另一个事务在此读取了同一份数据,由于某些原因,前一个rollback了操作,则最后一个事务所读取的数据就会是不正确的

不可重复读:在一个事务的两次查询之中不一致,这可能是两次查询过程中间插入了一个事务更新的原有数据

幻读:在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的

8.视图有哪些特点?

答:

(1)视图的列可以来自不同的表

(2)视图是由基本表(实表)产生的表(虚表),视图的删除建立不影响基本表

(3)对视图内容的更新(添加、修改、删除)直接影响基本表

(4)当视图来自多个基本表时,不允许添加和删除数据

(5)视图的操作包括创建视图,查看视图,删除视图和修改视图

9.SQL的生命周期?

答:

(1)应用服务器与数据库服务器 建立一个连接

(2)数据库进程拿到请求sql

(3)解析并生成执行计划,执行

(4)读取数据到内存并进行逻辑处理

(5)通过(1)的连接,发送结果到客户端

(6)关掉连接,释放资源

10.主键使用自增id还是uuid?

答:

推荐使用自增id(在数据量大一些的情况下)

11.mysql数据库飙升到100%怎么处理?

答:

使用操作系统命令查看是不是mysql导致的,找出相关高进程,并进行处理

12.MySQL主从复制解决哪些问题?

答:

主从复制的作用:主数据库出现问题,可以切换到从数据库 ,可以进行数据库层面的读写分离,可以在从数据库上进行日常备份

数据分布:随意开始或停止复制,并在不同地理位置分布数据分布

负载均衡:降低单个服务器的压力

高可用和故障切换:帮助应用程序避免单点失败

升级测试:可以用更高版本的MySQL作为从库

13.什么是MySQL的GTID?

答:

GTID是由uuid+tid组成的,代表了该实例上已经提交的事务数量,并且随着事务提交单调递增

14.MySQL常用的备份工具有哪些?

答:

常用备份工具、逻辑备份、物理备份

mysql复制的数据更加实在

逻辑备份:分表容易,mysqldump备份数据时是将SQL语句按照表拆分成单个sql文件,每个sql文件对应一个完整的表

物理备份:copy即可用,速度快

15.MySQL备份计划如何制定?

答 :

100G以内的考虑用mysqldump(轻巧灵活)来做,可以每天进行全量备份,备份出来的文件小

100G以上的库,可以用xtranbackup来做,备份速度更快哦

一般来说一周一备份,其余进行增量备份

猜你喜欢

转载自blog.csdn.net/qq_57146982/article/details/127490395