作品简介

本书以 MySQL 数据库的基础及维护(基础篇)为切入点,重点介绍了 MySQL 数据库应用系统的性能调优(优化篇),以及高可用可扩展的架构设计(架构篇)。

基础篇的主要内容有:MySQL 数据库介绍,架构组成,存储引擎介绍、安全管理,以及基本的备份恢复知识。

优化篇则从影响 MySQL 数据库应用系统性能的因素开始,对各个因素进行调优分析。包括Schema 设计,Query 语句的性能优化, MySQL Server 中SQL层和存储引擎层的优化思路,以及MySQL 数据库锁定机制的实现。

架构篇则以设计一个高可用可扩展的企业级分布式数据库集群环境为目标,分析了多种通过 MySQL 实现这一目标的架构方式,包括可扩展设计和高可用设计两部分内容,如 Replication 的利用,数据切分,Cache 和 Search 的利用,NDB Cluster ,以及系统监控等。

简朝阳,毕业于南京工业大学管理科学与工程学院,管理学学士。擅长MySQL & Oracle数据库应用系统的性能调优与高可用可扩展架构设计,有一定的Java 和C语言基础。目前就职于阿里巴巴(中国)网络技术有限公司,曾参与过公司多个核心数据库应用系统的设计与实施,目前主要负责 MySQL 数据库应用系统的架构设计与相关维护工作。活跃于 iMySQLer 数据库论坛(http://imysqler.com) 和 MySQL 邮件组(mysqler@googlegroups.com, http://groups.google.com/group/mysqler),欢迎大家以 Open 的心态一起分享 MySQL 数据库方面的经验心得。

作品目录

  • 推荐序一
  • 推荐序二
  • 推荐序三
  • 推荐序四
  • 推荐序五
  • 推荐序六
  • 序 言
  • 第1章 MySQL基本介绍
  • 1.0 引言
  • 1.1 MySQL Server简介
  • 1.1.1 什么是MySQL
  • 1.1.2 艰难诞生
  • 1.1.3 寻求发展
  • 1.1.4 巨人崛起
  • 1.2 MySQL与其他数据库的简单比较
  • 1.2.1 功能比较
  • 1.2.2 易用性比较
  • 1.2.3 性能比较
  • 1.2.4 可靠性
  • 1.3 MySQL 的主要适用场景
  • 1.4 小结
  • 第2章 MySQL架构组成
  • 2.0 引言
  • 2.1 MySQL物理文件组成
  • 2.1.1 日志文件
  • 2.1.2 数据文件
  • 2.1.3 Replication相关文件
  • 2.1.4 其他文件
  • 2.2 MySQL Server系统架构
  • 2.2.1 逻辑模块组成
  • 2.2.2 各模块工作配合
  • 2.3 MySQL 自带工具使用介绍
  • 2.4 小结
  • 第3章 MySQL存储引擎简介
  • 3.0 引言
  • 3.1 MySQL存储引擎概述
  • 3.2 MyISAM存储引擎简介
  • 3.3 InnoDB存储引擎简介
  • 3.4 NDB Cluster 存储引擎简介
  • 3.5 其他存储引擎介绍
  • 3.5.1 Merge存储引擎
  • 3.5.2 Memory存储引擎
  • 3.5.3 BDB 存储引擎
  • 3.5.4 FEDERATED存储引擎
  • 3.5.5 ARCHIVE存储引擎
  • 3.5.6 BLACKHOLE存储引擎
  • 3.5.7 CSV存储引擎
  • 3.6 小结
  • 第4章 MySQL安全管理
  • 4.0 引言
  • 4.1 数据库系统安全相关因素
  • 4.1.1 外围网络
  • 4.1.2 主机
  • 4.1.3 数据库
  • 4.1.4 代码
  • 4.2 MySQL 权限系统介绍
  • 4.2.1 权限系统简介
  • 4.2.2 权限授予与去除
  • 4.2.3 权限级别
  • 4.2.4 MySQL访问控制实现原理
  • 4.3 MySQL 访问授权策略
  • 4.4 安全设置注意事项
  • 4.5 小结
  • 第5章 MySQL备份与恢复
  • 5.0 引言
  • 5.1 数据库备份使用场景
  • 5.2 逻辑备份与恢复测试
  • 5.2.1 什么是数据库逻辑备份?
  • 5.2.2 常用的逻辑备份
  • 5.2.3 逻辑备份恢复方法
  • 5.2.4 逻辑备份恢复测试
  • 5.3 物理备份与恢复测试
  • 5.3.1 什么是数据库物理备份
  • 5.3.2 MySQL物理备份所需文件
  • 5.3.3 各存储引擎常用物理备份方法
  • 5.3.4 各存储引擎常用物理备份的恢复方法
  • 5.4 备份策略的设计思路
  • 5.5 小结
  • 第6章 影响MySQL Server性能的相关因素
  • 6.0 引言
  • 6.1 商业需求对性能的影响
  • 6.1.1 不合理的需求造成资源投入产出比过低
  • 6.1.2 无用功能堆积使系统过度复杂,影响整体性能
  • 6.2 系统架构及实现对性能的影响
  • 6.2.1 数据库中存放的数据都适合在此存放吗?
  • 6.2.2 是否合理地利用了应用层Cache机制?
  • 6.2.3 数据层实现都是最精简的吗?
  • 6.2.4 过度依赖数据库Query语句的功能造成数据库操作效率低下
  • 6.2.5 重复执行相同的Query造成资源浪费
  • 6.3 Query语句对系统性能的影响
  • 6.4 Schema设计对系统的性能影响
  • 6.5 硬件环境对系统性能的影响
  • 6.6 小结
  • 第7章 MySQL数据库锁定机制
  • 7.0 引言
  • 7.1 MySQL锁定机制简介
  • 7.2 各种锁定机制分析
  • 7.2.1 表级锁定
  • 7.2.2 读锁定
  • 7.2.3 写锁定
  • 7.2.4 行级锁定
  • 7.3 合理利用锁机制优化MySQL
  • 7.3.1 MyISAM表锁优化建议
  • 7.3.2 InnoDB行锁优化建议
  • 7.3.3 系统锁定争用情况查询
  • 7.4 小结
  • 第8章 MySQL数据库Query的优化
  • 8.0 引言
  • 8.1 理解MySQL的Query Optimizer
  • 8.1.1 MySQL Query Optimizer是什么?
  • 8.1.2 MySQL Query Optimizer基本工作原理
  • 8.2 Query 语句优化基本思路和原则
  • 8.3 充分利用 Explain 和 Profiling
  • 8.3.1 Explain 的使用
  • 8.3.2 Profiling 的使用
  • 8.4 合理设计并利用索引
  • 8.4.1 B-Tree 索引
  • 8.4.2 Hash 索引
  • 8.4.3 Full-text 索引
  • 8.4.4 R-Tree 索引
  • 8.4.5 索引的利弊与如何判定,是否需要索引
  • 8.4.6 单键索引还是组合索引
  • 8.4.7 Query 的索引选择
  • 8.4.8 MySQL中索引的限制
  • 8.5 Join的实现原理及优化思路
  • 8.5.1 Join 的实现原理
  • 8.5.2 Join 语句的优化
  • 8.6 ORDER BY、GROUP BY和DISTINCT的优化
  • 8.6.1 ORDER BY的实现与优化
  • 8.6.2 GROUP BY 的实现与优化
  • 8.6.3 DISTINCT 的实现与优化
  • 8.7 小结
  • 第9章 MySQL数据库Schema
  • 9.0 引言
  • 9.1 高效的模型设计
  • 9.1.1 适度冗余——让Query尽量减少Join
  • 9.1.2 大字段垂直分拆——summary表优化
  • 9.1.3 大表水平分拆——基于类型的分拆优化
  • 9.2 合适的数据类型
  • 9.2.1 数字日期类型
  • 9.2.2 字符存储类型
  • 9.2.3 其他常用类型
  • 9.3 规范的对象命名
  • 9.4 小结
  • 第10章 MySQL Server性能优化
  • 10.0 引言
  • 10.1 MySQL安装优化
  • 10.1.1 选择合适的发行版本
  • 10.2 MySQL日志设置优化
  • 10.2.1 日志产生的性能影响
  • 10.2.2 二进制日志(Binlog)相关参数及优化策略
  • 10.2.3 慢查询日志(Slow Query Log)相关参数及使用建议
  • 10.3 Query Cache 优化
  • 10.3.1 适度使用Query Cache
  • 10.3.2 Query Cache的相关系统参数变量和状态变量
  • 10.3.3 Query Cache的限制
  • 10.4 MySQL Server 其他常用优化
  • 10.4.1 网络连接与连接线程
  • 10.4.2 Table Cache相关的优化
  • 10.4.3 Sort Buffer、Join Buffer和Read Buffer
  • 10.5 小结
  • 第11章 常用存储引擎优化
  • 11.0 引言
  • 11.1 MyISAM存储引擎优化
  • 11.1.1 索引缓存优化
  • 11.1.2 多Key Cache的使用
  • 11.1.3 Key Cache的Mutex问题
  • 11.1.4 Key Cache预加载
  • 11.1.5 NULL值对统计信息的影响
  • 11.1.6 表读取缓存优化
  • 11.1.7 并发优化
  • 11.1.8 其他可以优化的地方
  • 11.2 InnoDB 存储引擎优化
  • 11.2.1 InnoDB缓存相关优化
  • 11.2.2 事务优化
  • 11.2.3 数据存储优化
  • 11.2.4 Innodb其他优化
  • 11.2.5 Innodb性能监控
  • 11.3 小结
  • 第12章 MySQL可扩展设计的基本原则
  • 12.0 引言
  • 12.1 什么是可扩展性
  • 12.2 事务相关性最小化原则
  • 12.3 数据一致性原则
  • 12.4 高可用及数据安全原则
  • 12.5 小结
  • 第13章 可扩展性设计之
  • 13.0 引言
  • 13.1 Replication 对可扩展性设计的意义
  • 13.2 Replication 机制的实现原理
  • 13.2.1 Replication 线程
  • 13.2.2 复制实现级别
  • 13.3 Replication常用架构
  • 13.3.1 常规复制架构(Master - Slaves)
  • 13.3.2 Dual Master复制架构(Master - Master)
  • 13.3.3 级联复制架构(Master - Slaves - Slaves ...)
  • 13.3.4 Dual Master 与级联复制结合架构(Master - Master - Slaves)
  • 13.4 Replication搭建实现
  • 13.5 小结
  • 第14章 可扩展性设计之数据切分
  • 14.0 引言
  • 14.1 何谓数据切分
  • 14.2 数据的垂直切分
  • 14.3 数据的水平切分
  • 14.4 垂直与水平联合切分的使用
  • 14.5 数据切分及整合方案
  • 14.6 数据切分与整合中可能存在的问题
  • 14.7 小结
  • 第15章 可扩展性设计之
  • 15.0 引言
  • 15.1 可扩展设计的数据库之外延伸
  • 15.2 合理利用第三方Cache解决方案
  • 15.2.1 分布式内存 Cache 软件 Memcached
  • 15.2.2 嵌入式数据库编程库 Berkeley DB
  • 15.3 自行实现Cache服务
  • 15.4 利用Search实现高效的全文检索
  • 15.5 利用分布式并行计算实现大数据量的高性能运算
  • 15.6 小结
  • 第16章 MySQL Cluster
  • 16.0 引言
  • 16.1 MySQL Cluster介绍
  • 16.2 MySQL Cluster环境搭建
  • 16.3 MySQL Cluster配置详细介绍(config.ini)
  • 16.4 MySQL Cluster基本管理与维护
  • 16.5 基本优化思路
  • 16.6 小结
  • 第17章 高可用设计思路及方案
  • 17.0 引言
  • 17.1 利用 Replication 来实现高可用架构
  • 17.1.1 用常规Master-Slave架构实现基本主备设计
  • 17.1.2 Master单点问题的解决
  • 17.1.3 Dual Master 与级联复制结合解决异常故障下的高可用
  • 17.1.4 Dual Master与级联复制结合解决在线DDL变更问题
  • 17.2 利用MySQL Cluster实现整体高可用
  • 17.2.1 SQL 节点的高可靠性保证
  • 17.2.2 NDB 节点的高可靠性保证
  • 17.3 利用DRBD保证数据的高安全可靠
  • 17.3.1 DRBD介绍
  • 17.3.2 DRBD 特性与限制
  • 17.4 其他高可用设计方案
  • 17.5 各种高可用方案的利弊比较
  • 17.6 小结
  • 第18章 高可用设计之MySQL监控
  • 18.0 引言
  • 18.1 监控系统设计
  • 18.2 健康状态监控
  • 18.2.1 主机健康状态监控
  • 18.2.2 数据库健康状态信息
  • 18.3 性能状态监控
  • 18.3.1 主机性能状态
  • 18.3.2 数据库性能状态
  • 18.4 常用开源监控软件
  • 18.5 小结
  • 附录A 实验测试 Schema 创建脚本
  • 附录B MySQL部分系统
  • 附录C MySQL部分状态说明
展开全部