面试必备的10道MySQL题
MySQL 事务,是我们去面试中高级开发经常会被问到的问题,很多人虽然经常使用 MySQL,SQL 语句也写得很溜,但是面试的时候,被问到这些问题,总是不知从何说起。下面我们先来了解一下什么是 MySQL事务,再给大家分享10道面试必备的MySQL题。
MySQL事务是数据处理的最小操作单元,是一组不可在分割的操作集合,这个操作单元里的一系列操作要么都成功,要么都失败。
1、MySQL主从复制的原理。
(1)、主库必须开启二进制日志
(2)、当有增删改的语句时,会记录到主库的binlog中
(3)、主库通过IO线程把binlog里面的内容传给从库的relay binlog(中继日志)(这是msyql复制是异步复制的原因)
(4)、从库的sql线程负责读取它的relay log里的信息并应用到数据库中 2、Seconds_Behind_Master的原理。 表示sql线程和io线程之间的时间差 具体的计算:从库服务器当前的时间戳与二进制日志中的事件的时间戳相对比得到的,所以只有在执行事件时才能报告延迟。 不足: 一些错误(例如主备的max_allowed_packet不匹配,或者网络不稳定)可能中断复制,由于主从复制是异步操作,Seconds_Behind_Master可能显示为0 3、主从延迟的主要原因有哪些?
(1)、慢SQL语句过多
(2)、从库的硬件比主库差
(3)、同一个主库下有过多的从库
(4)、网络延迟
(5)、表分区过多 (还有一些原因,欢迎补充) 4、MySQL常见存储引擎及各自特点。
(1)、InnoDB 支持事务、行级锁、支持外键约束,主要面向OLTP的应用,使用next-key locking 的策略来避免幻读现象的产生.
(2)、MyISAM 不支持事务、表锁设计、支持全文索引、读写互相阻塞、不支持外键约束;主要面向OLAP应用场景;缓存池只缓存索引文件,不缓存数据文件
(3)、Memory 将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。如果数据库重启或者奔溃,数据都将丢失。
(4)、TokuDB 支持事务、高压缩、告诉读写、基于稀疏树索引设计;支持大多数在线修改索引、添加字段。
(5)、Inforbright/infinidb 列式存储、高压缩、单列查询快 5、innodb_flush_log_at_trx_commit参数0、1和2分别代表什么? innodb_flush_log_at_trx_commit参数可以控制将redo log buffer中的更新记录写入到日志文件以及日志文件刷新到磁盘的操作时机。 0 每秒一次触发log buffer写入log file中,并且log file刷新到磁盘。 (由于进程调度问题,不能保证每秒100%刷新;如果mysql进程崩溃,可能会丢失1s的事务;效率最高,但最不安全) 1 每次事务提交触发log buffer写入log file中,并且log file刷新到磁盘。 2 每次事务提交,log buffer写入log file中;每秒log file刷新到磁盘。 (如果操作系统崩溃或者停电,可能会丢失1s的事务) 6、Mysql中varchar和char的区别 CHAR列的长度固定为创建表时声明的长度,范围(0-255) VARCHAR列的长度不固定,范围(0-65535) 7、varchar(50)中的50代表的含义、int(20)中20的含义。 varchar(50)中的50代表最多能存放50个字符 int(20)中20的含义表示显示宽度,跟着zerofill一起才有意义 8、MySQL binlog的几种日志录入格式的涵义、适用场景和在复制中的优劣。 (1)、statement level模式 每一条会修改数据的sql都会记录到master的binlog中,slave在复制时sql进程会解析成和原来master端执行过的相同的sql再次执行。 适用场景:对主从数据一致性要求不太高,并且很少用到函数、存储过程、触发器等场景 优点:bin-log日志量少 缺点:部分新功能(函数、存储过程、触发器)同步会有障碍,比如now() (2)、row level模式 日志中会记录成每一行数据被修改的形式,然后再slave端再对相同的数据进行修改 适用场景:对主从数据一致性要求比较高的场景。 优点:记录的详细 缺点:binlog日志量过大 (3)、mixed模式 MySQL默认采用statement格式进行二进制日志文件的记录,但是在一些情况下会使用row格式,可能的情况有: 1)、表的存储引擎为NDB,此时对表的DML操作都会以ROW格式记录 2)、使用了UUID(),USER(),CURRENT_USER(),FOUND_ROWS(),ROW_count()等不确定函数时 3)、使用了insert delay语句 4)、使用了用户定义函数(UDF) 5)、使用了临时表 适用场景:对主从数据一致性要求不太高,可能会用到函数、存储过程、触发器等场景 优缺点介于statement和row模式之间 9、重做日志和二进制日志的区别(至少三点)
(1)涉及存储引擎不一样: binlog记录的是所有存储引擎的操作记录 redo log只记录innodb存储引擎的日志
(2)记录内容不一样: binlog记录的是关于一个事务的具体操作内容。为逻辑日志 而redo log记录的是每个页更改的物理情况
(3)写的时间不一样: binlog文件仅在事务提交前进行提交,即只写磁盘一次 而在事务进行过程中,却不断有重做日志条目被写入到重做日志文件中。 10、Explain执行计划中要关注哪些要素?
(1)、type:本次查询表联接类型,从这里可以看到本次查询大概的效率
(2)、key:最终选择的索引,如果没有索引的话,本次查询效率通常很差
(3)、key_len:本次查询用于结果过滤的索引实际长度
(4)、rows:预计需要扫描的记录数,预计需要扫描的记录数越小越好
(5)、extra:额外附加信息,主要确认是否出现 Using filesort、Using temporary 类似情况
以上10道MySQL面试题,只是众多MySQL面试题中的部分,个人认为是比较典型的,出现频率也比较高的试题,希望对你们有帮助!
面试必备的10道MySQL题的更多相关文章
- MySQL工具:管理员必备的10款MySQL工具
MySQL是一个复杂的的系统,需要许多工具来修复,诊断和优化它.幸运的是,对于管理员,MySQL已经吸引了很多软件开发商推出高品质的开源工具来解决MySQL的系统的复杂性,性能和稳定性,其中大部分是免 ...
- mysql:10道mysql查询语句面试题
表结构 学生表student(id,name) 课程表course(id,name) 学生课程表student_course(sid,cid,score) 创建表的sql代码 ```sql creat ...
- 手撕面试官系列(十):面试必备之常问Dubbo29题+MySQL55题
Dubbo专题 (面试题+答案领取方式见侧边栏) 1.Dubbo 支持哪些协议,每种协议的应用场景,优缺点?2.Dubbo 超时时间怎样设置?3.Dubbo 有些哪些注册中心?4.Dubbo 集群的负 ...
- 10道mysql查询语句面试题
1.https://www.yanxurui.cc/posts/mysql/10-sql-interview-questions/ 2.http://mm.fancymore.com/reading/ ...
- 手撕面试官系列(十一):BAT面试必备之常问85题
JVM专题 (面试题+答案领取方式见侧边栏) Java 类加载过程? 描述一下 JVM 加载 Class 文件的原理机制? Java 内存分配. GC 是什么? 为什么要有 GC? 简述 Java ...
- 面试必备的13道可以举一反三的Vue面试题
Vue框架部分我们会涉及一些高频且有一定探讨价值的面试题,我们不会涉及一些非常初级的在官方文档就能查看的纯记忆性质的面试题,比如: * vue常用的修饰符? * vue-cli 工程常用的 n ...
- Linux运维跳槽必备的40道面试精华题(转)
Linux运维跳槽必备的40道面试精华题(转) 下面是一名资深Linux运维求职数十家公司总结的Linux运维面试精华,助力大家年后跳槽找个高薪好工作. 1.什么是运维?什么是游戏运维? 1)运维 ...
- 金九银十跳槽高峰,面试必备之 Redis + MongoDB 常问80道面试题
前言 有着“金九银十”之称的招聘旺季已经开启,跳槽高峰期也如约而至. 本文为主要是 Redis + MongoDB 知识点的攻略,希望能帮助到大家. 内容较多,大家准备好耐心和瓜子矿泉水. Redis ...
- 可能是全网最好的MySQL重要知识点 | 面试必备
可能是全网最好的MySQL重要知识点 | 面试必备 mp.weixin.qq.com 点击蓝色“程序猿DD”关注我 回复“资源”获取独家整理的学习资料! 标题有点标题党的意思,但希望你在看了文章之后 ...
随机推荐
- linux 读取文件
linux读取文件是经常要用到的操作,以下示例(说明看注释): #读取文件snlist.txt中的每一行内容赋给sn变量 while read sn do echo ">>> ...
- WinDbg常用命令系列---线程栈中局部上下文切换.frame
.frame (Set Local Context) .frame命令指定使用哪个本地上下文(作用域)解释本地变量或显示当前本地上下文. .frame [/c] [/r] [FrameNumber] ...
- 解决configure: WARNING: You will need re2c 0.13.4 or later
我在安装rabbitmq php扩展的时候发现 configure: WARNING: You will need re2c 0.13.4 or later if you want to regene ...
- 数据分析师(Data Analyst),数据工程师(Data Engineer),数据科学家(Data Scientist)的区别
数据分析师(Data Analyst):负责从数据中提取出有用的信息,以帮助公司形成业务决策.工作内容包括:对数据进行提取,清洗,分析(用描述统计量,趋势分析,多维度分析,假设检验等统计常用方法对数据 ...
- linux命令之------Chown命令
Chown命令 1) 作用:将指定文件的拥有者改为指定的用户或组. 2) -c:显示更改的部分的信息. 3)-f:忽略错误信息. 4)-h:修复符号链接. 5)-v:显示详细的处理信息. 6)-R:处 ...
- SQL基础-约束&索引
一.约束 1.约束简介 约束(constraint): 表中数据的限制条件. 完整性 有效性 约束的种类: 主键约束 外键约束 唯一约束 检查约束 非空约束 2.主键约束 主键约束: 唯一标识表中每一 ...
- mapreduce中reduce没有执行
hadoop执行mapreduce过程reduce不执行原因 1.如果你的map过程中没有context.write()是不执行reduce过程的:2.如果你的map过程中context.write( ...
- Linux+Apache环境下安装SSL证书
一.安装证书 (温馨提示:安装证书前请先备份您需要修改的服务器配置文件) 1.确认证书文件及证书路径. 例证书文件为:zzidc.com.jks,放置目录为Tomcat的conf目录下. 2.配置 ...
- D3.js的v5版本入门教程(第四章)—— 理解Update、Enter、Exit
D3.js的v5版本入门教程(第四章) Update.Enter.Exit是D3.js中很重要的概念,下面来讲一下它们到底是什么?(当你看完后.你就会知道如果数据集个数和选择集个数不匹配的情况下使用d ...
- 一、JavaScript基础
一.区分大小写 ECMAScript中的一切(变量.函数名和操作符)都区分大小写,(js用于行为交互.数据交互.逻辑交互) 二.标识符 指变量.函数.属性的名字,或者函数的参数 命名规则:1.第一个字 ...