-
第1章 什么影响了数据库查询速度
- 1.1 影响数据库查询速度的四个因素
- 1.1.1 SQL查询速度
- 1.1.2 服务器硬件
- 1.1.3 磁盘IO
- 1.1.4 网卡流量
- 1.2 风险分析
- 1.3 网卡流量:如何避免无法连接数据库的情况
- 1.4 大表带来的问题
- 1.4.1 大表的特点
- 1.4.2 大表的危害
- 1.4.3 如何处理数据库上的大表
- 1.5 大事务带来的问题
- 1.5.1 什么是事务
- 1.5.2 事务的ACID属性
- 1.5.3 大事务
- 1.1 影响数据库查询速度的四个因素
-
第2章 什么影响了MySQL性能
- 2.1 影响性能的几个方面
- 2.1.1 服务器硬件
- 2.1.2 服务器系统(系统参数优化)
- 2.1.3 存储引擎
- MyISAM: 不支持事务,表级锁
- InnoDB: 支持事务,支持行级锁,事务ACID
- 2.1.4 数据库参数配置
- 2.1.5 数据库结构设计和SQL语句(重点优化)
- 2.2 MySQL体系结构
- 2.3 InnoDB存储引擎
- 2.3.1 InnoDB使用表空间进行数据存储
- 2.3.2 系统表空间与独立表空间
- 2.3.3 系统表空间的表转移到独立表空间中的方法
- 2.4 InnoDB存储引擎的特性
- 2.4.1 特性一:事务性存储引擎及两个特殊日志类型:Redo Log 和 Undo Log
- 2.4.2 特性二:支持行级锁
- 2.5 什么是锁
- 2.5.1 锁
- 2.5.2 锁类型
- 2.5.3 锁的粒度
- 2.5.4 阻塞和死锁
- 2.6 如何选择正确的存储引擎
- 2.7 配置参数
- 2.7.1 内存配置相关参数
- 2.8 性能优化顺序
- 2.1 影响性能的几个方面
-
-
3.1 字段类型
- 3.1.1 数值
- 3.1.2 字符串类型
- 3.1.3 时间类型
-
3.2 举例
- 3.2.1 int(11)最大长度是多少?
- 3.2.2 varchar最大长度是多少?
-
3.3 总结:合理的选择数据类型
-
-
第4章 数据库结构优化
- 4.1 数据库结构优化目的
- 4.2 数据库结构设计步骤
- 4.3 数据库逻辑设计之三大范式通俗理解及优缺点
- 4.3.1 第一范式
- 4.3.2 第二范式
- 4.3.3 第三范式
- 4.3.4 反范式化
- 4.3.5 范式化设计和反范式化设计的优缺点
- 4.4 物理设计
- 4.4.1 ER图设计
- 实体之间联系
- 实例演示
- 4.4.2 数据建模工具及演示
- 4.4.3 数据字典
- 4.4.1 ER图设计
-
第5章 数据库索引优化
- 5.1 数据结构及算法基础
- 5.1.1 索引的本质
- 5.1.2 B-Tree和B+Tree
- 5.1.3 为什么实用B-Tree(B+Tree)
- 5.2 MySQL索引实现
- 5.2.1 MyISAM索引实现
- 5.2.2 InnoDB索引实现
- 5.3 两种主要数据结构:B-tree和Hash
- 5.3.1 B-tree结构
- 5.3.2 Hash结构
- 5.3.3 MySQL常见索引和各种索引区别
- 5.4 使用索引好处和索引缺陷
- 5.4.1 为什么要使用索引
- 5.4.2 索引缺陷
- 5.5 索引优化策略
- 5.5.1 索引列上不能使用表达式和函数
- 5.5.2 前缀索引和索引列的选择性
- 5.5.3 联合索引策略
- 5.5.4 覆盖索引策略
- 5.5.5 SQL索引优化总结口诀
- 5.6 使用索引来优化查询
- 5.6.1 利用索引排序
- 5.7 索引的维护和优化
- 5.7.1 删除重复索引
- 5.7.2 删除冗余索引
- 5.8 InnoDB的主键选择与插入优化
- 5.1 数据结构及算法基础
-
第6章 SQL查询优化
- 6.1 获取有性能问题SQL的三种方式
- 6.1.1 通过用户反馈获取存在性能问题的SQL
- 6.1.2 慢查日志分析工具
- mysqldumpslow
- pt-query-digest
- 6.1.3 实时获取有性能问题的SQL
- 6.2 优化神器 Explain 执行计划使用分析
- 6.2.1 使用 Navicat
- 6.2.2 Explain 语法、意义
- Explain 语法
- Explain desc
- Explain 字段反馈的建议
- 6.2.3 关于key_len的计算
- 6.2.4 关于type的一些知识
- 6.3 SQL的解析预处理及生成执行计划
- 6.3.1 查询过程描述
- 6.3.2 查询缓存对性能的影响(建议关闭缓存)
- 6.3.3 MySQL依照执行计划和存储引擎进行交互
- 6.4 会造成MySQL生成错误的执行计划的原因
- 6.5 MySQL优化器可优化的SQL类型
- 6.6 查询处理各个阶段所需要的时间
- 6.6.1 profile
- 6.6.2 performance_schema
- 6.7 特定SQL的查询优化
- 6.7.1 大表的数据修改
- 6.7.2 大表的结构修改
- 6.7.3 优化not in 和 <> 查询
- 6.1 获取有性能问题SQL的三种方式
-
第7章 MySQL常见问题与优化
- 7.1 null与not null和null与空值''的区别
- 7.1.1 探究之null与not null
- 7.1.2 null和空值''的区别
- 7.2 limit用法和分页查询的性能分析及优化
- 7.2.1 limit用法
- 7.2.2 分页查询语句的性能分析
- 7.2.3 对于有大数据量的表,使用LIMIT分页优化思想
- 7.3 批量SQL插入性能优化
- 7.3.1 一条SQL语句插入多条数据
- 7.3.2 在事务中进行插入处理
- 7.3.3 数据有序插入
- 7.3.4 性能综合测试
- 7.3.4 注意事项
- SQL语句长度限制
- 事务需要控制大小
- 7.4 JOIN图解、原理和优化
- 7.4.1 如何正确的使用JOIN从句
- 7.4.2 SQL标准中JOIN类型图解
- 7.4.2.1 内连接(INNER)
- 7.4.2.2 全外连接(FULL OUTER)
- 7.4.2.3 左外连接(LEFT OUTER)
- 7.4.2.4 右外连接(RIGHT OUTER)
- 7.4.2.5 交叉连接(CROSS)
- 7.4.3 JOIN原理
- 7.4.4 JOIN语句的优化
- 7.1 null与not null和null与空值''的区别
-
第8章 MySQL主从复制和MyCat数据库中间件实现读写分离
- 8.1 主从复制
- 8.1.1 复制概述
- mysql支持的复制类型
- 复制解决的问题
- 复制如何工作
- 8.1.2 复制配置
- 创建复制帐号
- 拷贝数据
- 配置master
- 配置slave
- 启动slave
- 8.1.3 实例测试主从
- 8.1.1 复制概述
- 8.2 MyCat数据库中间件实现读写分离
- 8.2.1 安装MyCat
- 8.2.2 配置MyCat
- 配置server.xml
- 配置schema.xml
- 配置主从服务器
- 添加真实用户
- 测试真实用户连接
- 8.2.3 启动MyCat
- 常用参数
- 启动,并查看mycat
- 8.2.4 测试读写分离
- 8.1 主从复制
-
第9章 分库分表
- 9.1 分库分表的几种方式
- 9.1.1 把一个实例中的多个数据库拆分到不同实例(集群)
- 9.1.2 把一个库中的表分离到不同的数据库中
- 9.1.3 数据库分片
- 9.2 表的垂直拆分和水平拆分
- 9.2.1 垂直拆分
- 拆分原则
- 优缺点
- 9.2.2 水平拆分
- 拆分原则
- 优缺点
- 9.2.3 案例分析
- 场景一:商场订单系统
- 场景二:公积金,养老金,社保系统
- 9.2.1 垂直拆分
- 9.1 分库分表的几种方式
-
第10章 备份与恢复详解
- 10.1 备份类型
- 10.1.1 热备份、温备份、冷备份
- 10.1.2 物理备份与逻辑备份
- 10.1.3 完全备份、增量备份、差异备份
- 10.1.4 完全备份、增量备份、差异备份
- 10.1.5 逻辑备份的优点
- 10.1.6 逻辑备份的缺点
- 10.2 备份都备份什么?
- 10.3 常用的备份工具
- 10.3.1 MySQL自带的备份工具
- mysqldump 逻辑备份工具
- mysqlhotcopy 物理备份工具
- 10.3.2 文件系统备份工具
- cp 冷备份
- lvm 几乎是热备份
- 10.3.3 其它工具
- 商业工具:ibbackup
- 开源工具:xtrabackup
- 10.3.1 MySQL自带的备份工具
- 10.4 备份策略具体演示
- 10.4.1 策略一:直接拷贝数据库文件
- 10.4.1 策略二:mysqldump备份数据库
- 10.4.1 策略三:lvs快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份,速度快适合比较烦忙的数据库
- 10.4.1 策略四:xtrabackup 备份数据库,实现完全热备份与增量热备份
- 10.4.1 策略五:主从复制(replication)实现数据库实时备份(集群中常用)
- 10.4.1 总结
- 10.1 备份类型