面试必备的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”关注我 回复“资源”获取独家整理的学习资料! 标题有点标题党的意思,但希望你在看了文章之后 ...
随机推荐
- centos7部署postgresql集群高可用 patroni + etcd 之patroni篇
实验环境:centos7.4纯净版 postgres版本: 9.6.15 etcd版本:3.3.11 patroni版本:1.6.0 patroni介绍可参考:https://github.com/z ...
- xml的运用
<?xml version="1.0" encoding="utf-8"?><class> <student> <na ...
- docker容器配置加速器
1.编辑docker配置文件 vi /etc/docker/daemon.json 加入如下配置: {"registry-mirrors":["https://docke ...
- 开源项目(4-2)手势识别-Keras/Theano/OpenCV实现的CNN手势识别
https://github.com/asingh33/CNNGestureRecognizer 我提供了两种捕获模式: 二进制模式:在这里我首先将图像转换为灰度,然后应用高斯模糊效果和自适应阈值滤波 ...
- SpringBoot-设置定时任务
@Scheduled为设置定时任务的注解. 参数常用的为两种: 第一种是fixedRate,表示以一种固定频率去执行,单位为毫秒:例如@Scheduled(fixedRate = 5000) 表示为 ...
- 【JOISC2019|2019】【20190622】cake3
题目 \(N\) 个物品中选\(M\)个,排列成一个环:\(k_1,\cdots,k_M\)价值为: \[ \sum_{j=1}^{N}{V_i} - \sum_{j=1}^{M}|C_{k_j}- ...
- Maven 打包报错,log4j版本导致
# 在执行打包的时候 mvn clean assembly:assembly # 发生上面的错误 ------------------------------ [INFO] Total time: 2 ...
- spring 整合 servlet
目的:记录spring整合 servlet过程demo.(企业实际开发中可能很少用到),融会贯通. 前言:在学习spring 过程(核心 ioc,aop,插一句 学了spring 才对这个有深刻概念, ...
- clion 查看代码 多次查看后如何一步一步回退到最初查看的代码位置
在settings->keymap里面搜索navigate,然后就有蓝色字体的Back.Forward,这个两个有自己对应的快捷键,但是你有可能不能使用这个功能,因为在不同的操作系统里面,有可能 ...
- 【postman】api开发必备神器
1.使用参考:https://blog.csdn.net/fxbin123/article/details/80428216 2.win 下载地址:Postman for windows X64 ...