mysqlexplain笔试题,⾯试必备的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
protocol down每秒⼀次触发log buffer写⼊log file中,并且log file刷新到磁盘。
(由于进程调度问题,不能保证每秒100%刷新;如果mysql进程崩溃,可能会丢失1s的事务;效率最⾼,但最不安全)
1
每次事务提交触发log buffer写⼊log file中,并且log file刷新到磁盘。
mysql查询面试题及答案2
每次事务提交,log buffer写⼊log file中;每秒log file刷新到磁盘。
(如果操作系统崩溃或者停电,可能会丢失1s的事务)
transition四个属性
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:最终选择的索引,如果没有索引的话,本次查询效率通常很差
vue style scoped(3)、key_len:本次查询⽤于结果过滤的索引实际长度
(4)、rows:预计需要扫描的记录数,预计需要扫描的记录数越⼩越好
(5)、extra:额外附加信息,主要确认是否出现 Using filesort、Using temporary 类似情况
以上10道MySQL⾯试题,只是众多MySQL⾯试题中的部分,个⼈认为是⽐较典型的,出现频率也⽐较⾼的试题,希望对你们有帮助!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。