MySQL面试必考50问!【附答案】

如题所述

第1个回答  2024-08-16

一、存储引擎相关

MySQL提供的存储引擎包括:

l InnoDB: 常用于事务型数据库,提供ACID特性。

l MyISAM: 用于非事务型数据库,是最常用的非事务型存储引擎。

l MEMORY: 易失性非事务型存储引擎。

l ARCHIVE: 只允许查询和新增数据而不允许修改的非事务型存储引擎。

l CSV: 以CSV格式存储的非事务型存储引擎。

l MERGE: 将多个MyISAM表分组为一个表,可以处理非事务性表。

l EXAMPLE: 可以创建表,但不能存储或获取数据。

l BLACKHOLE: 接受要存储的数据,但始终返回空。

l FEDERATED: 将数据存储在远程数据库中。

选择存储引擎时,应灵活考虑需求,不同的引擎适用于不同场景。

二、常见存储引擎应用场景

合适的存储引擎能够提升数据库性能,具体选择取决于数据特性及业务需求。

三、索引使用问题

索引无法有效使用的情况包括:

    使用不等于查询。列参与数学运算或函数。在字符串like时左边是通配符。全表扫描比使用索引快。联合索引时,前面范围查询后面不满足最左原则。

四、MySQL锁机制

锁机制用于保证数据库并发访问的次序,类似酒店房间的钥匙管理,确保资源的独占性。

五、加锁的好处

加锁是并发控制的重要手段,确保数据一致性,避免冲突。

六、MySQL中锁的种类

表级锁、行级锁、页面锁各有特点,表级锁开销小,行级锁效率高,页面锁介于两者之间。

七、死锁与锁等待

死锁是多个事务等待对方释放锁,形成循环等待。锁等待发生在多个session同时更新同一行数据时。

八、InnoDB行锁实现

InnoDB通过索引来实现行锁,根据条件锁定行,防止数据不一致。

九、优化锁的方法

包括读写分离、分段加锁、减少锁持有时间、设计合理的锁粒度等。

十、事务相关

事务是满足ACID特性的操作序列,确保数据一致性。

十一、ACID特性解释

ACID特性包括原子性、一致性、隔离性和持久性,保证事务的正确执行。

十二、事务日志实现

InnoDB通过redo日志和缓冲池实现事务日志,确保数据完整性。

十三、多事务并发问题

并发事务可能导致更新丢失、脏读、不可重复读和幻读等问题。

十四、事务隔离级别

MySQL支持多种隔离级别,包括READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。

十五、InnoDB隔离级别

InnoDB默认采用REPEATABLE READ隔离级别。

十六、MVCC工作原理

MVCC通过版本号和删除标识确保事务读取的数据一致性。

十七、InnoDB手动提交事务

通过设置autocommit=0来手动开启事务。

十八、自增ID与UUID

推荐使用自增ID作为主键,避免UUID导致的性能下降。

十九、字段定义要求

字段定义为NOT NULL可以减少额外空间开销,提高程序运行效率。

二十、explain语句详解

explain语句提供了查询的详细信息,如访问类型、使用的索引等。

二十一、profile工具使用

profile用于深入分析SQL性能瓶颈。

二十二、慢查询优化

优化慢查询需要分析原因并采取相应措施,如优化查询语句、索引和表结构。

二十三、SQL语句优化

提供多种SQL优化策略,包括避免使用SELECT *、使用连接等。

二十四、表结构优化

优化表结构,如设置ID、合理选择存储引擎、使用合适的数据类型等。

二十五、数据范式

解释第一范式、第二范式和第三范式,确保数据结构的有效性。

二十六、大分页处理

通过数据库优化和缓存策略处理超大分页问题。

二十七、CPU负载处理

排查CPU高负载的原因,如慢查询、缓存问题等,并进行优化。

二十八、存储过程

存储过程是一组预编译的SQL语句,用于封装功能,提高性能和安全性。

二十九、存储过程的限制

在快速迭代和频繁人员流动的互联网项目中,存储过程的管理和复用性可能受限。

相似回答