IT评测·应用市场-qidao123.com

标题: 1 MySql基础介绍 [打印本页]

作者: 嚴華    时间: 2023-3-10 01:50
标题: 1 MySql基础介绍
目录

1 mysql逻辑架构

mysql逻辑架构图:
[img=500,300/]https://img2023.cnblogs.com/blog/2327408/202303/2327408-20230309144349664-930735564.png[/img]
Mysql服务器、存储引擎 是两个独立的组件,彼此通过api交互
1.1 连接管理与安全性

1.2 优化与执行

优化器工作内容:
2 并发控制

Mysql有两个层面的并发控制:服务器层存储引擎层
2.1 锁粒度

2.2 表锁

2.3 行级锁

3 事务

3.1 数据库事务四特性

事务是指一组逻辑操作,它们要么一起成功,要么一起失败。
ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
3.2 隔离级别

SQL标准定义了四种隔离级别:
隔离级别说明问题读未提交(Read Uncommitted)事务A可读取事务B未提交的数据引发 脏读读已提交(Read Committed)事务A只能读取其它已提交事务的数据;引发 不可重复读可重复读(Repeatable Read)保证同一事务中多次读取同样的记录的结果是一致的;Mysql默认事务隔离级别解决了脏读;但引发 幻读可串行化(Serializable)强制事务串行执行,在读的每一行数据行上加锁大量的超时和锁竞争
总结:

3.3 死锁

数据库系统实现了多种锁检测和死锁超时机制:
3.4 事务日志

事务日志的目的是提交事务效率。
3.5 MySql中的事务

一、自动提交
默认采用自动提交模式(auto commit)
二、在事务中混合使用存储引擎
MySQL服务器层不管理事务,事务是由下层的存储引擎实现的。所以在同一个事务中,使用多种存储引擎是不可靠的。
三、隐式和显式锁定
todo
4 多版本并发控制MVCC

目标:减少不必要的锁操作
实现原理:
一、两个前提:
二、对于不同的sql指令,InnoDB执行不同的操作:
INSERT: 为新插入的每一行保存VNum作为行版本号。
DELETE:为删除的每一行保存VNum作为行删除标识。
UPDATE:为插入一行新记录,保存VNum作为行版本号,同时保存VNum到原来的行作为行删除标识。
SELECT
InnoDB会根据以下两个条件检查每行记录:
只有符合上述两个条件的记录,才能返回作为查询结果。
温馨提示:数据库的删除、更新,跟浅义上的理解不一样:1、delete并非把数据从磁盘删除;update它是先插入后删除。在后续学习笔记会对此进行更深入讲解。
5 MySql常用存储引擎

5.1 InnoDB

5.2 MyISAM

不支持:事务、行级锁、奔溃后安全恢复
适用于:表比较小、读多写少的场景
特性:
一、加锁与并发
对整张表加锁,而不是针对行。读取时会对需要读到的所有表加共享锁,写入时则对表加排他锁。在表有读取查询的同时,也可以往表中插入新的记录(并发插人)
二、奔溃修复
崩溃后无法安全恢复
三、索引特性
支持全文索引:对于MyISAM表,即使是BL0B和TEXT等长字段,也可以基于其前500个字符创建索引
6 InnoDB如何使用MVCC解决幻读

后续章节详解 todo
可参照:InnoDB事务模型和锁定

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4