千家信息网

常见的MySQL面试题有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"常见的MySQL面试题有哪些",在日常操作中,相信很多人在常见的MySQL面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"常见的MySQL面
千家信息网最后更新 2026年11月02日常见的MySQL面试题有哪些

这篇文章主要介绍"常见的MySQL面试题有哪些",在日常操作中,相信很多人在常见的MySQL面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"常见的MySQL面试题有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1:你们公司数据库有备份的吧?

答:有的,因为单点故障的情况不可避免,所以我们公司有主从。面试官:那你知道主备、主从、主主有什么区别?

主备就是:主机和备机。

备机是不干活的,也就是不对外提供服务,只是默默地在同步主机的数据,然后等着某一天主机挂了之后,它取而代之!


至于切换的话主要有两种方式:

人工切换,得知主机挂了之后手动把备机切成主机,缺点就是慢。

利用 keepalived 或者自己写个脚本来作监控,然后自动切换。

主从就是主机和从机。

从机和备机的区别在于,它是对外提供服务的,一般而言主从就是读写分离,写请求指派到主机,读请求指派到从机。

主主就是两个都是主机


一般情况下都不会有主主的架构。

当同时有两个写请求达到分别打到两个主库同一张表的时候,则会同时创建一条记录,这条记录的 ID 是一样的,这样数据同步之后其中有一条就会被覆盖了,这会出问题的。

2:为什么要读写分离啊?

答:读写分离就是读操作和写操作从以前的一台服务器上剥离开来,将主库压力分担一些到从库。

本质上是因为访问量太大,主库的压力过大,单机数据库无法支撑并发读写。

然后一般而言读的次数远高于写,因此将读操作分发到从库上,这就是常见的读写分离。

读写分离还有个操作就是主库不建查询的索引,从库建查询的索引。

因为索引是需要维护的,比如你插入一条数据,不仅要在聚簇索引上面插入,对应的二级索引也得插入,修改也是一样的。

所以将读操作分到从库了之后,可以在主库把查询要用的索引删了,减少写操作对主库的影响。

3:你们读写分离是用中间件的还是代码封装的?

答:代码封装。

讲白了就是代码层面抽出一个中间层,由中间层来实现读写分离和数据库连接。

就是搞了个代理类,对外暴露正常的读写接口,里面封装了逻辑,将读操作指向从库的数据源,写操作指向主库的数据源。

优点:简单,并且可以根据业务定制化变化,随心所欲。

缺点:如果数据库宕机了,发生主从切换了之后,就得修改配置重启。如果系统是多语言的话,需要为每个语言都实现一个中间层代码,重复开发。

中间件

一般而言是独立部署的系统,客户端与这个中间件的交互是通过 SQL 协议的。

所以在客户端看来连接的就是一个数据库,通过 SQL 协议交互也可以屏蔽多语言的差异。

缺点就是整体架构多了一个系统需要维护,并且可能成为性能瓶颈,毕竟交互都需要经过它中转。

常见的开源数据库中间件有:官方的MySQL-Proxy、360的Atlas、Mycat 等。

4:MySQL 主从同步机制你知道吗?

答:主从同步主要依赖的就是 binlog,MySQL 默认是异步复制,具体流程如下:

主库:

  • 接受到提交事务请求

  • 更新数据

  • 将数据写到binlog中

  • 给客户端响应

  • 推送binlog到从库中

从库:

  • 由 I/O 线程将同步过来的 binlog 写入到 relay log 中。

  • 由 SQL 线程从 relay log 重放事件,更新数据

  • 给主库返回响应。


用一句话概括一下:主库提交事务会写binlog,会由一个 dump 线程推送给从库,从库接受之后会有一个I/O线程将其写到 relay log 中,慢慢消化,由 SQL 线程来重放更新数据。

异步复制有数据丢失风险,例如数据还未同步到从库,主库就给客户端响应,然后主库挂了,此时从库晋升为主库的话数据是缺失的。

所以有同步复制,主库需要将 binlog 复制到所有从库,等所有从库响应了之后才会给客户端响应,这样的话性能很差,一般不会选择同步复制。

MySQL 5.7 之后搞了个半同步复制,有个参数可以选择"成功同步几个从库就返回响应。"

比如一共有 3 个从库,我参数配置 1,那么只要有一个从库响应说复制成功了,主库就直接返回响应给客户端,不会等待其他两个从库。

这样的话性能就比较好,并且数据可靠性也增强了,只有当那个从库和主库同时都挂了,才会缺失数据。

5:主从同步延迟怎么处理啊?

答:从上图的流程就可以得知,延迟是必然存在的。

延迟过大的话就有可能出现一个用户刚注册,然后登陆报该用户不存在的....

因为数据是写到主库中的,查询走从库有可能还未来同步完毕,导致查不到这个用户。

这就非常不友好了。

常见解决方式有以下几种:

  • 二次查询。如果从库查不到数据,则再去主库查一遍,由 API封装即可,算是一个兜底策略,比较简单。不过等于读的压力又转移到主库身上了,如果有不法分子估计搞一下必定查不到的查询,这就难受了。

  • 强制将写之后立马读的操作转移到主库上。这种属于代码写死了,比如一些写入之后立马查询的操作,就绑定在一起,写死都走主库。不推荐,太僵硬了。

  • 关键业务读写都走主库,非关键还是读写分离。比如上面我举例的用户注册这种,可以读写主库,这样就不会有登陆报该用户不存在的问题,这种访问量频次应该也不会很多,所以看业务适当调整此类接口。

到此,关于"常见的MySQL面试题有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数据 就是 同步 主从 主机 常见 查询 客户 客户端 数据库 索引 代码 用户 线程 两个 中间件 切换 学习 封装 一般而言 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融监管科技数据 重庆互联网络科技 上海喔噻互联网科技 广州互联网络科技有限公司 互联网科技论坛 互联网前沿科技 蓝色互联网科技 上海电发互联网科技有限公司 创业天下互联网科技有限公司 小米互联网科技园设置 互联网还是高科技吗 速维有品互联网信息科技(苏州)有限公司 消费医药和互联网科技 用友工业互联网科技发展 工业互联网山东科技大学 互联网科技圈年度人物 版纳互联网科技选哪家 云南互联网科技学费 数字科技和互联网金融哪个好 华人运通互联网科技公司 互联网科技工作委员会 万易互联网科技 云电互联网科技 互联网 视角下的科技创新 南山科技园互联网公司有哪些 青岛科技大学互联网大赛研究生 广东鹅鹅鹅互联网科技有限公司 广西泛欧互联网科技有限公司 深圳互联网科技园地址 恒生科技指数 中概互联网
0