千家信息网

MySQL经典面试题

发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,提到MySQL 相信很多人都不陌生,MySQL 作为目前最流行的关系型数据库管理系统,在很多的应聘中,都会频繁被面试官问及。于是就自己总结了一些在面试中,经常面试官被提及的一些问题,希望能带给更多人帮
千家信息网最后更新 2024年11月21日MySQL经典面试题

提到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 类似情况

以上就是本次的分享,各位读者如果有更好的回答,也欢迎交流!
持续关注,还可获得更多干货分享及免费资源哦!

日志 数据 事务 存储 场景 文件 索引 支持 主从 函数 引擎 磁盘 查询 二进制 情况 时间 格式 模式 线程 过程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 高斯数据库查询用户下所有表 公务员软件开发专业工作待遇 网络安全 18年 号文 被轰炸的服务器完整版 租服务器哪里好 专科计算机网络技术课程推荐 西工大网络安全知识竞赛决赛 软件企业的软件开发怎么做账 五大连池软件开发设计在线咨询 数据库查询语句中排序 中神网盾网络安全靶场系统 服务器及网络安全设备工程 软件开发哪些项目需要用到钱 网络技术微信定位 规范服务职能拓展党建功能服务器 北京 软件开发人天单价 数据库常用sql查询语句学习 软件开发在哪里找客户 网络技术综合实践论文 服务器终端 引号怎么写入数据库 三级网络技术选择题题库 滨州数字化城管软件开发电话 文本数据库英文是啥 封装软件开发 网络安全海报素材图 天津大型软件开发市场报价 收入信息是否属于数据库 没有网卡可以安装数据库吗 服务器不能以安全模式启动
0