返回
史上最全面!2022年最新MySQL 数据库面试题剖析与解答!
后端
2023-07-10 12:18:50
深入剖析 MySQL 数据库:基础概念、索引和存储
基础概念
数据库类型
MySQL 提供多种数据库类型,每种类型都有其独特的优点和用途:
- MyISAM: 速度快,适合对速度要求高的场景,但缺乏事务支持和外键约束。
- InnoDB: 事务型数据库,支持事务、外键和较高的可靠性,但速度略逊于 MyISAM。
- Memory: 存储在内存中,速度极快,但断电后数据会丢失。
- CSV: 文本格式的数据库,易于使用,但性能较低。
字符类型
MySQL 中提供了 CHAR 和 VARCHAR 两种字符串类型:
- CHAR: 固定长度,以空格填充,检索速度快,但空间利用率低。
- VARCHAR: 可变长度,仅存储字符串实际长度,空间利用率高,但检索速度比 CHAR 慢。
索引
索引是提升数据库查询速度的利器:
索引类型
- B-Tree 索引: 平衡树结构,快速查找和范围查询。
- Hash 索引: 哈希函数映射,快速查找,但不支持范围查询。
- 全文索引: 文本数据索引,支持全文搜索。
- 空间索引: 地理空间数据索引,支持空间查询。
索引优缺点
- 优点:加快查询速度、减少表扫描、支持范围查询、可用于唯一性和主键约束。
- 缺点:占用存储空间、增加维护开销、可能降低更新和插入速度。
索引设计原则
- 为经常查询的列创建索引。
- 为连接频繁的表创建索引。
- 避免在经常更新的列上创建索引。
- 避免在低基数列上创建索引。
- 尽量使用最左前缀匹配原则。
索引数据结构
索引常见的数据结构有:
- B-Tree: 平衡树结构,快速查找和范围查询。
- Hash 表: 哈希函数映射,快速查找,但不支持范围查询。
- R-Tree: 空间索引结构,支持空间查询。
存储
存储引擎
MySQL 提供多种存储引擎,每种引擎都有其独特的特性:
- MyISAM: 非事务型引擎,速度快,但缺乏事务支持。
- InnoDB: 事务型引擎,支持事务、外键和高可靠性。
- Memory: 内存存储引擎,速度极快,但断电后数据会丢失。
- CSV: 文本格式存储引擎,易于使用,但性能较低。
MyISAM 与 InnoDB
- MyISAM: 非事务型,速度快,但缺乏事务支持和外键约束。
- InnoDB: 事务型,支持事务、外键和高可靠性,但速度略逊于 MyISAM。
InnoDB 四大特性
InnoDB 具有以下四大特性,确保数据完整性和可靠性:
- 原子性: 事务中的操作要么全部成功,要么全部失败。
- 一致性: 事务完成后,数据库始终处于一致状态。
- 隔离性: 事务彼此隔离,不会相互影响。
- 持久性: 已提交的事务对数据库的更改永久有效。
常见问题解答
-
为什么使用索引?
索引通过加快数据检索速度来提升查询性能。 -
如何选择合适的索引类型?
根据查询模式和数据类型选择适当的索引类型,如 B-Tree 索引用于范围查询。 -
过度索引会带来什么问题?
过度索引会导致存储开销增加、维护成本上升和更新性能下降。 -
MyISAM 和 InnoDB 哪个更好?
MyISAM 速度快,但缺乏事务支持;InnoDB 支持事务和外键约束,但速度略逊于 MyISAM。 -
InnoDB 的四大特性有什么作用?
原子性、一致性、隔离性和持久性确保了数据完整性和可靠性。