Mysql篇

原创
2020/08/10 17:41
阅读数 39

Mysql

  • DDL、DML、DCL
DDL:create、alter、drop。表结构操作

DML:insert、delete、update。数据操作

DCL:grant。用户权限操作
  • 一条sql语句的执行流程
客户端 -> 查询缓存 -> 解析器 -> 预处理器 -> 优化器 -> 执行计划 -> 执行引擎 -> 存储引擎
                                                                  |
                                                              客户端、查询缓存     
  • Mysql的几种日志
bin log:
    记录所有的DDL和DML语句,记录的是操作不是数据,属于逻辑日志。
    作用:
        1.主从复制:从服务器读取主服务器的bin log(默认关闭),然后执行一遍
        2.数据恢复:

redo log:
    记录了在某个数据页上做了什么修改,属于物理日志。(在存储引擎层实现)

undo log:
    和修改有关的日志,redo log 和 undo log 与事务密切相关,统称为事务日志。
    记录了事务发生之前的数据状态,如果修改数据发生异常,可以用undo log实现回滚,保持原子性
  • 索引
1.主键索引:是一种特殊的唯一索引,要求键值不能为空。

2.普通索引:也叫非唯一索引,是最普通的索引,没有任何的限制。

3.唯一索引:唯一索引要求键值不能重复,可以有一个null值。

4.全文索引:针对比较大的数据,解决 like 查询效率低的问题

  • 索引存储模型
1.二分查找:折半查找

2.二叉查找树:树结构,数据量大的时候深度很长。

3.平衡二叉树:AVL Tree。左旋、右旋
    左右子树深度差不能超过1

4.多路平衡查找树:B Tree。分裂、合并
    跟 AVL 树一样,B 树在枝节点和叶子节点存储键值、数据地址、节点引用。

5.多路平衡查找树plus:B+ Tree。
    1、它的关键字的数量是跟路数相等的;
    2、B+Tree 的根节点和枝节点中都不会存储数据,只有叶子节点才存储数据。
    3、B+Tree 的每个叶子节点增加了一个指向相邻叶子节点的指针,它的最后一个数据会指向下一个叶子节点的第一个数据,形成了一个有序链表的结构。
    
  • 优化
1.配置优化
2.Redis缓存、集群
3.分库分表
4.SQL语句分析和优化,slow query log:慢日志开关(默认关闭)
5.EXPLAIN 执行计划
...
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部