1. 什么是 MVCC(多版本并发控制)?
MVCC(Multi-Version Concurrency Control)是一种并发控制机制,旨在通过保存数据的多个版本,在不加锁的情况下实现高效的事务隔离,从而提升数据库的并发性能。
1.1 MVCC 的核心目标
- 提高并发性能,避免事务间的锁等待。
- 实现一致性非锁定读,提升读操作效率。
2. 一致性非锁定读和锁定读
大约 5 分钟
MVCC(Multi-Version Concurrency Control)是一种并发控制机制,旨在通过保存数据的多个版本,在不加锁的情况下实现高效的事务隔离,从而提升数据库的并发性能。
数据校验问题:
INSERT INTO orders (order_date) VALUES ('2023-13-01'); -- 不合法的日期
存储效率低:
DATETIME:8 字节。CHAR(19)):19 字节。查询效率低:
不易操作:
DATE、TIME 函数,而字符串需要先解析后操作。事务的隔离级别是数据库在处理多个并发事务时,定义的读写操作隔离程度。它决定了一个事务是否能读取其他事务的未提交数据或正在操作的数据。
SQL 标准定义了四种隔离级别,从低到高分别是:
执行计划是 MySQL 对 SQL 查询生成的执行方案,展示了查询过程的每一步。通过分析执行计划,可以优化查询性能。
在 MySQL 中,通过 EXPLAIN 查看执行计划。
MySQL 查询缓存(Query Cache)是将 SELECT 查询结果 存储在内存中,以便相同的查询可以直接返回缓存结果,而无需再次执行。
.MYD 文件中,即使重启也能保持连续性。MySQL 在执行 SQL 查询时,字段的数据类型如果与查询条件不一致,会进行类型转换。这种转换分为两种:
CAST 或 CONVERT)。MySQL 的架构主要分为两层:
+-----------------------------------+
| 客户端 |
+-----------------------------------+
|
+-----------------------------------+
| 连接管理层 |
+-----------------------------------+
|
+-----------------------------------+
| 查询解析与优化层 |
| SQL 解析、查询优化、执行计划生成 |
+-----------------------------------+
|
+-----------------------------------+
| 存储引擎 API 层 |
+-----------------------------------+
|
+-----------------------------------+
| 存储引擎层 |
| InnoDB、MyISAM、Memory等引擎 |
+-----------------------------------+
关系型数据库是一种使用 行和列的表格结构 存储和管理数据的数据库模型,数据之间通过关系(如主键和外键)关联。
SQL(Structured Query Language)是用于操作和查询关系型数据库的标准语言,包括数据定义、查询、更新和控制。
数据库名称:清晰表达业务含义,禁止使用拼音或缩写。
user_management(用户管理数据库)表名称:采用小写字母 + 下划线命名,必须能表达数据内容。
user_info(用户信息表),order_details(订单详情表)字段名称:小写字母命名,避免缩写或拼音,需简洁且易懂。
created_at(创建时间字段),order_id(订单 ID)索引名称:以 idx_ 开头,后跟表名和字段名。
idx_user_email(表示 user_info 表上的 email 字段索引)约束名称:使用前缀标明类型:
pk_ 表示主键(Primary Key)fk_ 表示外键(Foreign Key)pk_user_id,fk_order_user_id