活动介绍

mysql面试题汇总文档

preview
需积分: 0 4 下载量 10 浏览量 更新于2023-02-06 收藏 128KB DOC 举报
MySQL面试题汇总文档主要涵盖了一系列关于MySQL的重要知识点,对于准备MySQL面试的人员来说具有很高的参考价值。以下是这些知识点的详细说明: 1. **MySQL复制原理**:MySQL的复制流程包括三个主要线程。主服务器上的binlog线程记录所有改变数据库数据的语句,并将它们写入binlog。从服务器的io线程在启动slave后,负责从主服务器拉取binlog内容并存入自己的relay log。然后,从服务器的sql执行线程读取relay log中的语句并执行。 2. **MyISAM与InnoDB的区别**: - **事务支持**:InnoDB支持事务处理,而MyISAM不支持。 - **锁定机制**:InnoDB支持行级锁定,MyISAM使用表级锁定。 - **MVCC**:InnoDB支持多版本并发控制,MyISAM不支持。 - **外键**:InnoDB支持外键约束,MyISAM不支持。 - **全文索引**:MyISAM支持全文索引,InnoDB不直接支持,但可以通过全文搜索引擎如Sphinx进行扩展。 3. **InnoDB的四大特性**: - **插入缓冲(Insert Buffer)**:用于合并对非聚簇索引页的插入操作,减少I/O。 - **二次写(Double Write)**:确保数据写入主内存后再写入磁盘,提高数据安全性。 - **自适应哈希索引(Adaptive Hash Index)**:根据查询模式自动创建哈希索引,提高查询效率。 - **预读(Read Ahead)**:预测并读取即将访问的数据页,提高读取速度。 4. **SELECT COUNT(*)的比较**:在MyISAM中,由于内部维护了一个计数器,所以SELECT COUNT(*)操作更快。而在InnoDB中,需要遍历整个表计算。 5. **VARCHAR与CHAR的区别**: - VARCHAR是可变长度的,而CHAR是固定长度的。 - VARCHAR(50)的50表示最多存储50个字符,存储空间根据实际内容长度决定。 6. **INT的显示宽度**: - INT(20)中的20表示显示宽度,不影响存储空间和数值范围,仅影响某些显示格式。 7. **事务与日志的实现**: - MySQL有多种日志,如错误日志、查询日志、慢查询日志、二进制日志和中继日志。 - 事务通过redo日志和存储引擎的日志缓冲实现,确保ACID属性。 - 事务提交时,日志先写入磁盘,保证持久化。 8. **数据库三大范式**: - 第一范式:确保每一列都是不可再分的基本数据项。 - 第二范式:消除部分依赖,确保每列都完全依赖于主键。 - 第三范式:消除传递依赖,确保列只依赖于主键。 9. **CPU飙升处理**: - 查看并分析`show processlist`找出长时间无状态变化的进程并结束。 - 检查错误日志,定位问题原因。 - 分析查询和批量插入操作对CPU和I/O的影响。 10. **SQL优化**: - 使用EXPLAIN分析查询执行计划,理解type、ref等字段含义,优化查询结构。 - 使用索引,尤其是复合索引,提高查询效率。 - 避免全表扫描,使用WHERE子句精确过滤数据。 - 避免在JOIN操作中使用子查询,改为临时表或JOIN语句。 - 使用存储过程和预编译语句减少解析时间。 这些知识点涵盖了MySQL的基础知识、性能优化和故障排查等方面,对于理解MySQL的工作原理和提升数据库管理能力至关重要。
身份认证 购VIP最低享 7 折!
30元优惠券