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面试题中的部分,个人认为是比较典型的,出现频率也比较高的试题,希望对你们有帮助!

mysql面试吗hi提_面试必备的10道MySQL题相关推荐

  1. java 最烧脑的继承题_最烧脑的10道智力题!答对5道就是天才!

    原标题:最烧脑的10道智力题!答对5道就是天才! 尖叔 10道智力测试 听说做对5道,智商就有140! 答案在最后面,不要偷看哦 赶快来挑战吧! 01 移动3个圆圈, 把左边的三角形变成右边的三角形, ...

  2. java 最烧脑的继承题_最烧脑的10道智力题,答对5道就是天才!快来和孩子试试!...

    来源| 小学数学 10道智力测试 听说做对5道,智商就有140! 答案在最后面,不要偷看哦 赶快来挑战吧 01 移动3个圆圈, 把左边的三角形变成右边的三角形, 该怎么做呢? 02 逻辑推理题,仔细看 ...

  3. mysql安装无效安装源_(0.2.4)Mysql安装——yum源安装

    转自:https://www.cnblogs.com/jimboi/p/6405560.html 1.下载好对应版本的yum源文件 2.安装用来配置mysql的yum源的rpm包 可以用: yum r ...

  4. mysql和oracle冲突吗_三分钟带你分清MySQL 和Oracle之间的误区

    原标题:三分钟带你分清MySQL 和Oracle之间的误区 来自:华为云开发者社区 摘要:MySQL和Oracle,别再傻傻分不清. MySQL 和Oracle 在开发中的使用是随处可见的,那就简单去 ...

  5. php mysql 插入多条数据_雷林鹏分享:PHP MySQL 插入多条数据

    使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句. 以下实例向 "MyGuests" 表添加了三 ...

  6. mysql数据库的环境搭建_数据库学习(一)MySql环境搭建

    一.下载安装包并解压 官网下载地址: https://dev.mysql.com/downloads/windows/installer/ 记住解压目录 二.设置环境变量 打开计算机--属性--高级系 ...

  7. mysql设置用户永不过期_在Navicat Premium中管理MySQL用户 - 第2部分:创建新用户

    第2部分:创建新用户 在第1部分中,我们学习了如何使用Navicat Premium用户管理工具保护MySQL root帐户.本篇文章将讨论设置新用户的帐户详细信息,帐户限制和SSL设置. The G ...

  8. mysql触发器主机自动增长_三分钟带你分清 Mysql 和 Oracle 之间的误区

    摘要:Mysql 和Oracle,别再傻傻分不清. mysql 和Oracle 在开发中的使用是随处可见的,那就简单去了解一下这俩款火的不行的数据库. 本质区别: Oracle数据库是一个对象关系数据 ...

  9. mac安装完mysql后关机特别慢_升级macOS Sierra 10.12 关机慢

    作为一个喜欢吃螃蟹的程序猿: 在 macOS Sierra 发布的当天就果断更新了: 当然这次更新对于我等没有 iWatch 的屌丝来说: 在电脑上调戏一番 siri 后:也就没有什么特别好玩的了: ...

最新文章

  1. 【 C 】队列的链式存储实现
  2. Android 布局开发之百分比布局、弹性布局
  3. java元婴期(31)----java进阶(springmvc(5)---数据回显数据交互拦截器)
  4. 用户模式下的线程同步
  5. pandoc讲html转换为pdf,将HTML表格转换为PDF的Pandoc会导致非包装表格
  6. 【滤波器】基于matlab平方根升余弦滤波器【含Matlab源码 994期】
  7. 利用matlab命令窗口绘制simulink仿真示波器波形的方法,利用MATLAB命令窗口绘制Simulink仿真示波器波形的方法...
  8. Micro LED 巨量转移技术
  9. mysql 重置密码_mysql忘记密码如何重置密码,以及修改root密码的三种方法
  10. steer clear of用法
  11. 做硬件真的没有前途吗?看看资深工程师是怎么说的
  12. ssm学生学籍管理系统
  13. 笔记本电脑开wifi热点小技巧,bat文件实现
  14. 每个人都会有的第一次
  15. 鸡尾酒会问题(Cocktail Party Problem)和程序实现
  16. surface pro 6 黑苹果_surface pro 6 黑苹果
  17. 前端面试题,前端组件化、工程化、模块化的概念
  18. 沁恒蓝牙芯片CH58X蓝牙从机的使用
  19. Perl常用模块使用例子
  20. 如何在保障数据安全的前提下,充分发挥电力数据的经济价值?

热门文章

  1. 开源即时通讯软件|最好的开源即时通讯软件——XEIM
  2. 优秀行业网站建设5必备(上)
  3. web前端已经不行了?千万不要信
  4. 算法——贝叶斯公式的推导过程
  5. java金字塔等边三角形_java99乘法表的小练习 正三角 倒三角 正金字塔 倒金字塔...
  6. SQLite | Insert、Delete、Updata 与 Drop 语句
  7. maftools|TCGA肿瘤突变数据的汇总,分析和可视化
  8. 39个转录组分析工具,120种组合评估
  9. 如何在PD17虚拟机上安装CentOS Linux系统
  10. 在Mac电脑上如何对 Brotli格式进行压缩与提取