书籍详情

高性能MySQL(第3版)

高性能MySQL(第3版)

作者:(美)施瓦茨(Schwartz,B.)(美)扎伊采夫(Zaitsev,P.)(美)特卡琴科(Tkachenko,V.)著

出版社:电子工业出版社

出版时间:2013-05-01

ISBN:9787121198854

定价:¥128.00

购买这本书可以去
内容简介
  《高性能MySQL(第3版)》是MySQL领域的经典之作,拥有广泛的影响力。第3版更新了大量的内容,不但涵盖了最新MySQL5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。《高性能MySQL(第3版)》共分为16章和6个附录,内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。《高性能MySQL(第3版)》不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从《高性能MySQL(第3版)》有所收获。
作者简介
暂缺《高性能MySQL(第3版)》作者简介
目录
推荐序....................................................................... xxiii 前言............................................................................xxv 第1 章 MySQL 架构与历史 ............................................ 1 1.1 MySQL 逻辑架构............................................................................................1 1.1.1 连接管理与安全性.................................................................................2 1.1.2 优化与执行............................................................................................3 1.2 并发控制.........................................................................................................3 1.2.1 读写锁...................................................................................................4 1.2.2 锁粒度...................................................................................................4 1.3 事务.................................................................................................................6 1.3.1 隔离级别...............................................................................................8 1.3.2 死锁.......................................................................................................9 1.3.3 事务日志.............................................................................................10 1.3.4 MySQL 中的事务................................................................................10 1.4 多版本并发控制 ............................................................................................12 1.5 MySQL 的存储引擎......................................................................................13 1.5.1 InnoDB 存储引擎................................................................................16 1.5.2 MyISAM 存储引擎..............................................................................17 1.5.3 MySQL 内建的其他存储引擎..............................................................19 1.5.4 第三方存储引擎..................................................................................22 1.5.5 选择合适的引擎..................................................................................24 1.5.6 转换表的引擎......................................................................................27 1.6 MySQL 时间线(Timeline)..........................................................................29 1.7 MySQL 的开发模式......................................................................................32 1.8 总结...............................................................................................................33 第2 章 MySQL 基准测试 ............................................. 35 2.1 为什么需要基准测试....................................................................................35 2.2 基准测试的策略 ............................................................................................37 2.2.1 测试何种指标......................................................................................38 2.3 基准测试方法................................................................................................40 2.3.1 设计和规划基准测试...........................................................................41 2.3.2 基准测试应该运行多长时间................................................................42 2.3.3 获取系统性能和状态 ...........................................................................43 2.3.4 获得准确的测试结果...........................................................................44 2.3.5 运行基准测试并分析结果...................................................................46 2.3.6 绘图的重要性......................................................................................47 2.4 基准测试工具................................................................................................49 2.4.1 集成式测试工具..................................................................................49 2.4.2 单组件式测试工具...............................................................................50 2.5 基准测试案例................................................................................................52 2.5.1 http_load ..............................................................................................53 2.5.2 MySQL 基准测试套件.........................................................................54 2.5.3 sysbench ..............................................................................................55 2.5.4 数据库测试套件中的dbt2 TPC-C 测试 ...............................................60 2.5.5 Percona 的TPCC-MySQL 测试工具 ....................................................63 2.6 总结 ...............................................................................................................65 第3 章 服务器性能剖析............................................... 67 3.1 性能优化简介................................................................................................67 3.1.1 通过性能剖析进行优化.......................................................................69 3.1.2 理解性能剖析......................................................................................71 3.2 对应用程序进行性能剖析.............................................................................72 3.2.1 测量PHP 应用程序.............................................................................74 3.3 剖析MySQL 查询.........................................................................................77 3.3.1 剖析服务器负载..................................................................................77 3.3.2 剖析单条查询......................................................................................81 3.3.3 使用性能剖析......................................................................................87 3.4 诊断间歇性问题............................................................................................88 3.4.1 单条查询问题还是服务器问题............................................................89 3.4.2 捕获诊断数据 ......................................................................................93 3.4.3 一个诊断案例......................................................................................98 3.5 其他剖析工具.............................................................................................. 106 3.5.1 使用USER_STATISTICS 表 ............................................................. 106 3.5.2 使用strace ......................................................................................... 107 3.6 总结 ............................................................................................................. 108 第4 章 Schema 与数据类型优化 ................................ 111 4.1 选择优化的数据类型.................................................................................. 111 4.1.1 整数类型........................................................................................... 113 4.1.2 实数类型........................................................................................... 113 4.1.3 字符串类型........................................................................................ 114 4.1.4 日期和时间类型................................................................................ 121 4.1.5 位数据类型........................................................................................ 123 4.1.6 选择标识符(identifier).................................................................... 125 4.1.7 特殊类型数据.................................................................................... 127 4.2 MySQL schema 设计中的陷阱.................................................................... 127 4.3 范式和反范式.............................................................................................. 129 4.3.1 范式的优点和缺点............................................................................. 130 4.3.2 反范式的优点和缺点......................................................................... 130 4.3.3 混用范式化和反范式化..................................................................... 131 4.4 缓存表和汇总表.......................................................................................... 132 4.4.1 物化视图........................................................................................... 134 4.4.2 计数器表........................................................................................... 135 4.5 加快ALTER TABLE 操作的速度 ............................................................... 136 4.5.1 只修改.frm 文件............................................................................... 137 4.5.2 快速创建MyISAM 索引 .................................................................... 139 4.6 总结............................................................................................................. 140 第5 章 创建高性能的索引.......................................... 141 5.1 索引基础..................................................................................................... 141 5.1.1 索引的类型........................................................................................ 142 5.2 索引的优点................................................................................................. 152 5.3 高性能的索引策略...................................................................................... 153 5.3.1 独立的列........................................................................................... 153 5.3.2 前缀索引和索引选择性 ..................................................................... 153 5.3.3 多列索引........................................................................................... 157 5.3.4 选择合适的索引列顺序..................................................................... 159 5.3.5 聚簇索引........................................................................................... 162 5.3.6 覆盖索引........................................................................................... 171 5.3.7 使用索引扫描来做排序 ..................................................................... 175 5.3.8 压缩(前缀压缩)索引..................................................................... 177 5.3.9 冗余和重复索引................................................................................ 178 5.3.10 未使用的索引.................................................................................. 181 5.3.11 索引和锁.......................................................................................... 181 5.4 索引案例学习.............................................................................................. 183 5.4.1 支持多种过滤条件............................................................................. 183 5.4.2 避免多个范围条件............................................................................. 185 5.4.3 优化排序........................................................................................... 186 5.5 维护索引和表.............................................................................................. 187 5.5.1 找到并修复损坏的表......................................................................... 187 5.5.2 更新索引统计信息............................................................................. 188 5.5.3 减少索引和数据的碎片..................................................................... 190 5.6 总结 ............................................................................................................. 192 第6 章 查询性能优化................................................. 195 6.1 为什么查询速度会慢.................................................................................. 195 6.2 慢查询基础:优化数据访问....................................................................... 196 6.2.1 是否向数据库请求了不需要的数据.................................................. 196 6.2.2 MySQL 是否在扫描额外的记录........................................................ 198 6.3 重构查询的方式.......................................................................................... 201 6.3.1 一个复杂查询还是多个简单查询...................................................... 201 6.3.2 切分查询........................................................................................... 202 6.3.3 分解关联查询.................................................................................... 203 6.4 查询执行的基础.......................................................................................... 204 6.4.1 MySQL 客户端/ 服务器通信协议 ..................................................... 205 6.4.2 查询缓存........................................................................................... 208 6.4.3 查询优化处理.................................................................................... 208 6.4.4 查询执行引擎.................................................................................... 222 6.4.5 返回结果给客户端............................................................................. 223 6.5 MySQL 查询优化器的局限性..................................................................... 223 6.5.1 关联子查询........................................................................................ 223 6.5.2 UNION 的限制.................................................................................. 228 6.5.3 索引合并优化.................................................................................... 228 6.5.4 等值传递........................................................................................... 229 6.5.5 并行执行 ........................................................................................... 229 6.5.6 哈希关联........................................................................................... 229 6.5.7 松散索引扫描.................................................................................... 229 6.5.8 最大值和最小值优化......................................................................... 231 6.5.9 在同一个表上查询和更新................................................................. 232 6.6 查询优化器的提示(hint) ........................................................................... 232 6.7 优化特定类型的查询.................................................................................. 236 6.7.1 优化COUNT() 查询 .......................................................................... 236 6.7.2 优化关联查询.................................................................................... 239 6.7.3 优化子查询........................................................................................ 239 6.7.4 优化GROUP BY 和DISTINCT ........................................................ 239 6.7.5 优化LIMIT 分页............................................................................... 241 6.7.6 优化SQL_CALC_FOUND_ROWS ................................................... 243 6.7.7 优化UNION 查询.............................................................................. 243 6.7.8 静态查询分析.................................................................................... 244 6.7.9 使用用户自定义变量......................................................................... 244 6.8 案例学习..................................................................................................... 251 6.8.1 使用MySQL 构建一个队列表 ........................................................... 251 6.8.2 计算两点之间的距离......................................................................... 254 6.8.3 使用用户自定义函数......................................................................... 257 6.9 总结............................................................................................................. 258 第7 章 MySQL 高级特性 ........................................... 259 7.1 分区表......................................................................................................... 259 7.1.1 分区表的原理.................................................................................... 260 7.1.2 分区表的类型.................................................................................... 261 7.1.3 如何使用分区表................................................................................ 262 7.1.4 什么情况下会出问题......................................................................... 263 7.1.5 查询优化........................................................................................... 266 7.1.6 合并表............................................................................................... 267 7.2 视图............................................................................................................. 270 7.2.1 可更新视图........................................................................................ 272 7.2.2 视图对性能的影响............................................................................. 273 7.2.3 视图的限制........................................................................................ 274 7.3 外键约束..................................................................................................... 275 7.4 在MySQL 内部存储代码............................................................................ 276 7.4.1 存储过程和函数................................................................................ 278 7.4.2 触发器............................................................................................... 279 7.4.3 事件................................................................................................... 281 7.4.4 在存储程序中保留注释..................................................................... 283 7.5 游标............................................................................................................. 283 7.6 绑定变量..................................................................................................... 284 7.6.1 绑定变量的优化................................................................................ 286 7.6.2 SQL 接口的绑定变量........................................................................ 286 7.6.3 绑定变量的限制................................................................................ 288 7.7 用户自定义函数.......................................................................................... 289 7.8 插件............................................................................................................. 290 7.9 字符集和校对.............................................................................................. 291 7.9.1 MySQL 如何使用字符集................................................................... 292 7.9.2 选择字符集和校对规则..................................................................... 295 7.9.3 字符集和校对规则如何影响查询...................................................... 296 7.10 全文索引................................................................................................... 299 7.10.1 自然语言的全文索引....................................................................... 300 7.10.2 布尔全文索引.................................................................................. 302 7.10.3 MySQL5.1 中全文索引的变化......................................................... 303 7.10.4 全文索引的限制和替代方案............................................................ 304 7.10.5 全文索引的配置和优化................................................................... 306 7.11 分布式(XA)事务 ................................................................................... 307 7.11.1 内部XA 事务.................................................................................. 307 7.11.2 外部XA 事务 .................................................................................. 308 7.12 查询缓存................................................................................................... 309 7.12.1 MySQL 如何判断缓存命中............................................................. 309 7.12.2 查询缓存如何使用内存 ................................................................... 311 7.12.3 什么情况下查询缓存能发挥作用.................................................... 313 7.12.4 如何配置和维护查询缓存............................................................... 316 7.12.5 InnoDB 和查询缓存......................................................................... 319 7.12.6 通用查询缓存优化........................................................................... 320 7.12.7 查询缓存的替代方案....................................................................... 321 7.13 总结........................................................................................................... 321 第8 章 优化服务器设置............................................. 325 8.1 MySQL 配置的工作原理............................................................................. 326 8.1.1 语法、作用域和动态性..................................................................... 327 8.1.2 设置变量的副作用............................................................................. 328 8.1.3 入门 ................................................................................................... 331 8.1.4 通过基准测试迭代优化..................................................................... 332 8.2 什么不该做................................................................................................. 333 8.3 创建MySQL 配置文件............................................................................... 335 8.3.1 检查MySQL 服务器状态变量 ........................................................... 339 8.4 配置内存使用.............................................................................................. 340 8.4.1 MySQL 可以使用多少内存?............................................................ 340 8.4.2 每个连接需要的内存......................................................................... 341 8.4.3 为操作系统保留内存......................................................................... 341 8.4.4 为缓存分配内存................................................................................ 342 8.4.5 InnoDB 缓冲池(Buffer Pool) .......................................................... 342 8.4.6 MyISAM 键缓存(Key Caches) ........................................................ 344 8.4.7 线程缓存........................................................................................... 346 8.4.8 表缓存(Table Cache) ....................................................................... 347 8.4.9 InnoDB 数据字典(Data Dictionary)................................................ 348 8.5 配置MySQL 的I/O 行为............................................................................ 349 8.5.1 InnoDB I/O 配置................................................................................ 349 8.5.2 MyISAM 的I/O 配置......................................................................... 361 8.6 配置MySQL 并发 ....................................................................................... 363 8.6.1 InnoDB 并发配置.............................................................................. 364 8.6.2 MyISAM 并发配置............................................................................ 365 8.7 基于工作负载的配置.................................................................................. 366 8.7.1 优化BLOB 和TEXT 的场景............................................................. 367 8.7.2 优化排序(Filesorts)......................................................................... 368 8.8 完成基本配置.............................................................................................. 369 8.9 安全和稳定的设置...................................................................................... 371 8.10 高级InnoDB 设置..................................................................................... 374 8.11 总结........................................................................................................... 376 第9 章 操作系统和硬件优化....................................... 377 9.1 什么限制了MySQL 的性能........................................................................ 377 9.2 如何为MySQL 选择CPU ........................................................................... 378 9.2.1 哪个更好:更快的CPU 还是更多的CPU......................................... 378 9.2.2 CPU 架构........................................................................................... 380 9.2.3 扩展到多个CPU 和核心 ................................................................... 381 9.3 平衡内存和磁盘资源 .................................................................................. 382 9.3.1 随机I/O 和顺序I/O ........................................................................... 383 9.3.2 缓存,读和写.................................................................................... 384 9.3.3 工作集是什么.................................................................................... 385 9.3.4 找到有效的内存/ 磁盘比例 .............................................................. 386 9.3.5 选择硬盘........................................................................................... 387 9.4 固态存储..................................................................................................... 389 9.4.1 闪存概述........................................................................................... 390 9.4.2 闪存技术........................................................................................... 391 9.4.3 闪存的基准测试................................................................................ 392 9.4.4 固态硬盘驱动器(SSD
猜您喜欢