MySQL数据库思维导图
2021-01-21 21:58:50 381 举报
AI智能生成
MySQL数据库思维导图
作者其他创作
大纲/内容
概念
mysql单表瓶颈500万数据,单库瓶颈5000万
逻辑架构
图示
执行顺序
0:mysql之外类似java程序访问
1:沟通连接池
2:缓存、缓冲查询
缓存:读
缓冲:写
3:SQL接口分析
4:解析器解析SQL
5:优化器在不影响查询结果的情况下,生成执行计划
子主题
6:存储引擎按执行计划分类型执行
7:将结果存入缓存
8:返回结果给java程序
利用show profile可以查看执行周期
命中缓存需要SQL一模一样
MySQL存储引擎
概念
分类
MyISAM和InnoDB区别
InnoDB
支持外键和事务
行锁,适合高并发操作
缓存索引和真实数据,对内存要求高;而且内存大小对性能有决定性影响
子主题
MyISAM
不支持外键和事务
表锁
只缓存索引,不缓存真实数据
系统自带表使用该引擎
存储引擎类型
InnoDB引擎
MyISAM引擎
Archive引擎
档案引擎
CSV引擎
将普通的csv文件作为mysql的表来处理,不支持索引
Memory引擎
缓存引擎
Federated引擎
联合引擎,访问其他mysql服务器的一个代理
索引
概念
mysql高效获取数据的数据结构
优缺点
优点
提高数据检索效率
降低数据排序成本
缺点
降低更新表的速度
占用空间更大
在有限内存下,Mysql选择的看似效率比BTree效率低的B+Tree,同样情况下,B+Tree比BTree少1/3的IO次数
分类
聚簇索引
主键索引
非聚簇索引
非主键索引
按数据结构分
Btree索引
适用不同场景,可以线性查找
hash索引
优缺点
按种类分
普通索引
唯一索引
全局索引
联合索引
左前缀原则
B树
B树-二叉搜索树
二叉树最好的情况是平衡二叉树,最坏的情况是链表,所以不适用于mysql索引的数据结构
B-树(BTree)-多路平衡搜索树
每个节点中包含数据、指向数据的指针、及指向下一节点的指针
所有的叶子节点都在同一层
B+树
节点中不包含指向数据的指针,数据都在叶子节点中存储
与B-区别
特性
应用
B*树
其他
主键自带索引,其他字段自己加。
范式
三大范式
第一范式-单表
第二范式-单表
第三范式-多表
BC范式-多表
第四范式-多表
拓展
视图
优缺点
优点
简单性
安全性
逻辑独立性
缺点
性能差
增删改极其麻烦
创建视图
语法结构
释义
存储过程
优缺点
优点
缺点
命令
查看所有存储过程命令
查看存储过程或函数的创建代码
调用存储命令
删除存储过程命令
创建存储过程
MySQL语句执行过程
触发器
按时机分
前触发器
后触发器
按操作分
insert
update
delete
图形化管理工具
Navicat
phpMyAdmin
MySQL Workbench
数据库优化
注意
稳定性和业务可持续性,通常比性能更重要
优化使性能变好,维持和变差是等概率事件
优化不可避免涉及到变更,变更就有风险
优化方面
安全
数据可持续性
性能
数据的高性能访问
优化维度
硬件
系统配置
数据库表结构
SQL及索引
优化选择
优化成本
硬件>系统配置>数据库表结构>SQL及索引
优化效果
硬件<系统配置<数据库表结构<SQL及索引
具体方法
字段选择合适的类型
添加合适的索引
表设计遵从范式
模糊查询左原则
即LIKE中的开头为通配符不能使用索引
常用语句
select version();
select now();
select user();
dual虚表
语句规范
关键字与函数名称全部大写
数据库名称,表名称,字段名称必须小写
SQL语句必须以分号结尾
数据类型
数值类型
整型
TINYINT
SMALLINT
MEDIUMINT
INT或INTEGER
BIGINT
浮点型
FLOAT
DOUBLE
DECIMAL(a,b)
字符串类型
字符串
定长
CHAR
变长
VARCHAR
文本数据
短文本
TINYBLOB
TINYTEXT
长文本
BLOB
TEXT
中等长文本
MEDIUMBLOB
MEDIUMTEXT
极大长文本
LONGBLOB
LONGTEXT
日期和时间类型
单一日期
DATE
TIME
YEAR
混合日期
DATETIME
TIMESTAMP
其他
库级操作
创建数据库
修改数据库
删除数据库
进入数据库
表级操作
创建表
修改表
修改数据表
添加单列
添加多列
删除列
添加约束
添加主键约束
添加唯一约束
添加外键约束
添加、删除默认约束
删除约束
删除主键约束
删除唯一约束
删除外键约束
修改列定义
数据表更名
删除表
增加表
查看数据表
查看数据表结构
约束
概念
分类
表级约束
列级约束
非空约束
主键约束
唯一约束
默认约束
外键约束
外键约束的要求
外键约束的参照操作
CASCADE
SET NULL
RESTRICT
NO ACTION
显示索引表
关键字
自动编号
无符号位
Like
limit
distinct
order by
group by 和 having
group by
having
not
[not] between and
[not] in
is [not] null
union
增删改查
增
insert into 表名 (字段,字段)values(值,值)
删
delete from 表名 where 字段 = ?
改
update 表名 set 字段 = 值 where 字段 = ?
查
select * from 表名 where 字段
完整查询
子查询和连接
子查询
规则
返回值
比较运算符
=、>、<、>=、<=、<>、!=、<=>
用ANY、SOME、ALL修饰比较运算符
使用 [NOT] IN 的子查询
使用[NOT]EXISTS的子查询
连接
内连接
外连接
左外连接
右外连接
自身连接
运算符和函数
数值运算符与函数
CEIL()
ROUND()
TRUNCATE()
比较运算符与函数
[NOT] BETWEEN...AND...
[NOT] IN
IS [NOT] NULL
日期时间函数
DATE_ADD()
DATEDIFF()
DATE_FORMAT()
信息函数
LAST_INSERT_ID()
USER()
聚合函数
AVG()
COUNT()
加密函数
MD5()
PASSWORD()
自定义函数
事务
作用
特性AICD
原子性
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成
事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性
在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
隔离性
数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
持久性
事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
日志
redo log
作用
组成
redo log buffer
redo log file
undo log
作用
log group
作用
支持日志组镜像
作用
事务的隔离级别
读未提交
读已提交
可重复读
串行化
隔离对应问题
脏读
脏读发生在一个事务A读取了被另一个事务B修改,但是还未提交的数据。
不可重读
在一个事务内两次读到的数据不一致
幻读
0 条评论
下一页