阿里巴巴MySQL DBA面试题答案(欢迎进来讨论)
无意中看到阿里巴巴的面试题,,借此回首DBMS时刻趁热打铁巩固一下基础
拿到题目大概浏览了一遍难度大概在中上游水平,自己跪了接近35%的题目
自己答题如下,欢迎大家讨论分析题
1、MySQL的复制原理以及流程
.
(1)、先问基本原理流程,3个线程以及之间的关联;
.从 发起请求I/O thread线程请求 主主 接收到请求使用binlog dump线程回应 从从 I/O thread线程将请求接收下来保存为中继日志从 再开SQL thread线程将中继线程保存为执行日志
.
(2)、再问一致性延时性,数据恢复;( 每个人角度不同 )
.出发点 是否使用工具 业务线是否正常 备份恢复成本 一致性热备份 借助 细微影响 偏高 组合才能完全温备份 借助 受一部分 中等 完全冷备份 无 停滞 较低 完全
.mysqldumpinnodb热备 结合binlog 启动大事务innodb温备 最好锁定表(若有事务则需要结合binlog)
.数据恢复: 通常情况下 每周完整 + 周中的增量or差异 + 新的binlog
.
(3)、再问各种工作遇到的复制bug的解决方法。手抖将同步时间改太短,导致cpu空转主主模式主键重复,调整auto_instcrment.
.
2、MySQL中myisam与innodb的区别,至少5点
.
(1)、问5点不同;
.事务有无多版本控制行锁热备份崩溃恢复
.
(2)、问各种不同mysql版本的2者的改进;
.同(1)问缺什么补什么innodb -> xtradb 性能上的myisam -> aria 崩溃恢复
.
(3)、2者的索引的实现方式。
.btree InnoDB,MyISAM 左节点小于右节点,提高查询效率rtree MyISAM btree是2维结构,,那么rtree多于3维
.
.
3、问MySQL中varchar与char的区别以及varchar(50)中的30代表的涵义
.
(1)、varchar与char的区别;
.同宽度填不填充0的问题,varchar变长
.
(2)、varchar(50)中50的涵义;
.长度50字符
.
(3)、int(20)中20的涵义;( 跪了,看了几年了一直没去理解过 - -! )
.显示宽度 int 4字节 建好字段后为 int(11) 最大表示 -21亿 - +21亿 这是11位哦 int(20) 无意义,这是这么一问
.
(4)、为什么MySQL这样设计。(没看明白)
.
[备注] 本人也面试了近12个2年MySQL DBA经验的朋友,没有一个能回答出第(2)、(3)题
.
.
.
4、问了innodb的事务与日志的实现方式
.
(1)、有多少种日志;
.错误,查询,超时查询,二进制,中继,事务
.
(2)、日志的存放形式;
.table,file
.
(3)、事务是如何通过日志来实现的,说得越深入越好。(总觉得不够!!)
.
.流程: 事务发起 -> 内存buffer(提高性能不能一直写磁盘啊) -> 事务日志 -> 磁盘数据.事务日志到磁盘的过程可能会出意外,,再次恢复服务后,,事务日志中事务会自动状态同步到磁盘
.
5、问了MySQL binlog的几种日志录入格式以及区别
.
(1)、各种日志格式的涵义;
.statement语句格式 只是语句状态信息 省空间 适应性强 无法精确复制(触发器,函数)row行格式 能够实现几乎所有的复制场景 较少的cpu占用率 无法准确得知操作 浪费空间mixed混合格式 怎么方便怎么来 常用
.
(2)、适用场景;(自己领悟...)
.屌丝服务器土豪服务器文艺服务器
.
(3)、结合第一个问题,每一种日志格式在复制中的优劣。
.语句: 可能会造成数据不一致行: 日志文件偏大,不易存储转移,恢复也可能比较慢混合: 理论上结合两者特点
.
6、问了下MySQL数据库cpu飙升到500%的话他怎么处理?
.
(1)、没有经验的,可以不问;(如果问到我肯定要选这个啊...)
.
(2)、有经验的,问他们的处理思路。
.列出所有进程 show processlist 观察所有进程 多秒没有状态变化的(干掉)查看超时日志或者错误日志 (做了几年开发,一般会是查询以及大批量的插入会导致cpu与i/o上涨,,,,当然不排除网络状态突然断了,,导致一个请求服务器只接受到一半,,比如where子句或分页子句没有发送,,当然的一次被坑经历)
.
.
7、sql优化
.
(1)、explain出来的各种item的意义;(一谈优化脑海就是sql语句袭来,,索引重建!!!)
.分析当前的select语句,,select_type 当前查询的类型(简单or连接or组合or子查询)rows 做笛卡尔积要组合的行extra 额外信息(其余的实在没记住)
.考虑将面试官带上其他话题 优化sql中 : )where 不必要的括号,常量重叠,去除常量条件范围优化 少用like啊 根据当前的索引选定不同的范围条件啊多关键字优化 is null, distinct, left/right join, join, union,order by,group by,limit小表不需要索引: select * from table force index(index_name) where索引合并优化 select * from table ignore index(indexname1,indexname2) 一张表有多索引,忽略几个在查,可能提高性能
.
(2)、profile的意义以及使用场景;(没看台明白)
.
(3)、explain中的索引问题。(一问中回答过,,只能说之前的做法是 存储过程+算法)编译过的sql语句还是相当能提升性能的还有就是组织一些特有的数据构成 (升序 or 树结构 or ...)这样在过程中加入一些算法(二分,排序树)进行优化,效果还是比较明显
.ps: oracle中专门有rank,percent_rank这些函数处理数据得以于初出茅庐之时为当时国字号企业做的一个'大'数据项目 14W/min对当时的我来说,天文数字,学到不少东西
.
8、备份计划,mysqldump以及xtranbackup的实现原理
.mysqldump 做之前要日志滚动,记录同步位置,请求锁xtranbackup 没有锁表,将二进制,事务日志都备份下来,之后必要要做准备,才能用于还原
.
(1)、备份计划;
.前面说过了..当然因业务,实际需求,场景做动态规划
.
(2)、备份恢复时间;(没看太明白)
.但是最好在恢复的时候不要进行写操作
.
(3)、备份恢复失败如何处理。
.检查日志排除问题,如果不行删除当前所有数据文件(不包括二进制哦),利用之前完整备份 + 增量 + 二进制再次重试
.
9、500台db,在最快时间之内重启
.shell脚本, ansible工具
.
10、在当前的工作中,你碰到到的最大的MySQL DB问题是?(对于这个实在没经验)
.
.
11、innodb的读写参数优化(跪了,,顺手去查询分析的)
.
(1)、读取参数,global buffer pool以及 local buffer;
.全局缓存池(类似oracle的RAC)局部缓存器(针对session进行缓存)
.
(2)、写入参数(不明白);
.
(3)、与IO相关的参数;
.innodb_read_io_threads 读io的线程数innodb_io_capacity io总量????innodb_write_io_threads 写io的线程数innodb_use_native_aio 实现aio就是纯异步
.
(4)、缓存参数以及缓存的适用场景。
.cache大小,cache区块大小,单目标最大,cache区块总大小(单词忘记了 查 query_cache)
.
12、请简洁地描述下MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
.read uncommitted 可读到未提交数据read committed 读到提交过后的数据REPEATABLE-READ 可重读数据serialization 串行化读完数据
.(后面送的 :)更高级的隔离级别snapshot committer 快照级别一致性提交隔离snapshot 快照读取
.
13、表中有大字段X(例如:text类型),且字段X不会经常更新,以读为为主,请问
.
(1)、您是选择拆成子表,还是继续放一起;
.拆带来的问题 不拆可能带来的问题连接消耗 + 存储拆分空间 VS 查询性能
.如果能容忍拆分带来的空间问题,,,拆的话最好和经常要查询的表的主键在物理结构上放置在一起(分区) 顺序IO,减少连接消耗,,,最后这是一个文本列 再加上一个全文索引来尽量抵消连接消耗
.如果能容忍不拆分带来的查询性能损失的话:上面的方案在某个极致条件下肯定会出现问题,那么不拆就是最好的选择
.
(2)、写出您这样选择的理由。
.已填 (观察过国内外论坛项目的数据库设计,,好像没看见谁拆过,,,感觉想多了,,要不就是我记错了,,,还需要再考证)
.
14、MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的?为什么是这样子的?(跪了,google一下)
.(这是我自己不知道答案前YY的,不要当真)程序做这样的处理一般都会用单例模式多次锁定(保
持当前对象的状态值),数据库也类型处理吧!!将当前行状态标记为锁定中..还有那一个线程锁的..
.google了一下,, InnoDB是基于索引来完成行锁例: select * from tab_with_index where id = 1 for update;for update 可以根据条件来完成行锁锁定,并且 id 是有索引键的列,如果 id 不是索引键那么InnoDB将完成表锁,,并发将无从谈起
.
.
.
转载于:https://blog.51cto.com/apprentice/1394494
阿里巴巴MySQL DBA面试题答案(欢迎进来讨论)相关推荐
- mysql dba面试题及答案_阿里巴巴MySQL DBA面试题答案(欢迎进来讨论)
无意中看到阿里巴巴的面试题,,借此回首DBMS时刻趁热打铁巩固一下基础 拿到题目大概浏览了一遍难度大概在中上游水平,自己跪了接近35%的题目 自己答题如下,欢迎大家讨论分析题1.MySQL的复制原理以 ...
- 阿里巴巴mysql dba面试题_阿里巴巴MySQL DBA面试题
1.MySQL的复制原理以及流程 (1).先问基本原理流程,3个线程以及之间的关联: (2).再问一致性延时性,数据恢复: (3).再问各种工作遇到的复制bug的解决方法. 2.MySQL中myisa ...
- 阿里巴巴公司DBA笔试题
阿里巴巴公司DBA笔试题 注:以下题目,可根据自己情况挑选题目作答,不必全部作答.您也可以就相关问题直接找负责面试人员面述而不笔答 一:SQL tuning 类 ...
- 阿里巴巴公司 DBA笔试题及参考答案
一:SQL tuning 类 1:列举几种表连接方式 hash join/merge join/nest loop(cluster join)/index join 2:不借助第三方工具,怎样查看 s ...
- 深度剖析!阿里巴巴社招面试题答案总结分享,希望对大家有帮助!
阿里巴巴研发面经 阿里中间件研发面经 研发工程师(Java) 阿里一面: 1 自我介绍 2 项目中做了什么,难点呢. 3 Java的线程池说一下,各个参数的作用,如何进行的. 4 Redis讲一下 5 ...
- mysql dba 试题_mysql dba面试题及答案.docx
mysql dba面试题及答案 mysql dba面试题及答案 1, mysql的复制原理以及流程. (1)先问基本原理流程,3个线程以及之间的关联. (2)再问一致性,延时性,数据恢复. (3)再问 ...
- mysql dba 试题_mysql dba面试题及答案
1, mysql的复制原理以及流程. (1)先问基本原理流程,3个线程以及之间的关联. (2)再问一致性,延时性,数据恢复. (3)再问各种工作遇到的复制bug的解决方法 3,问mysql中varch ...
- 历史笔记记录之 MySQL DBA 面试题目 答疑记
MySQL DBA 面试题解惑 一个朋友发了帖子,询问一些mysql dba面试题,回答的人比较少,他把地址给了我,只是我没有那个网站的账号,所以就整理下发在我的blog里面,大家可以参考下,也欢迎提 ...
- MySQL常见面试题及答案汇总1000道(春招+秋招+社招)
MySQL面试题以及答案整理[最新版]MySQL高级面试题大全(2021版),发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面 ...
最新文章
- Sci-Hub重生了,这回用上了分布式网络
- python中关于list列表的增删查改操作
- Python 编程系列
- android 仿京东toolbar,仿京东商城系列2------自定义toolbar
- IPC经典入侵,比3389实用(图)
- JS 装饰器(Decorator)场景实战
- 方立勋_30天掌握JavaWeb_jdbc实现客户关系管理(未完)
- 编译cvaux错误的原因
- [Unity]限制两个物体之间的距离
- 一篇文章,带你见证编程语言的诞生!
- 信息系统项目管理05——项目范围管理
- 全向轮机器人直线运动分析
- 【洛谷 P4291】 [HAOI2008]排名系统(Splay,Trie)
- 潜利KINGLEE触摸屏维修喷码机显示屏电脑
- 我是如何利用一个只有500人的QQ通过人性的弱点来变现的
- 使用Draw免费在线作图
- Unix编程艺术:哲学基础
- 读书百客:《圆圆曲》评赏
- 2022年黑客书籍推荐
- JMeter——》调整界面比例、字体大小