作者简介
小6,世界五百强产品出身,电商、零售、物流行业从业多年,从0到1搭建公司IT团队和内部系统,现任深圳某互联网公司IT负责人。
搭建IT团队让我有了丰富的面试经验,从产品、设计、技术、测试、DBA等,到专业、复试、HR面试,简历筛选超1000份,面试超100人,也让我意识到面试是有技巧的,关注小6,带你实战互联网求职面试!
今天我们分享几个的腾讯云DBA岗位的面试题和部分解析。



首先是连上连接器,负责跟客户端建立连接、获取权限、维持和管理连接。
分析器会先做词法分析。需要确定SQL语句中的字符串分表是什么,代表什么。
再做语法分析,判断输入的SQL是否满足MySQL语法。
再经过优化器,决定是否走索引,走哪个索引,或者决定关联表的顺序。
执行器负责具体的执行。
进入到存储引擎层。
首先查看数据页是否在缓存中,如果在,就读取数据,如果不在,就从磁盘中读取。
判断要操作的记录是否存在锁,如果存在,就等待。
如果不存在,就对要修改的记录行加锁。
再写Undo Log。
记录Redo Log,进入预提交状态。
修改内存中的记录。
记录Binlog。
提交事务,写入Redo Log。
最终Commit。
一种常规的方法就是 show slave status 查看 Seconds_Behind_Master,这个参数表示从库延迟的秒数。
如果是0,表示可能没有延迟。这里为什么是可能呢?
当从库正在主动处理更新时,此字段显示从库上的当前时间戳与从库上当前正在处理的事件的主库上记录的原始时间戳之间的差异。
当副本上当前没有处理任何事件时,该值为 0
在某些情况下,Seconds_Behind_Master 并不一定准确。比如网络中断时,Seconds_Behind_Master = 0 ,并不能代表主从无延迟。
因此,有比这个更准确的一种方法:对比位点或 GTID。
第二种:对比位点
如果是基于位点的复制,则判断 Master_Log_File 跟 Relay_Master_Log_File 是否相等,如果 Relay_Master_Log_File 落后 Master_Log_File,则表示主从存在延迟。
其中
Master_Log_File 表示 IO 线程正在读取的主库 binlog 文件名
Relay_Master_Log_File 表示SQL 线程最近执行的事务对应的主库 binlog 文件名
或者判断 Read_Master_Log_Pos 跟 Exec_Master_Log_Pos 是否相等,如果后者落后前者很多,则表示延迟比较高。
其中
Read_Master_Log_Pos 表示IO 线程正在读取的主库 binlog 文件中的位点
Exec_Master_Log_Pos 表示 SQL 线程最近读取和执行的事务对应的主库 binlog 文件中的位点
第三种:对比GTID
如果开启了 GTID 复制,则可以对比 Retrieved_Gtid_Set 和 Executed_Gtid_Set 是否相等,如果 Executed_Gtid_Set 落后很多,则表示存在延迟。
其中
Retrieved_Gtid_Set:从库收到的所有日志的 GTID 集合;
Executed_Gtid_Set:从库已经执行完的 GTID 集合。
其他几个题目,在星球中马听都有回答,感兴趣的可以进来看下。

当前已经60+用户,3天可以免费退款!现在加入,赠送有效期一年的模拟面试一次!技术、复试、HR面试任选!


当前有一些技术交流社群,比如DBA、MySQL、产品经理、AI应用等,还有小6互联网求职面试星球,有兴趣的可以加小苏。





