您的当前位置:全部分类图书 > 计算机网络 > 数据库 > SQL

高性能MySQL(第3版)

定 价
售 价
配送至
收货地址
其他地址
数量
-
+
服务
  • 出版社:电子工业
  • ISBN:9787121198854
  • 作者:(美)施瓦茨//扎伊采夫//特卡琴科|译者:宁海元//...
  • 页数:764
  • 出版日期:2013-05-01
  • 印刷日期:2013-05-01
  • 包装:平装
  • 开本:16开
  • 版次:1
  • 印次:1
  • 字数:1040千字
  • 只要你不敢以MySQL专家自诩,又岂敢错过这本神书?

    一言以蔽之,写得好,编排得好,需要参考时容易到爆!”“我可是从头到尾看了一遍上一版,可还是毫不犹豫拿起了这本《高性能MySQL(第3版)》,而且看完后一点都不后悔……

  • 《高性能MySQL(第3版)》是MySQL 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新MySQL5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16章和6 个附录,内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。   《高性能MySQL(第3版)》不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。
  • BaronSchwartz是一位软件工程师,居住在弗吉尼亚州的Charlottesville,网络常用名是Xaprb,这是按照QWERTY键盘的顺序在Dvorak键盘上打出来的名字。在不忙于解决有趣的编程挑战时,Baron会和他的妻子Lynn以及小狗Carbon一起享受闲暇的时光。他有一个软件工程方面的博客,地址是http://www.xaprb.com/blog/   PeterZaitsev曾经是MySQLAB公司高性能组的经理,目前在运作mysqlperformanceblog.com网站。他擅长于帮助那些每天有数以百万计访问量的网站的管理员解决问题,这些网站通常需要几百台机器来处理TB级的数据。他常常为了解决一个问题而不停地升级硬件和软件(比如查询优化)。Peter还经常在各种会议上演讲。   VadimTkachenko曾经是MySQLAB公司的性能工程师。作为一名在多线程编程和同步方面的专家,他的主要工作是基准测试、性能剖析,以及找出系统的性能瓶颈。他还在性能监控和调优方面做了一些工作,使得MySQL在多核机器上有更好的可扩展性。   译者简介   宁海元有超过十年的数据库管理经验,从最初的SQLServer2000到Oracle再到MySQL,擅长数据库高可用架构、性能优化和故障诊断。2007年加入淘宝,带领淘宝DBA团队完成了数据库的垂直拆分、水平拆分,迁移到MySQL体系等主要工作,为淘宝业务的快速增长提供支撑。目前专注于无线数据领域。网络常用名NinGoo,个人博客:http://www.ningoo.net   周振兴毕业于北京师范大学数学系,2009年加入淘宝数据库团队,负责MySQL运维管理工作,有丰富的MySQL性能优化、Troubleshooting经验,对MySQL主要模块的实现和原理有深入的研究,经历了淘宝MySQL实例从30到3000的发展,对系统架构、高可用环境规划都有深入理解。个人博客:http://orczhou.com   彭立勋2010年大学毕业后加入********运维部。作为一名MySQLDBA,在运维MySQL的过程中对MySQL和InnoDB的一些功能和缺陷进行了补充,编写了多主复制和数据闪回等补丁。目前在阿里集团核心系统研发部数据库组,专注于MySQL数据库相关的开发工作。后来一些补丁被MySQL之父Mony看中,多主复制、线程内存监控等补丁被合并到了MariaDB10.0版本,本人也因此成为MariaDB提交组(Maria-captains)成员。   翟卫祥毕业于武汉大学,研究生阶段从事数据库相关研究。毕业后就职于********集团数据库技术团队至今,主要负责阿里内部MySQL代码分支维护,包括MySQLBugFix及新特性开发。对MySQL内核有一定的研究。   刘辉2008年毕业于西安电子科技大学计算机系,硕士学位。2011年加入********集团数据库技术团队,花名希羽,MySQL内核开发工程师。
  • **序
    前言
    第1章 MySQL 架构与历史
    第2章 MySQL 基准测试
    第3章 服务器性能剖析
    第4章 Schema 与数据类型优化
    第5章 创建高性能的索引
    第6章 查询性能优化
    第7章 MySQL **特性
    第8章 优化服务器设置
    第9章 操作系统和硬件优化
    **0章 复制
    **1章 可扩展的MySQL
    **2章 高可用性
    **3章 云端的MySQL
    **4章 应用层优化
    **5章 备份与恢复
    **6章 MySQL 用户工具
    附录A MySQL 分支与变种
    附录B MySQL 服务器状态
    附录C 大文件传输
    附录D EXPLAIN
    附录E 锁的调试
    附录F 在MySQL 上使用Sphinx
    索引

    <p>**序<br />
    前言<br />
    第1章 MySQL 架构与历史<br />
    1.1 MySQL 逻辑架构<br />
    1.1.1 连接管理与安全性<br />
    1.1.2 优化与执行<br />
    1.2 并发控制<br />
    1.2.1 读写锁<br />
    1.2.2 锁粒度<br />
    1.3 事务<br />
    1.3.1 隔离级别<br />
    1.3.2 死锁<br />
    1.3.3 事务日志<br />
    1.3.4 MySQL 中的事务<br />
    1.4 多版本并发控制<br />
    1.5 MySQL 的存储引擎<br />
    1.5.1 InnoDB 存储引擎<br />
    1.5.2 MyISAM 存储引擎<br />
    1.5.3 MySQL 内建的其他存储引擎<br />
    1.5.4 第三方存储引擎<br />
    1.5.5 选择合适的引擎<br />
    1.5.6 转换表的引擎<br />
    1.6 MySQL 时间线(Timeline)<br />
    1.7 MySQL 的开发模式<br />
    1.8 总结<br />
    <br />
    第2章 MySQL 基准测试<br />
    2.1 为什么需要基准测试<br />
    2.2 基准测试的策略<br />
    2.2.1 测试何种指标<br />
    2.3 基准测试方法<br />
    2.3.1 设计和规划基准测试<br />
    2.3.2 基准测试应该运行多长时间<br />
    2.3.3 获取系统性能和状态<br />
    2.3.4 获得准确的测试结果<br />
    2.3.5 运行基准测试并分析结果<br />
    2.3.6 绘图的重要性<br />
    2.4 基准测试工具<br />
    2.4.1 集成式测试工具<br />
    2.4.2 单组件式测试工具<br />
    2.5 基准测试案例<br />
    2.5.1 http_load<br />
    2.5.2 MySQL 基准测试套件 .<br />
    2.5.3 sysbench<br />
    2.5.4 数据库测试套件中的dbt2 TPC-C 测试<br />
    2.5.5 Percona 的TPCC-MySQL 测试工具<br />
    2.6 总结<br />
    <br />
    第3章 服务器性能剖析<br />
    3.1 性能优化简介<br />
    3.1.1 通过性能剖析进行优化<br />
    3.1.2 理解性能剖析<br />
    3.2 对应用程序进行性能剖析<br />
    3.2.1 测量PHP 应用程序<br />
    3.3 剖析MySQL 查询<br />
    3.3.1 剖析服务器负载<br />
    3.3.2 剖析单条查询<br />
    3.3.3 使用性能剖析<br />
    3.4 诊断间歇性问题<br />
    3.4.1 单条查询问题还是服务器问题<br />
    3.4.2 捕获诊断数据<br />
    3.4.3 一个诊断案例<br />
    3.5 其他剖析工具<br />
    3.5.1 使用USER_STATISTICS 表<br />
    3.5.2 使用strace<br />
    3.6 总结<br />
    <br />
    第4章 Schema 与数据类型优化<br />
    4.1 选择优化的数据类型<br />
    4.1.1 整数类型<br />
    4.1.2 实数类型<br />
    4.1.3 字符串类型<br />
    4.1.4 日期和时间类型<br />
    4.1.5 位数据类型<br />
    4.1.6 选择标识符(identifier)<br />
    4.1.7 特殊类型数据<br />
    4.2 MySQL schema 设计中的陷阱<br />
    4.3 范式和反范式<br />
    4.3.1 范式的优点和缺点<br />
    4.3.2 反范式的优点和缺点 .<br />
    4.3.3 混用范式化和反范式化<br />
    4.4 缓存表和汇总表<br />
    4.4.1 物化视图<br />
    4.4.2 计数器表<br />
    4.5 加快ALTER TABLE 操作的速度<br />
    4.5.1 只修改.frm 文件<br />
    4.5.2 快速创建MyISAM 索引<br />
    4.6 总结<br />
    <br />
    第5章 创建高性能的索引<br />
    5.1 索引基础<br />
    5.1.1 索引的类型<br />
    5.2 索引的优点<br />
    5.3 高性能的索引策略<br />
    5.3.1 独立的列<br />
    5.3.2 前缀索引和索引选择性<br />
    5.3.3 多列索引<br />
    5.3.4 选择合适的索引列顺序<br />
    5.3.5 聚簇索引<br />
    5.3.6 覆盖索引<br />
    5.3.7 使用索引扫描来做排序<br />
    5.3.8 压缩(前缀压缩)索引<br />
    5.3.9 冗余和重复索引<br />
    5.3.10 未使用的索引<br />
    5.3.11 索引和锁<br />
    5.4 索引案例学习<br />
    5.4.1 支持多种过滤条件<br />
    5.4.2 避免多个范围条件<br />
    5.4.3 优化排序<br />
    5.5 维护索引和表<br />
    5.5.1 找到并修复损坏的表 .<br />
    5.5.2 *新索引统计信息<br />
    5.5.3 减少索引和数据的碎片<br />
    5.6 总结<br />
    <br />
    第6章 查询性能优化<br />
    6.1 为什么查询速度会慢<br />
    6.2 慢查询基础:优化数据访问<br />
    6.2.1 是否向服务器请求了不需要的数据<br />
    6.2.2 MySQL 是否在扫描额外的记录<br />
    6.3 重构查询的方式<br />
    6.3.1 一个复杂查询还是多个简单查询<br />
    6.3.2 切分查询<br />
    6.3.3 分解关联查询<br />
    6.4 查询执行的基础<br />
    6.4.1 MySQL 客户端/ 服务器通信协议<br />
    6.4.2 查询缓存<br />
    6.4.3 查询优化处理<br />
    6.4.4 查询执行引擎<br />
    6.4.5 返回结果给客户端<br />
    6.5 MySQL 查询优化器的局限性<br />
    6.5.1 关联子查询<br />
    6.5.2 UNION 的限制<br />
    6.5.3 索引合并优化<br />
    6.5.4 等值传递<br />
    6.5.5 并行执行<br />
    6.5.6 哈希关联<br />
    6.5.7 松散索引扫描<br />
    6.5.8 *大值和*小值优化 .<br />
    6.5.9 在同一个表上查询和*新<br />
    6.6 查询优化器的提示(hint)<br />
    6.7 优化特定类型的查询<br />
    6.7.1 优化COUNT() 查询<br />
    6.7.2 优化关联查询<br />
    6.7.3 优化子查询<br />
    6.7.4 优化GROUP BY 和DISTINCT<br />
    6.7.5 优化LIMIT 分页<br />
    6.7.6 优化SQL_CALC_FOUND_ROWS<br />
    6.7.7 优化UNION 查询<br />
    6.7.8 静态查询分析<br />
    6.7.9 使用用户自定义变量 .<br />
  • **个趋势,采用了InnoDB plugin的版本,在高并发的时候性能明显*好,可以说InnoDBplugin的扩展性*好。这是可以预期的结果,旧的版本在高并发时确实存在问题。第二个趋势,新的版本在单线程的时候性能比旧版本*差。一开始可能无法理解为什么会这样,仔细想想就能明白,这是一个**简单的只读测试。新版本的SQL语法*复杂,针对复杂查询增加了很多特性和改进,这对于简单查询可能带来了*多的开销。旧版本的代码简单,对于简单的查询反而会*有利。原计划做一个*复杂的不同并发条件下的读写混合场景的测试(类似TPC—C),但要在不同版本间做到可比较基本是不可能的。一般来说,新版本在复杂场景时性能有*多的优化,尤其是高并发和大数据集的情况下。
    那么该如何选择版本呢?这*多地取决于业务需求而不是技术需求。理想情况下当然是版本越新越好,当然也可以选择等到**个bug修复版本以后再采用新的大版本。如果应用还没有上线,也可以采用即将发布的新版本,以尽可能地延迟应用上线后的升级操作。
    1.7 MySQL的开发模式 MySQL的开发过程和发布模型在不同的阶段有很大的变化,但目前已经基本稳定下来。在Oracle定期发布的新里程碑开发版本中,会包含即将在下一个GA版本发布的新特性。这样做是为了测试和获得反馈,请不要在生产环境使用此版本,虽然Oracle宣称每个里程碑版本的质量都是可靠的,并随时可以正式发布(到目前为止也没有任何理由去推翻这个说法)。Oracle也会定期发布实验室预览版,主要包含一些特定的需要评估的特性,这些特性并不保证会在下一个正式版本中包括进去。*终,Oracle会将稳定的特性打包发布一个新的GA版本。
    MySQL依然遵循GPL开源协议,全部的源代码(除了一些商业版本的插件)都会开放给社区。Oracle似乎也理解,为社区和付费用户提供不同的版本并非明智之举。MySQLAB曾经尝试过不同版本的策略,结果导致付费用户变成了“睁眼瞎”,无法从社区的测试和反馈中获得好处。不同版本的策略并不受企业用户的欢迎,所以后来被Sun废除了。现在Oracle为付费用户单独提供了一些服务器插件,而MySQL本身还是遵循开源模式。尽管对于私有的服务器插件的发布有一些抱怨,但这只是少数的声音,并且慢慢地在平息。
  • 编辑推荐语
  • 内容提要
  • 作者简介
  • 目录
  • 精彩试读