MySQL面试题(1)

文章目录


1.查询语句在MySQL中如何执行?
MySQL分为server层和存储引擎层
1.连接器先进行数据库连接 查找存储引擎中是否有数据的查询缓存
2.分析层 查看输入的查询语句是否正确
3.优化器 主要优化索引,当前适合什么索引
4.执行器 进行查询执行
---------------------------------------------------------------------------------------------

2.MySQL默认端口号3306

3.MySQL和Oracle区别及特点
MySQL优势在于开源,成本比较低,安装配置简单,好上手
oracle 费用比较昂贵,适合比较复杂的系统

4.MySQ存储引擎innodb和myisam区别
事务:innodb支持事务 myisam不支持
外键:innodb支持外键 myisam不支持
锁:innodb默认行锁 myisam支持表锁 可见在myisam性能比较高
mvcc :innodb支持 myisam不支持
总结:可见innodb在读写性能比较均衡 而myisam在读方面比较高

5.MySQL执行缓慢排查
top查看进程 哪些进程占用内存和cpu
show processlist 查看长连接 主要字段comand 和state字段
show variables like slow query log 慢日志 查看慢sql
explain 执行计划 优化索引

6.MySQLinnodb聚簇索引和非聚簇索引区别?
聚簇索引:叶子节点记录着行数据 定义primary key
非聚簇索引:叶子节点是主键id 不包含行数据

查询过程:查询主键时,直接使用聚簇索引查找 不用回表
非聚簇索引查找时,需要二级索引找到主键id,在聚簇索引回表查询

7.MySQL 中的回表是什么?
MySQL B+tree 分为主键索引和二级索引
回表:先从二级索引找到主键id值,在返回到主键索引上去找到行数据

8.count(1)、count(*)与count(列名)的区别?
count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL
count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL
count(列名)只包括列名那一列,

9.redolog和binlog区别?
redolog仅是存在于innodb存储引擎 binlog是存在于整个MySQL
redolog针对mvcc中的buffer pool 来恢复数据 针对于事务
binlog针对磁盘 来进行主从同步

10.主从复制原理
主库(master) 二进制日志binlog 从库(slave)–relay log(中继日志)
主库进行主从时,把主库内容记录到binlog日志中,show master status;查看主库binlog开启日志的binlog日志信息
从库 io线程先连接主库 获取binlog日志 然后写到自身的relay log中 sql线程重做relay log日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值