Skip to content

Latest commit

 

History

History
233 lines (214 loc) · 9.31 KB

File metadata and controls

233 lines (214 loc) · 9.31 KB

目录大纲

  • 第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 大事务
  • 第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 性能优化顺序
  • 第3章 MySQL中字段类型与合理的选择字段类型

    • 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 数据字典
  • 第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的主键选择与插入优化
  • 第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 和 <> 查询
  • 第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语句的优化
  • 第8章 MySQL主从复制和MyCat数据库中间件实现读写分离

    • 8.1 主从复制
      • 8.1.1 复制概述
        • mysql支持的复制类型
        • 复制解决的问题
        • 复制如何工作
      • 8.1.2 复制配置
        • 创建复制帐号
        • 拷贝数据
        • 配置master
        • 配置slave
        • 启动slave
      • 8.1.3 实例测试主从
    • 8.2 MyCat数据库中间件实现读写分离
      • 8.2.1 安装MyCat
      • 8.2.2 配置MyCat
        • 配置server.xml
        • 配置schema.xml
        • 配置主从服务器
        • 添加真实用户
        • 测试真实用户连接
      • 8.2.3 启动MyCat
        • 常用参数
        • 启动,并查看mycat
      • 8.2.4 测试读写分离
  • 第9章 分库分表

    • 9.1 分库分表的几种方式
      • 9.1.1 把一个实例中的多个数据库拆分到不同实例(集群)
      • 9.1.2 把一个库中的表分离到不同的数据库中
      • 9.1.3 数据库分片
    • 9.2 表的垂直拆分和水平拆分
      • 9.2.1 垂直拆分
        • 拆分原则
        • 优缺点
      • 9.2.2 水平拆分
        • 拆分原则
        • 优缺点
      • 9.2.3 案例分析
        • 场景一:商场订单系统
        • 场景二:公积金,养老金,社保系统
  • 第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.4 备份策略具体演示
      • 10.4.1 策略一:直接拷贝数据库文件
      • 10.4.1 策略二:mysqldump备份数据库
      • 10.4.1 策略三:lvs快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份,速度快适合比较烦忙的数据库
      • 10.4.1 策略四:xtrabackup 备份数据库,实现完全热备份与增量热备份
      • 10.4.1 策略五:主从复制(replication)实现数据库实时备份(集群中常用)
      • 10.4.1 总结