36.数据库进阶

发布时间 2024-01-04 11:29:16作者: 想要暴富的小男孩
目录
❖ MySQL 中 SQL 执行原理
❖ 索引
❖ explain
❖ 事务
❖ 日志
MySQL 中 SQL 执行原理
SQL 语句执行过程
Server 组件
❖ 连接器:连接管理,权限验证
❖ 查询缓存:命中直接返回结果
❖ 分析器:语法分析
❖ 优化器:生成执行计划,选择索引
❖ 执行器:操作引擎,返回结果
索引
索引定义
❖ 索引是存储的表中一个特定列的值数据结构
❖ 索引包含一个表中列的值,并且这些值存储在一个数据结构中
索引分类
❖ 单列索引
❖ 普通索引
❖ 唯一索引:允许 NULL 值
❖ 主键索引:不允许 NULL 值
❖ 组合索引
❖ 全文索引
索引优势
❖ 提高数据检索的效率,降低数据库的 IO 成本
❖ 通过索引对数据进行排序,降低数据排序的成本,降低了 CPU 的消耗
索引劣势
❖ 占用空间
❖ 降低更新表的速度
❖ 需要花时间研究建立最优秀的索引,或者优化
索引适合的场景
❖ 主键自动建立唯一索引
❖ 频繁作为查询条件的字段应该创建索引
❖ 查询中与其他表关联的字段,外键关系建立索引
❖ 查询中排序的字段
explain
explain - 执行计划
❖ 模拟优化器执行 SQL 查询语句
❖ 分析查询语句或是表结构的性能瓶颈
explain 使用
❖ explain + SQL 语句
explain 作用
❖ 表的读取顺序
❖ 数据读取操作的操作类型
❖ 哪些索引可以使用
❖ 哪些索引被实际使用
❖ 表之间的引用
❖ 每张表有多少行被优化器查询
事务
事务概念
❖ 数据库事务 ( transaction) 是访问并可能操作各种数据项的一个数据库操作序
列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。
❖ 事务由事务开始与事务结束之间执行的全部数据库操作组成。
事务特点 - ACID
❖ 原子性 Atomicity
❖ 一致性 Consistency
❖ 隔离性 Isolation
❖ 持久性 Durability
事务操作
❖ begin 开始一个事务
❖ rollback 事务回滚
❖ commit 事务提交
日志
统计日志
❖ slow log :慢查询日志,超出预设的 long_query_time 阈值的 SQL 记录
❖ general log :全局查询日志,所有 SQL 查询的记录
查看慢查询日志
❖ 查看日志开关: show variables like '%query%';
❖ 打开日志开关: set global slow_query_log='ON';
❖ 设置阈值: set long_query_time=0.01;
❖ 执行 SQL 语句
❖ 查看日志内容
在表中查看日志
❖ 修改日志存放方式: set global log_output = 'table';
❖ 查看表中内容: select * from mysql.slow_log;
查看全局查询日志
❖ 查看变量信息: show variables like '%general%';
❖ 打开日志开关: set global general_log = 'ON';
❖ 执行 SQL 语句
❖ 查看表中日志内容: select * from mysql.general_log;