BAT Mysql面试题

1、Mysql 的复制原理以及流程
主:binlog线程----记录下所有改变的数据库数据的语句,放进master上的 binlog中;
从:io线程-----在使用start slave 之后,负责从master上拉取binlog内容,放进自己的relay log中;
从:sql执行线程—执行relay log中的语句;

2、mysql中myisam与innodb的去区别,至少5点
1、innoDB 支持事务,而MyISAM 不支持事务
2、innoDB 支持行级锁,而MyISAM支持表级锁
3、innoDB 支持外键,而MyISAM不支持
4、innoDB 不支持全文索引,而MyISAM支持

innodb 引擎的4大特性
插入缓冲、二次写入,自适应哈希索引,预读

两者select count(*) 哪个更快,为什么?
myisam更快,因为myisam内部维护了一个技术器,可以直接调取。

3、mysql 中的varchar与char的区别以及varchar(50)中的50代表的涵义
char 是一种固定长度的类型,varchar则是一种可变长度的类型
varchar(50)中的50的涵义
最多存放50个字符,varchar(50)和(200)存储hello所占空间一样,但后者在排序时会消耗更多的内存,因为order by col 采用fixed_length计算col长度
int(20) 中20的涵义
是指显示字符的长度
但要加参数的,最大为255,比如它是记录行数的id,插入10笔资料,它就显示0000000001,当字符的位数超过11,他也只显示11位,如果你没有加那个让它未满11位就前面加0的参数,它不会在前面加0
20表示最大显示宽度为20,但仍占4字节存储,存储范围不变。

innoDB的事务与日志的实现方式
1、有多少种日志
错误日志:记录出错信息,也记录一些警告信息或者正确的信息。
查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行。
慢查询日志:设置一个阈值,将运行时间超过该值的所有sql语句都记录到慢查询的日志文件中。
二进制日志:记录对数据库执行更改的所有操作。
中继日志:
事务日志:
2、事务的4种隔离级别
读未提交
读已提交
可重读读
串行
3、事务是如何通过日志来实现的,说得越深入越好:
事务日志是通过redo和innodb的存储引擎日志缓冲(innodb log buffer)来实现的,当开始一个事务的时候,会记录该书屋的isn(log sequence number)号;当事务执行时,会往innodb存储引擎的日志的日志缓存里面插入事务日志;当事务提交时。必须将存储引擎的日志缓冲写入磁盘(通过innodb_flush_log_at_trx_commit来控制),也就是写数据前,需要先写日志。这种方式称为“预写日志方式”

6、mysql数据库cpu飙升到500%的话他怎么处理?
1、列出所有进程show processlist,观察所有进程,把没有状态变化的(干掉)。
2、查看超时日志或者错误日志(做了几年开发,一般会是查询出以及大批量的插入会导致cpu与i/o上涨,当然不排除网络状态突然断了,导致一个请求服务器只接受到一半)

7、sql优化各种方法
1、explain 出来的各种item的意义:
select_type
表示查询中每个select子句的类型
type
表示mysql在表中找到所需行的方式,又称“访问类型”
possible_keys
指出mysql能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用
key
显示mysql在查询中实际使用的索引,若没有使用索引,显示为NULL
ley_len
表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度
ref
表示上述表的链接匹配条件,即哪些列或常量被用于查找索引列上的值
2、profile的意义以及使用场景:
查询到sql会执行多少时间,并看出CPU/Memory 使用量,执行过程中systemlock,table lock 花多少时间等等。

11、innodb 的读写参数优化
1、读取参数
global buffer pool 以及 local buffer;
2、写入参数
innodb_flush_log_at_trx_commit
innodb_buffer_pool_size
3、与io相关的参数:
innodb_write_io_threads=8
innodb_read_io_threads=8
innodb_thread_concurrency=0
4、缓存参数以及缓存的使用场景。
query cache/query_cache_type
并不是所有表都适合使用query cache.

12、你是如何监控你们的数据库的?你们的慢日志都是怎么查询的?
监控的工具有很多,例如zabbix,lepus
13、你是否做过主从一致性校验,如果有,怎么做的,如果没有,你打算怎么做?
主从一致性校验有多种工具,例如checksum,mysqldiff,pt-table-checksum等

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值