MySQL面试题

1、MySQL的复制原理以及流程

基本原理流程,3个线程以及之间的关联;

  1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog(二进制日志)中;

  2. 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log(中继日志)中;

  3. 从:sql执行线程——执行relay log中的语句;

2、MySQL中myisam与innodb的区别,至少5点

5点不同:

innodbmyisam
事务×
行锁表锁
MVCC×
外键×
全文索引×

(2)、innodb引擎的4大特性

  • 插入缓冲(insert buffer);

  • 二次写(double write);

  • 自适应哈希索引(ahi);

  • 预读(read ahead) 。

(3)、2者selectcount(*)哪个更快,为什么

  • myisam,内部维护了一个计数器,可以直接调取。

3、MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义

(1)、varchar与char的区别

  • char:固定长度,字符数组
  • varchar:可变长,字符串

(2)、varchar(50)中50的涵义

  • 最多50字符,存实际长度,char空字符占位

(3)、int(20)中20的涵义

  • 最大255,显示20位,可设置参数高位补0

(4)、mysql为什么这么设计

  • 一般没用,可能有些需求要显示固定长度

4、innodb的事务与日志的实现方式

(1)、有多少种日志;

  • 错误日志
  • 查询日志
  • 慢查询日志
  • 二进制日志
  • 中继日志
  • 事务日志

(2)、事物的4种隔离级别

  • 读未提交
  • 读已提交
  • 可重复读
  • 串行

(3)、事务是如何通过日志来实现的,说得越深入越好。

  • 写数据前先写缓冲日志

5、binlog的几种日志录入格式以及区别

binlog的日志格式

  • Statement(语句):记录写修改数据的SQL,性能高,只记录修改导致主从可能存在问题;
  • Row(行):记录每一行修改细节,更准确,但日志量大;
  • Mixedlevel(混合):前两种混合

6、sql优化

(1)、explain出来的各种item的意义;

select_typeselect子句的类型
type在表中找到所需行的方式
possible_keys涉及到的索引
key实际用到的索引
key_len索引中使用的字节数
ref连接匹配条件
Extra重要的额外信息

(2)、profile的意义以及使用场景;

  • 查询SQL执行时间,CPU/内存占用,各种锁花的时间

7、表中有大字段X(例如:text类型),且字段X不会经常更新,以读为为主,请问

(1)、您是选择拆成子表,还是继续放一起;

(2)、写出您这样选择的理由。

  • 不用X查询效率高。与X相关的操作就麻烦点,能提升性能就值得。

8、MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的?为什么是这样子的

  • 索引,查询条件不用索引就是表锁

9、常用的索引有哪些种类?

  1. 普通索引: 即针对数据库表创建索引
  2. 唯一索引: 与普通索引类似,允许有空值
  3. 主键索引: 特殊的唯一索引,不允许有空值。
  4. 组合索引: 多个字段联合作为一个组合索引。

10、事务ACDI

  • 原子性:最小单位
  • 持久性:提交后挂了也不影响
  • 一致性:事务执行前后数据保持一致
  • 隔离性:各事务是独立的

11、幻读、脏读、不可重复读

  • 幻读:一个事务两次COUNT的结果不一致
  • 脏读:一个事务在另一个事务更新与回滚之间读取的结果不正确
  • 不可重复读:一个事务对同一记录两次查询的结果不一致

12、锁

  • 类别区分:读锁(共享锁)、写锁(排他锁)
  • 粒度区分:表级锁、行级锁、页级锁(锁相邻记录)
  • 悲观锁,每次读都加锁;乐观锁:版本号机制
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值