新書推薦:
《
迈尔斯普通心理学
》
售價:NT$
760.0
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:NT$
1990.0
《
掌故家的心事
》
售價:NT$
390.0
《
孤独传:一种现代情感的历史
》
售價:NT$
390.0
《
家、金钱和孩子
》
售價:NT$
295.0
《
量价关系——透视股票涨跌脉络
》
售價:NT$
340.0
《
二十四节气生活美学
》
售價:NT$
340.0
《
西班牙内战:秩序崩溃与激荡的世界格局:1936-1939
》
售價:NT$
990.0
|
內容簡介: |
本书以实战讲解为主,摒弃了生产实践中不常用的知识和技术。书中内容主要分为5部分。第壹部分介绍MySQL的应用领域和适用场景、基础架构、常见生产环境部署方式,以及MySQL安装部署方式等内容。第二部分给出DBA、开发人员需要熟悉的一些知识,比如开发基础知识,如何选择合适的数据类型、事务的隔离级别和死锁避免等。第三部分则会介绍DBA及测试人员需要熟悉的测试知识,包括自动化压力测试、硬件性能测试。第四部分对照DBA的工作讲述生产的实际操作步骤,包括如何部署、升级、迁移备份数据等内容。第五部分讲述性能调优的工具和手段,如何进行数据规划,如何设计高可用性、高性能、伸缩性良好的系统。
|
關於作者: |
陈晓勇,70后,湖南人,擅长Oracle、Mysql数据库运维、诊断和性能调优。早期曾在某大型央企从事技术工作,参与多个系统的研发工作,04年后转向数据库领域,后在某世界500强大型工厂任专职Oracle DBA,负责核心生产库的运维,08年离开传统行业,加入移动互联网公司优视科技,主要从事Mysql的维护管理工作。从业至今,一直在一线生产,积累了丰富的系统架构、操作系统、存储、数据库产品经验,目前主要关注系统架构和Mysql数据库管理。
|
目錄:
|
Contents?目录
推荐序
前 言
第一部分 入门篇
第1章 理解MySQL2
1.1 MySQL介绍2
1.1.1 应用领域和适用场景2
1.1.2 为什么那么多公司和机构选择使用MySQL3
1.1.3 MySQL的优势是什么,它解决了什么问题3
1.2 MySQL的基础架构和版本4
1.2.1 软件架构中数据库的定位4
1.2.2 MySQL的基础架构5
1.2.3 MySQL的版本及特性6
1.2.4 MySQL的开发周期8
1.3 查询执行过程概述9
1.4 MySQL权限10
1.4.1 MySQL权限机制10
1.4.2 赋予权限和回收权限10
1.5 长连接、短连接、连接池10
1.5.1 短连接10
1.5.2 长连接11
1.5.3 连接池12
1.5.4 持久连接和连接池的区别12
1.6 存储引擎简介12
1.6.1 InnoDB引擎12
1.6.2 MyISAM引擎13
1.6.3 MEMORY存储引擎13
1.6.4 ARCHIVE存储引擎14
1.6.5 选择合适的引擎14
1.6.6 选择何种平台14
1.7 MySQL复制架构15
1.8 一些基础概念15
第2章 MySQL安装部署和入门17
2.1 如何选择MySQL版本17
2.2 官方版本的安装18
2.2.1 二进制包的安装18
2.2.2 源码编译安装20
2.3 其他MySQL分支的安装21
2.4 安装InnoDB Plugin21
2.5 常用命令22
2.5.1 使用mysql命令22
2.5.2 使用mysqladmin命令26
2.5.3 使用mysqldump命令26
2.6 MySQL的主要参数设置27
第二部分 开发篇
第3章 开发基础30
3.1 相关基础概念30
3.2 数据模型33
3.2.1 关系数据模型介绍33
3.2.2 实体关系建模34
3.2.3 其他数据模型35
3.3 SQL基础38
3.3.1 变量39
3.3.2 保留字40
3.3.3 MySQL注释42
3.3.4 数据类型43
3.3.5 函数51
3.3.6 操作符及优先级53
3.3.7 MySQL示例employees数据库54
3.3.8 SQL语法55
3.4 PHP开发69
3.4.1 概述69
3.4.2 客户端访问过程69
3.4.3 开发工具72
3.4.4 操作数据73
3.4.5 PHP数据库开发建议78
3.5 索引78
3.5.1 索引介绍78
3.5.2 使用索引的场景及注意事项79
3.5.3 索引的错误用法82
3.5.4 如何使用EXPLAIN工具83
3.5.5 优化索引的方法学90
3.6 ID主键91
3.7 字符集和国际化支持93
3.7.1 什么是字符集93
3.7.2 国际化支持93
3.7.3 字符集设置94
第4章 开发进阶98
4.1 范式和反范式98
4.1.1 范式98
4.1.2 反范式102
4.2 权限机制和安全104
4.2.1 MySQL访问权限系统104
4.2.2 强化安全106
4.2.3 SQL注入109
4.3 慢查询日志112
4.3.1 查看慢查询日志112
4.3.2 使用工具分析慢查询日志114
4.4 应用程序性能管理118
4.4.1 为什么需要性能管理118
4.4.2 应用性能管理概述119
4.4.3 应用性能管理的关注点120
4.4.4 具体应用120
4.5 数据库设计122
4.5.1 逻辑设计122
4.5.2 物理设计123
4.6 导入导出数据127
4.6.1 规则简介127
4.6.2 使用mysqldump导出,使用mysql导入128
4.6.3 使用SELECT INTO OUTFILE命令导出数据130
4.6.4 使用LOAD DATA导入数据130
4.6.5 用mysqlimport工具导入132
4.6.6 用mysql程序的批处理模式导出132
4.6.7 用split切割文件,加速导入数据133
4.7 事务和锁133
4.7.1 概述133
4.7.2 MyISAM的表锁134
4.7.3 事务定义和隔离级别135
4.7.4 InnoDB的行锁137
4.8 死锁141
4.9 其他特性142
4.9.1 临时表142
4.9.2 分区表142
4.9.3 存储过程、触发器、外键147
4.9.4 视图159
第5章 开发技巧161
5.1 存储树形数据161
5.2 转换字符集163
5.3 处理重复值165
5.4 分页算法167
5.5 处理NULL值167
5.6 存储URL地址169
5.7 归档历史数据169
5.8 使用数据库存储图片170
5.9 多表UPDATE170
5.10 生成全局唯一ID171
5.11 使用SQL生成升级SQL171
第6章 查询优化172
6.1 基础知识172
6.1.1 查询优化的常用策略172
6.1.2 优化器介绍173
6.1.3 MySQL的连接机制175
6.2 各种语句优化176
6.2.1 连接的优化176
6.2.2 GROUP BY、DISTINCT、ORDER BY语句优化177
6.2.3 优化子查询178
6.2.4 优化limit子句179
6.2.5 优化IN列表180
6.2.6 优化UNION181
6.2.7 优化带有BLOB、TEXT类型字段的查询181
6.2.8 filesort的优化181
6.2.9 优化SQL_CALC_FOUND_ROWS183
6.2.10 优化临时表183
6.3 OLAP业务优化184
第7章 研发规范187
7.1 命名约定187
7.2 索引188
7.3 表设计189
7.4 SQL语句190
7.5 SQL脚本191
7.6 数据架构的建议192
7.7 开发环境、测试环境的配置参数建议193
7.8 数据规划表193
7.9 其他规范194
第三部分 测试篇
第8章 测试基础196
8.1 基础概念196
8.2 性能测试的目的197
8.3 基准测试197
8.4 性能基准测试的步骤199
8.5 测试的注意
|
內容試閱:
|
Preface?前言为什么要写本书本书主要讲述MySQL DBA的必备技能,包括MySQL的安装部署、开发、测试、监控和运维,此外,读者还可从中学习到系统架构的一些知识。
我从业10多年,先是在传统行业做开发工程师、系统管理员、Oracle DBA,2008年因为机缘巧合投身互联网,开始从事MySQL运维工作。相对于成熟的商业数据库,MySQL缺乏高质量的技术文档和图书,我在接触MySQL的过程中,也感觉市面上的相关图书还存在一些不足,难以系统化地学习MySQL。
从一名Oracle DBA转型为一名MySQL DBA,从传统领域转投到互联网公司,即便我之前有丰富的经验,在学习MySQL的过程中也仍然走了一些弯路。成为一名MySQL DBA并不难,但成为一名高水平的MySQL DBA则需要时间、知识、技能、经验和意识的积累。
我在学习MySQL的过程中,有时会去看技术论坛,或者通过MSN群等聊天工具咨询他人一些问题,也得到过一些朋友的帮助。国内存在一批高素质的MySQL DBA,但由于各种现实因素,有心写一本关于MySQL DBA实战的书的人很少,所以市面上缺乏高质量的相关图书不足为奇。2013年年初,华章公司的策划编辑杨绣国找到我,说希望我能写一本关于MySQL的书,我当时很犹豫,虽然我有时会在网上回答一些问题,也定期撰写个人博客,但是,写一本书,对于我来说,是一个艰巨的任务。经过一些交流,我慢慢明确了自己的想法,其实我一直是想写一本书的,既然我对市面上的相关图书不太满意,那么就自己写一本吧,当时我唯一欠缺的是写作经验以及时间。
我写这本书的目的是想做一个尝试引领感兴趣的读者进入MySQL数据库运维领域。国内互联网行业正在高速发展,迫切需要大量的MySQL人才,希望这本书可以帮助一些读者顺利进入数据库领域。而且,我也想将自己的一些心得分享给读者,希望热爱数据库技术的同行们在工作中少走弯路。
在技术领域工作多年后,文字写作对于我来说其实已经很陌生了,弗朗西斯培根说过,阅读使人充实,谈论使人机敏,写作使人精确。在本书的写作的过程中,其实我自己也获得了很多,不仅学到了更多的知识,对于自己的精神也是一种洗礼。写作真的是一种积极而富有价值的创作,我们只有正确地掌握所讲述的内容,才能为言行思想带来正能量。
希望在这个世界上,有越来越多的人愿意分享,且能享受分享的乐趣。
读者对象本书的主要读者是MySQL DBA,在现实中,许多公司并没有配备专职的数据库维护人员,数据库的维护工作往往也是由开发工程师和系统管理员负责的,因此这本书也适用于他们。
这是一本偏向实战的技术书籍,不会过多地涉及技术的细节和原理,我会尽量直接地给出解决方案;本书除了讲MySQL技能,还花了大量篇幅讲述架构;本书不仅讲述技术,也讲述技术之外的一些运维管理规则。对数据库的使用、维护和管理感兴趣的运维工程师、架构师、运维经理、开发工程师、测试工程师都可以将本书作为参考图书,而了解其他领域会有助于你的职业发展。
本书也适合希望转行到数据库运维领域的人士。许多人想从事IT工作,但当下时间宝贵,要想进入一个行业或改变职业方向,往往会花费巨大的时间成本,所以这本书将尽量做到简单、易懂,以节省大家的学习成本。
如何阅读本书本书将分为5个部分,分别从入门、开发、测试、运维、性能与架构这几个方面来介绍MySQL的使用。对于初次接触MySQL的读者,建议按照章节顺序逐步学习。对于已经有一定经验的读者,则可以选择自己感兴趣的篇章,跳过自己已经熟悉的内容。
第一部分讲述了MySQL的基础架构、权限机制、常用的存储引擎、复制架构、安装及常用命令等知识。如果读者是初次接触MySQL,那么可能还需要在这一部分上花一些时间。在掌握Linux和MySQL的基本使用方法之后,就可以开始第二部分的学习了。
第二部分将介绍MySQL数据库开发相关的基础知识和技巧。基础知识包括关系数据模型、字符集、常用的SQL语法、范式、索引和事务等。由于开发的领域很广,所以本部分仅仅选取了一些常用的技巧分享给大家。最后会结合实际生产,提供一份开发规范供大家参考。
第三部分介绍了数据库基准测试所需要的理论知识和常用的测试工具。本部分将介绍一个MySQL的基准测试模型。
第四部分介绍了MySQL运维工作的各项职责:监控、复制、迁移、升级、备份和恢复,然后通过一些案例向读者传授一些维护技巧及处理问题的方法。读者还将学习到规模化运维MySQL的一些知识和规则。
第五部分介绍了性能调优的一些理论知识,以及从应用程序到数据库,再到存储等各个环节的优化。由于架构和性能优化密切相关,本部分也介绍了一些MySQL DBA需要熟悉的架构优化知识。初次接触MySQL的读者对于架构优化的内容可能会感到难以理解,但随着经验的增长,再理解这些内容将不会再有问题。
本书假设读者已经对软硬件有了一定的认识,掌握了一门脚本语言,并且对Unix或Linux有一定的使用经验,对于数据库有了基本的认识。阅读本书时,读者不需要预先准备好上述的所有知识,但需要有意识地在阅读本书之外不断地补充自己的基础知识。我会对以上内容做深入的讲解,但如果读者有基础会更好,好的基础有利于快速吸收知识和深入思考问题。如果读者还不会使用Linux和编写Shell脚本,那么,建议尽快搭建一个学习环境。
由于DBA需要和研发、测试、产品、运营、监控等团队进行合作,所以对于相关领域所涉及的数据库知识,本书也会做一些介绍。但是,由于经验侧重的关系,本书将主要从DBA的角度来讲述这些知识和技能。
本书主要基于MySQL官方5.1版本写作,这也是目前最流行的版本,我会补充MySQL最新版本的少许内容,但跟踪MySQL新版本更合适的策略是关注官方发布的新特性说明、新版本的文档手册,跟踪业内专家的技术博客和社交媒体等。
通过阅读本书,读者可以学到MySQL的许多知识,但是仅通过阅读是难以获得技能和经验的。读者需要有一个适合自己的MySQL测试环境,并能够不断地思考和实践自己的想法,这样才能够掌握技能,并得到属于自己的经验。
勘误和支持由于作者的水平有限,写作时间也很仓促,书中难免存在一些错误或不准确的地方,如有不妥之处,恳请读者批评指正。为此,我特意创建了在线支持页面http:www.db110.com。你可以将书中的错误发布在勘误表页面,若遇到任何问题,也可以访问Q&A页面,我将尽量在线上为你提供最满意的解答。书中的全部源文件都将发布在这个网站上。如果你有更多的宝贵意见,也欢迎你发送邮件至我的邮箱ucgary@gmail.com,很期待听到你们的真挚反馈。
致谢感谢机械工业出版社华章公司的策划编辑杨绣国的努力工作,没有她的投入和耐心,就不可能有本书的面世。本书写作的时间较长,我有时会充满愧疚,是杨绣国编辑的包容和鼓励,最终引导我顺利完成全部书稿。
感谢UC的旧同事,和你们的共事,是我职业生涯最宝贵的财富,我将一直铭记在心。
最后,我要感谢我的家人和朋友,是你们的支持,让我能够坚持下来。
陈晓勇(Gary Chen)中国,长沙,2016年12月
|
|