我面试一位女程序员被吊打了!

见字如面,我是军哥!

昨天发布了一个短视频是关于 MySQL 性能优化,我觉得内容很干很不错,分享给各位,一共 6 问,层层递进,我相信你会很过瘾的。追求短平快可以看下面视频,因为短视频时间限制,下面分享的文字是 8问,你可以做深度思考。

面试官:工作3年就应聘我们公司的后端P7技术专家,你哪来的自信,你确定么? 

候选人:是的, 没错。 

面试官:讲真你3年经验是没面试机会的,但看简历上写你多次处理线上数据库事故, 这个面试题是夺命连环8连问,看你能扛住几问?问题是你负责的系统生产环境卡顿,初步排查是MySQL性能瓶颈,第一步怎么做?

候选人:面试官,这个很简单呀,从慢查询日志开始,使用(slow query log)定位具体的慢 SQL ,还会分析执行计划。重点关注慢SQL啊、是否全表扫描、是否选择了不合适的索引等。

面试官:小姑娘可以呀,第二问,假如发现一个查询的执行计划,应该走索引没走,咋办?

候选人:这里的原因可能是查询条件使用了函数、隐式转换或者其他导致优化器选择错了。我会通过 EXPLAIN 计划中 key_len 、 rows 等字段来找原因,还会查看是不是表的错误统计信息导致出了问题。 

面试官:可以可以,你及格了,第三问,假如在索引层面优化后依然存在性能问题,比如高并发下锁等待频繁,又咋办?

候选人:这个问题也简单,假若是InnoDB引擎,

1、可以考虑减少事务范围以降低锁等待,

2,可适当的修改隔离级别(如已提交读代替可重复读)还可以在 底层修改InnoDB的Buffer Pool的配置,适当增大innodb_buffer_pool_size 。

3、同时分配多实例innodb_buffer_pool_instances,优化Buffer Pool中的⻚缓冲管 理,从而减少磁盘访问

4、通过精确控制 innodb_io_capacity 和innodb_io_capacity_max ,可以将I/O线程的负载限制在合理范围

面试官:不错有两把刷子,第4问,发现一个事务涉及多个表的多次复杂联表查询,执行缓慢且I/O负载较大,要怎么办?

候选人:这个也不太难,有三种办法,

1、最经常用的办法是对于复杂的多表关联查询,可以将大查询拆分成小查询,并引入中间结果缓存,降低I/O和锁竞争。

2、对于死锁问 题,可以通过SHOW ENGINE INNODB STATUS来分析死锁日志,优化事 务代码避免锁定顺序冲突。

3、更进一步,可以将⻓事务拆分为多个小事务执行,减少锁持有时间 

面试官:优秀优秀呀,第5问,如果面对数据量巨大、查询依然较慢的问题,怎么解决? 

候选人:首先看你数据库表是采用水平还是垂直分片。比如根据用户id来进行水平切分将数据分布到多数据库实例。或者对多个宽表进行列切分,将高频访问数据列和不高频数据列分开,降低对主表的I/O开销。甚至可以水平和垂直一起,但垂直拆分对业务代码的侵入较大。

面试官:我们继续深挖,第六问,你会如何确保证分片事务的数据一 致性?

候选人:主要有2种。一种在数据库层面的2pc或3pc 的分布式事务机制,另一种就是在业务层面基于TCC模型的事务补偿机制。

 面试官:第7问,那么又发现大量查询导致CPU使用率飙升且上下波动明显,又怎么 办?(考察MySQL的查询优化器的使用 )

候选人: MySQL查询优化器通过代价模型(Cost Model)选择执行路径, CPU使用率过高可能是优化器错误选择了执行计划。通过设置optimizer_switch 参数调整优化策略,避免不必要的回表。对于⻓查 询,可以使用优化器提示(如STRAIGHT_JOIN、USE INDEX)控制执 行路径。此外,可以适当调整 query_cache_size 和query_cache_type ,尽量避免频繁查询缓存失效,减少查询计划的重算负载 。

面试官:最后一问,在生产环境中如何设计MySQL的高可用方案呢?

候选人:在生产环境中,部署主从复制(Master-Slave)或双主复制 (Master-Master)模式,通过GTID实现复制的可靠性,并借助MHA、 Orchestrator实现自动化故障转移。为了保证数据的实时性与一致性, 可以使用半同步复制降低数据丢失⻛险。容灾方面,可以结合阿里云、 AWS等云服务实现异地多活,借助云端的存储快照备份与容灾,确保数 据的持久性和可恢复性。

讲真,这个女程序员数据库知识很扎实,我问不倒呀,各位你们留言一个问题问倒她。

综上,希望今天这篇文章对你帮助!

全文完,觉得我说的不错的话点个赞或者在看吧!

最后,上周六连麦直播了一次,效果非常好,用户平均直播间停留时间25分钟,一群人排队来连麦,给大家解决问题的感觉太好了,这周六继续!

所以,你若有工作上/者找工作困难的/职业上的困惑/转型的,或想搞个副业无从下手,或快 35 岁了还在一线当大头兵不知道如何破局?等问题都可以来。

欢迎本周六晚上 21 点来直播间「语音连麦」,当然欢迎你带着你的其他个性问题来直播间提问,我知无不言,我们不见不散哈~

以往热文推荐:

真实案例:两位程序员压力大到睡不着,莫慌军哥来解惑!


更多精彩,关注我公号,一起学习、成长

08b9110bc72b13312a90889525073d60.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值