Mysql(下篇)学习笔记(B站)

01_LinuxMySQL的安装与使用

学习侧重

密码强度

字符集设置

 window系统改my.ini文件

Linux 修改 my.cnf文件

 

 

 

 字符集与比较规则(了解)

 

 

 

请求到响应过程中字符集的变化

 

 

 WindowsLinux平台区别

 sql_mode的合理设置

02_MySQL的数据目录

1. MySQL8的主要目录结构

1.1 数据库文件的存放路径

find /  

 1.2 相关命令目录

 1.3 配置文件目录

 2. 数据库和文件系统的关系

2.1 查看默认数据库

2.2 数据库在文件系统中的表示

 

 2.3 表在文件系统中的表示

2.3.1 InnoDB存储引擎模式

 

 

2.3.2 MyISAM存储引擎模式

 

 2.4 小结

 2.5 视图在文件系统中的表示

 2.6 其他文件

 03_用户与权限管理

1. 用户管理 重心

1.1 登录MySQL服务器

 1.2 创建、修改、删除用户

 ’kangshifu‘@'localhost'表示只能本地连接

 

1.3 设置当前用户的密码 

1.4 修改其他用户密码

1.5 mysql 8 密码管理(了解)

 

2 权限管理 zx

 2.1 权限列表

2.2 授予权限的原则

2.3 授予权限

2.4 查看权限

2.5 收回权限

 3. 权限表

3.1 user

user表是MySQL中最重要的一个权限表, 记录用户账号和权限信息 ,有49个字段。如下图:

 

3.2 db

3.3 tables_priv表和columns_priv

3.4 procs_priv

4. 访问控制(了解)

 5. 角色管理 zx

5.1 角色的理解

 5.2 创建角色

 5.3 给角色赋予权限

 5.4 查看角色的权限

 5.5 回收角色的权限

5.6 删除角色

5.7 给用户赋予角色

5.8 激活角色

5.9 撤销用户的角色

回收角色之后,用户要重新登陆

5.10 设置强制角色(mandatory role)

 5.11小结

6、 配置文件的使用

 

 

7、系统变量(复习)

04_逻辑架构

1. 逻辑架构剖析

1.1 服务器处理客户端请求

1.2 Connectors

1.3 1层:连接层

 

 1.4 服务层

 

1.5 引擎层

1.6存储层

小结

2. SQL执行流程

2.1 MySQL 中的 SQL执行流程

 

 0 关闭 1 开启 2按需使用

 

 执行顺序

2.2 MySQL8SQL执行原理

 

 

 

2.3 MySQL5.7SQL执行原理

/etc/my.cnf

 

2.4 SQL语法顺序

2.5 Oracle中的SQL执行流程(了解)

 

 

3. 数据库缓冲池(buffer pool)

3.1 缓冲池 vs 查询缓存

缓冲池和查询缓存是一个东西吗?不是。

 

3.2 缓冲池如何读取数据

3.3 查看/设置缓冲池的大小

3.4 多个Buffer Pool实例

3.5 引申问题

05_存储引擎

 1. 查看存储引擎

2. 设置系统默认的存储引擎

 

3. 设置表的存储引擎

4. 引擎介绍

4.1 InnoDB 引擎:具备外键支持功能的事务存储引擎

4.2 MyISAM 引擎:主要的非事务处理存储引擎

4.3 Archive 引擎:用于数据存档 (关注一下)

4.4 Blackhole 引擎:丢弃写操作,读操作会返回空内容

4.5 CSV 引擎:存储数据时,以逗号分隔各个数据项 (关注一下)

4.6 Memory 引擎:置于内存的表 (关注一下)

4.7 Federated 引擎:访问远程表

4.8 Merge引擎:管理多个MyISAM表构成的表集合

4.9 NDB引擎:MySQL集群专用存储引擎

4.10 引擎对比

5. MyISAMInnoDB

很多人对 InnoDB MyISAM 的取舍存在疑问,到底选择哪个比较好呢?
MySQL5.5之前的默认存储引擎是MyISAM5.5之后改为了InnoDB

6. 阿里巴巴、淘宝用哪个 (课外补充)

 1InnoDB表的优势

2InnoDBACID模型

3InnoDB架构

 06_索引的数据结构

1. 为什么使用索引

 2. 索引及其优缺点

 3. InnoDB中索引的推演

3.1 索引之前的查找

3.2 设计索引

 

 1. 一个简单索引的设计方案

 

 2. InnoDB中的索引方案
① 迭代1次:目录项纪录的页

② 迭代2次:多个目录项纪录的页

 ③ 迭代3次:目录项记录页的目录页

 

 B+Tree

树的层次越低, 磁盘io次数越少。

一个数据页最多存储16kb,

3.3 常见索引概念

索引按照物理实现方式,索引可以分为 2 种:聚簇(聚集)和非聚簇(非聚集)索引。我们也把非聚集
索引称为二级索引或者辅助索引。
1. 聚簇索引

2. 二级索引(辅助索引、非聚簇索引)

3. 联合索引

3.4 InnoDBB+树索引的注意事项

1. 根页面位置万年不动

2. 内节点中目录项记录的唯一性

二级所以也保留了主键值

3. 一个页面最少存储2条记录

4. MyISAM中的索引方案

 4.2 MyISAM索引的原理

 

 

4.3 MyISAM InnoDB对比

 

5. 索引的代价

6. MySQL数据结构选择的合理性

6.1 全表遍历

6.2 Hash结构

Hsah索引 对等值判断性能较好

6.3 二叉搜索树

6.4 AVL

6.5 B-Tree

6.6 B+Tree

思考题

        思考题:Hash 索引与 B+ 树索引的区别

     但是InnoDB有自适应哈希

   思考题:Hash 索引与 B+ 树索引是在建索引的时候手动指定的吗?

6.7 R树(了解)

6.8小结

附录:算法的时间复杂度

 07_InnoDB数据存储结构

1.数据库的存储结构:页

 1.1磁盘与内存交互的基本单位: 页

 1.2 页结构概述 

1.3 页的上层结构 

 

 2. 页的内部结构 (重)

第一部分 

        每个字节都有自己的作用

        

 第三部分

 

 

 

 2.3 从数据页的角度看B+树如何查询

3. InnoDB行格式 或 记录行格式(重)

 

 

 

 

 

4. 区、段与碎片区

4.1 区

4.2 段  

 

4.3 碎片区 

 4.4 区的分类

5. 表空间

5.1 独立表空间 

5.2 系统表空间

附录:数据页加载的三种方式

08_索引的创建与设计原则

1. 索引的声明与使用

1.1 索引的分类

1.2 创建索引

1. 创建表的时候创建索引 

 创建普通索引
 创建唯一索引

 null值可以多次添加

主键索引

创建单列索引 

创建组合索引 

 遵循最左前缀原则

创建全文索引 (了解)

 info(50)代表索引长度,只考虑前50个进行查找

 创建空间索引

2在已经存在的表上创建索引

1.3 删除索引

 

2. MySQL8.0索引新特性

2.1 支持降序索引

2.2 隐藏索引

 使隐藏索引对查询优化器可见(了解)

3. 索引的设计原则

3.1 数据准备

3.2 哪些情况适合创建索引

1. 字段的数值有唯一性的限制

2. 频繁作为 WHERE 查询条件的字段

3. 经常 GROUP BY ORDER BY 的列
创建联合索引时,group by 写前面,order by 的写后面
4. UPDATEDELETE WHERE 条件列

5.DISTINCT 字段需要创建索引
6. 多表 JOIN 连接操作时,创建索引注意事项

7. 使用列的类型小的创建索引

8. 使用字符串前缀创建索引

9. 区分度高(散列性高)的列适合作为索引

10. 使用最频繁的列放到联合索引的左侧

 最左前缀原则

11. 在多个字段都要创建索引的情况下,联合索引优于单值索引

3.3 限制索引的数目

3.4 哪些情况不适合创建索引

1. where中使用不到的字段,不要设置索引

2. 数据量小的表最好不要使用索引

3. 有大量重复数据的列上不要建立索引

4. 避免对经常更新的表创建过多的索引

5. 不建议用无序的值作为索引

6. 删除不再使用或者很少使用的索引

7. 不要定义冗余或重复的索引

 3.5 小结

 09_性能分析工具的使用

1. 数据库服务器的优化步骤

2. 查看系统性能参数

3. 统计SQL的查询成本:last_query_cost

查询读取的数据页

4. 定位执行慢的 SQL:慢查询日志

4.1 开启慢查询日志参数

4.2 查看慢查询数目

4.3 案例演示

4.4 测试及分析

4.5 慢查询日志分析工具:mysqldumpslow

4.6 关闭慢查询日志

4.7 删除慢查询日志

5. 查看 SQL 执行成本:SHOW PROFILE

6. 分析查询语句:EXPLAIN (重点工具)

        查看执行计划,但是不会 增删改 数据

6.1 概述

6.2 基本语法

6.3 数据准备

6.4 EXPLAIN各列作用

5. type (重要)

越在前的效率越高

小结
6. possible_keyskey

key_len长度计算

row

Extra

exist和in

7. EXPLAIN的进一步使用

7.1 EXPLAIN四种输出格式

7.2 SHOW WARNINGS的使用

8. 分析优化器执行计划:trace

9. MySQL监控分析视图-sys schema

9.1 Sys schema视图摘要

9.2 Sys schema视图使用场景

10_索引优化与查询优化

1. 数据准备

2. 索引失效案例

2.1 全值匹配我最爱

2.2 最佳左前缀法则

2.3 主键插入顺序

2.4 计算、函数、类型转换(自动或手动)导致索引失效

2.5 类型转换导致索引失效

2.6 范围条件右边的列索引失效

可以把范围条件的字段写到索引的最后面

2.7 不等于(!= 或者<>)索引失效

2.8 is null可以使用索引,is not null无法使用索引

2.9 like以通配符%开头索引失效

2.10 OR 前后存在非索引的列,索引失效

or 前后的字段都加索引

2.11 数据库和表的字符集统一使用utf8mb4

2.12 练习及一般性建议

3. 关联查询优化

3.1 数据准备

3.2 采用左外连接

3.3 采用内连接

3.4 join语句原理

3.5 小结

4. 子查询优化

5. 排序优化

5.1 排序优化

5.2测试

最后一个可以用索引,倒着扫描

5.3 案例实战

5.4 filesort算法:双路排序和单路排序

6. GROUP BY优化

7. 优化分页查询

8. 优先考虑覆盖索引

8.1 什么是覆盖索引?

8.2 覆盖索引的利弊

9. 如何给字符串添加索引

9.1 前缀索引

9.2 前缀索引对覆盖索引的影响

10. 索引下推

10.1 使用前后的扫描过程

10.2 ICP的使用条件

10.3 ICP使用案例

11. 普通索引 vs 唯一索引

11.1 查询过程

11.2 更新过程

11.3 change buffer的使用场景

12. 其它查询优化策略

12.1 EXISTS IN 的区分

12.2 COUNT(*)COUNT(具体字段)效率

12.3 关于SELECT(*)

12.4 LIMIT 1 对优化的影响

12.5 多使用COMMIT

13. 淘宝数据库,主键如何设计的?

13.1 自增ID的问题

13.2 业务字段做主键

13.3 淘宝的主键设计

13.4 推荐的主键设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值