无意中看到阿里巴巴的面试题,,借此回首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面试题答案(欢迎进来讨论)相关推荐

  1. mysql dba面试题及答案_阿里巴巴MySQL DBA面试题答案(欢迎进来讨论)

    无意中看到阿里巴巴的面试题,,借此回首DBMS时刻趁热打铁巩固一下基础 拿到题目大概浏览了一遍难度大概在中上游水平,自己跪了接近35%的题目 自己答题如下,欢迎大家讨论分析题1.MySQL的复制原理以 ...

  2. 阿里巴巴mysql dba面试题_阿里巴巴MySQL DBA面试题

    1.MySQL的复制原理以及流程 (1).先问基本原理流程,3个线程以及之间的关联: (2).再问一致性延时性,数据恢复: (3).再问各种工作遇到的复制bug的解决方法. 2.MySQL中myisa ...

  3. 阿里巴巴公司DBA笔试题

    阿里巴巴公司DBA笔试题 注:以下题目,可根据自己情况挑选题目作答,不必全部作答.您也可以就相关问题直接找负责面试人员面述而不笔答          一:SQL  tuning  类          ...

  4. 阿里巴巴公司 DBA笔试题及参考答案

    一:SQL tuning 类 1:列举几种表连接方式 hash join/merge join/nest loop(cluster join)/index join 2:不借助第三方工具,怎样查看 s ...

  5. 深度剖析!阿里巴巴社招面试题答案总结分享,希望对大家有帮助!

    阿里巴巴研发面经 阿里中间件研发面经 研发工程师(Java) 阿里一面: 1 自我介绍 2 项目中做了什么,难点呢. 3 Java的线程池说一下,各个参数的作用,如何进行的. 4 Redis讲一下 5 ...

  6. mysql dba 试题_mysql dba面试题及答案.docx

    mysql dba面试题及答案 mysql dba面试题及答案 1, mysql的复制原理以及流程. (1)先问基本原理流程,3个线程以及之间的关联. (2)再问一致性,延时性,数据恢复. (3)再问 ...

  7. mysql dba 试题_mysql dba面试题及答案

    1, mysql的复制原理以及流程. (1)先问基本原理流程,3个线程以及之间的关联. (2)再问一致性,延时性,数据恢复. (3)再问各种工作遇到的复制bug的解决方法 3,问mysql中varch ...

  8. 历史笔记记录之 MySQL DBA 面试题目 答疑记

    MySQL DBA 面试题解惑 一个朋友发了帖子,询问一些mysql dba面试题,回答的人比较少,他把地址给了我,只是我没有那个网站的账号,所以就整理下发在我的blog里面,大家可以参考下,也欢迎提 ...

  9. MySQL常见面试题及答案汇总1000道(春招+秋招+社招)

    MySQL面试题以及答案整理[最新版]MySQL高级面试题大全(2021版),发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面 ...

最新文章

  1. Sci-Hub重生了,这回用上了分布式网络
  2. python中关于list列表的增删查改操作
  3. Python 编程系列
  4. android 仿京东toolbar,仿京东商城系列2------自定义toolbar
  5. IPC经典入侵,比3389实用(图)
  6. JS 装饰器(Decorator)场景实战
  7. 方立勋_30天掌握JavaWeb_jdbc实现客户关系管理(未完)
  8. 编译cvaux错误的原因
  9. [Unity]限制两个物体之间的距离
  10. 一篇文章,带你见证编程语言的诞生!
  11. 信息系统项目管理05——项目范围管理
  12. 全向轮机器人直线运动分析
  13. 【洛谷 P4291】 [HAOI2008]排名系统(Splay,Trie)
  14. 潜利KINGLEE触摸屏维修喷码机显示屏电脑
  15. 我是如何利用一个只有500人的QQ通过人性的弱点来变现的
  16. 使用Draw免费在线作图
  17. Unix编程艺术:哲学基础
  18. 读书百客:《圆圆曲》评赏
  19. 2022年黑客书籍推荐
  20. JMeter——》调整界面比例、字体大小

热门文章

  1. DBI接口和DPI接口的区别
  2. Android-动画-view 动画笔记
  3. .Net快速获取网络文本文件最后一段文字-小应用
  4. 1002. 三角形 (
  5. java使用smartupload组件实现文件上传的方法
  6. 更改VMware虚拟机硬件版本
  7. 深入理解iPhone委托模式兼谈iPhone生命周期
  8. 【斐波那切数列】LeetCode 70. Climbing Stairs
  9. PTA--Reversing Linked List
  10. 关于显式量化和隐式量化的英文对照