编辑推荐
大家知道ANSI/ISO SQL是公认的关系数据库标准。从SQL标准的符合性来说,MySQL不仅无法跟成熟的商业数据库相比,在开源数据库中也远不是最好的,比如PostgreSQL就是业界公认的ANSI/ISO SQL标准符合性最好的开源数据库,MySQL直到5.0版本才支持的一些特性,PostgreSQL早都实现了。既然如此,为什么MySQL却在开源数据库中独占鳌头呢?根本的原因就是性能!
从开发、管理和管理维护3个角度逐步深入,全面介绍MySQL数据库技术,融合了资深专家多年工作实践的积累和经验,不但总结了应用MySQL数据库时遇到的各种问题及其解决办法,还强调了开发人员和数据库管理人员必备的知识、技能。
MySQL的海豚标志的名字叫“sakila”,代表速度、力量、精确,它是从用户在“海豚命名”的竞赛中建议的众多名字中选出来的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供的。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的阿鲁沙的一个小镇的名字。
内容简介
《深入浅出MySQL:数据库开发、优化与管理维护(第2版)》从数据库的基础、开发、优化、管理维护和架构5个方面对MySQL进行了详细的介绍,每一部分都独立成篇。基础篇主要适合于MySQL的初学者阅读,包括MySQL的安装与配置、SQL基础、MySQL支持的数据类型、MySQL中的运算符、常用函数、图形化工具的使用等内容。开发篇主要适合于MySQL的设计和开发人员阅读,内容包括表类型(存储引擎)的选择、选择合适的数据类型、字符集、索引的设计和使用、视图、存储过程和函数、触发器、事务控制和锁定语句、SQL中的安全问题、SQL Mode及相关问题、分区等。优化篇主要适合于开发人员和数据库管理员阅读,内容包括SQL优化、优化数据库对象、锁问题、优化MySQL Server、磁盘I/O问题、应用优化等。管理维护篇主要适合于数据库管理员阅读,内容包括MySQL高级安装和升级、MySQL中的常用工具、MySQL日志、备份与恢复、MySQL权限与安全、MySQL监控、MySQL常见问题和应用技巧等。架构篇主要适合高级数据库管理人员和数据库架构设计师阅读,包括MySQL复制、MySQL Cluster、高可用架构等内容。
《深入浅出MySQL:数据库开发、优化与管理维护(第2版)》的作者都是MySQL方面的资深DBA。本书不但融入了他们丰富的工作经验和多年的使用心得,还提供了大量来自工作现场的实例,具有很强的实战性和可操作性。
《深入浅出MySQL:数据库开发、优化与管理维护(第2版)》内容实用,覆盖广泛,讲解由浅入深,适合数据库管理人员、数据库开发人员、系统维护人员、数据库初学者及其他数据库从业人员阅读,也适合用作大中专院校相关专业师生的参考用书和相关培训机构的培训教材。
目录
- 第一部分 基础篇
- 第1章 MySQL的安装与配置
- 1.1 MySQL的下载
- 1.1.1 在Windows平台下下载MySQL
- 1.1.2 在Linux平台下下载MySQL
- 1.2 MySQL的安装
- 1.2.1 在Windows平台下安装MySQL
- 1.2.2 在Linux平台下安装MySQL
- 1.3 MySQL的配置
- 1.3.1 Windows平台下配置MySQL
- 1.3.2 Linux平台下配置MySQL
- 1.4 启动和关闭MySQL服务
- 1.4.1 在Windows平台下启动和关闭MySQL服务
- 1.4.2 在Linux平台下启动和关闭MySQL服务
- 1.5 小结
- 第2章 SQL基础
- 2.1 SQL简介
- 2.2 (My)SQL使用入门
- 2.2.1 SQL分类
- 2.2.2 DDL语句
- 2.2.3 DML语句
- 2.2.4 DCL语句
- 2.3 帮助的使用
- 2.3.1 按照层次看帮助
- 2.3.2 快速查阅帮助
- 2.3.3 常用的网络资源
- 2.4 查询元数据信息
- 2.5 小结
- 第3章 MySQL支持的数据类型
- 3.1 数值类型
- 3.2 日期时间类型
- 3.3 字符串类型
- 3.3.1 CHAR和VARCHAR类
- 3.3.2 BINARY和VARBINARY类型
- 3.3.3 ENUM类型
- 3.3.4 SET类型
- 3.4 小结
- 第4章 MySQL中的运算符
- 4.1 算术运算符
- 4.2 比较运算符
- 4.3 逻辑运算符
- 4.4 位运算符
- 4.5 运算符的优先级
- 4.6 小结
- 第5章 常用函数
- 5.1 字符串函数
- 5.2 数值函数
- 5.3 日期和时间函数
- 5.4 流程函数
- 5.5 其他常用函数
- 5.6 小结
- 第6章 图形化工具的使用
- 6.1 MySQL Workbench
- 6.1.1 SQL开发
- 6.1.2 数据建模
- 6.1.3 服务器管理
- 6.1.4 MySQL Utilities
- 6.2 phpMyAdmin
- 6.2.1 数据库管理
- 6.2.2 数据库对象管理
- 6.2.3 权限管理
- 6.2.4 导入导出数据
- 6.3 小结
- 第二部分 开发篇
- 第7章 表类型(存储引擎)的选择
- 7.1 MySQL存储引擎概述
- 7.2 各种存储引擎的特性
- 7.2.1 MyISAM
- 7.2.2 InnoDB
- 7.2.3 MEMORY
- 7.2.4 MERGE
- 7.2.5 TokuDB
- 7.3 如何选择合适的存储引擎
- 7.4 小结
- 第8章 选择合适的数据类型
- 8.1 CHAR与VARCHAR
- 8.2 TEXT与BLOB
- 8.3 浮点数与定点数
- 8.4 日期类型选择
- 8.5 小结
- 第9章 字符集
- 9.1 字符集概述
- 9.2 Unicode简述
- 9.3 汉字及一些常见字符集
- 9.4 怎样选择合适的字符集
- 9.5 MySQL支持的字符集简介
- 9.6 MySQL字符集的设置
- 9.6.1 服务器字符集和校对规则
- 9.6.2 数据库字符集和校对规则
- 9.6.3 表字符集和校对规则
- 9.6.4 列字符集和校对规则
- 9.6.5 连接字符集和校对规则
- 9.7 字符集的修改步骤
- 9.8 小结
- 第10章 索引的设计和使用
- 10.1 索引概述
- 10.2 设计索引的原则
- 10.3 BTREE索引与HASH索引
- 10.4 小结
- 第11章 视图
- 11.1 什么是视图
- 11.2 视图操作
- 11.2.1 创建或者修改视图
- 11.2.2 删除视图
- 11.2.3 查看视图
- 11.3 小结
- 第12章 存储过程和函数
- 12.1 什么是存储过程和函数
- 12.2 存储过程和函数的相关操作
- 12.2.1 创建、修改存储过程或者函数
- 12.2.2 删除存储过程或者函数
- 12.2.3 查看存储过程或者函数
- 12.2.4 变量的使用
- 12.2.5 定义条件和处理
- 12.2.6 光标的使用
- 12.2.7 流程控制
- 12.2.8 事件调度器
- 12.3 小结
- 第13章 触发器
- 13.1 创建触发器
- 13.2 删除触发器
- 13.3 查看触发器
- 13.4 触发器的使用
- 13.5 小结
- 第14章 事务控制和锁定语句
- 14.1 LOCK TABLE和UNLOCK TABLE
- 14.2 事务控制
- 14.3 分布式事务的使用
- 14.3.1 分布式事务的原理
- 14.3.2 分布式事务的语法
- 14.3.3 存在的问题
- 14.4 小结
- 第15章 SQL中的安全问题
- 15.1 SQL注入简介
- 15.2 应用开发中可以采取的应对措施
- 15.2.1 PrepareStatement Bind-Variable
- 15.2.2 使用应用程序提供的转换函数
- 15.2.3 自己定义函数进行校验
- 15.3 小结
- 第16章 SQL Mode及相关问题
- 16.1 MySQL SQL Mode简介
- 16.2 SQL Mode的常见功能
- 16.3 常用的SQL Mode
- 16.4 SQL Mode在迁移中如何使用
- 16.5 小结
- 第17章 MySQL分区
- 17.1 分区概述
- 17.2 分区类型
- 17.2.1 Range分区
- 17.2.2 List分区
- 17.2.3 Columns分区
- 17.2.4 Hash分区
- 17.2.5 Key分区
- 17.2.6 子分区
- 17.2.7 MySQL分区处理NULL值的方式
- 17.3 分区管理
- 17.3.1 RANGE&LIST分区管理
- 17.3.2 HASH&KEY分区管理
- 17.4 小结
- 第三部分 优化篇
- 第18章 SQL优化
- 18.1 优化SQL语句的一般步骤
- 18.1.1 通过show status命令了解各种SQL的执行频率
- 18.1.2 定位执行效率较低的SQL语句
- 18.1.3 通过EXPLAIN分析低效SQL的执行计划
- 18.1.4 通过show profile分析SQL
- 18.1.5 通过trace分析优化器如何选择执行计划
- 18.1.6 确定问题并采取相应的优化措施
- 18.2 索引问题
- 18.2.1 索引的存储分类
- 18.2.2 MySQL如何使用索引
- 18.2.3 查看索引使用情况
- 18.3 两个简单实用的优化方法
- 18.3.1 定期分析表和检查表
- 18.3.2 定期优化表
- 18.4 常用SQL的优化
- 18.4.1 大批量插入数据
- 18.4.2 优化INSERT语句
- 18.4.3 优化ORDER BY语句
- 18.4.4 优化GROUP BY语句
- 18.4.5 优化嵌套查询
- 18.4.6 MySQL如何优化OR条件
- 18.4.7 优化分页查询
- 18.4.8 使用SQL提示
- 18.5 常用SQL技巧
- 18.5.1 正则表达式的使用
- 18.5.2 巧用RAND()提取随机行
- 18.5.3 利用GROUP BY的WITH ROLLUP子句
- 18.5.4 用BIT GROUP FUNCT IONS做统计
- 18.5.5 数据库名、表名大小写问题
- 18.5.6 使用外键需要注意的问题
- 18.6 小结
- 第19章 优化数据库对象
- 19.1 优化表的数据类型
- 19.2 通过拆分提高表的访问效率
- 19.3 逆规范化
- 19.4 使用中间表提高统计查询速度
- 19.5 小结
- 第20章 锁问题
- 20.1 MySQL锁概述
- 20.2 MyISAM表锁
- 20.2.1 查询表级锁争用情况
- 20.2.2 MySQL表级锁的锁模式
- 20.2.3 如何加表锁
- 20.2.4 并发插入(Concurrent Inserts)
- 20.2.5 MyISAM的锁调度
- 20.3 InnoDB锁问题
- 20.3.1 背景知识
- 20.3.2 获取InnoDB行锁争用情况
- 20.3.3 InnoDB的行锁模式及加锁方法
- 20.3.4 InnoDB行锁实现方式
- 20.3.5 Next-Key锁
- 20.3.6 恢复和复制的需要,对InnoDB锁机制的影响
- 20.3.7 InnoDB在不同隔离级别下的一致性读及锁的差异
- 20.3.8 什么时候使用表锁
- 20.3.9 关于死锁
- 20.4 小结
- 第21章 优化MySQL Server
- 21.1 MySQL体系结构概览
- 21.2 MySQL内存管理及优化
- 21.2.1 内存优化原则
- 21.2.2 MyISAM内存优化
- 21.2.3 InnoDB内存优化
- 21.2.4 调整用户服务线程排序缓存区
- 21.2 InnoDB log机制及优化
- 21.3.1 InnoDB重做日志
- 21.3.2 innodb_flush_log_at_trx_commit的设置
- 21.3.3 设置log file size,控制检查点
- 21.3.4 调整innodb_log_buffer_size
- 21.2 调整MySQL并发相关的参数
- 21.4.1 调整max_connections,提高并发连接
- 21.4.2 调整back_log
- 21.4.3 调整table_open_cache
- 21.4.4 调整thread_cache_size
- 21.4.5 innodb_lock_wait_timeout的设置
- 21.5 小结
- 第22章 磁盘I/O问题
- 22.1 使用磁盘阵列
- 22.1.1 常见RAID级别及其特性
- 22.1.2 如何选择RAID级别
- 22.2 虚拟文件卷或软RAID
- 22.3 使用Symbolic Links分布I/O
- 22.4 禁止操作系统更新文件的atime属性
- 22.5 用裸设备(Raw Device)存放InnoDB的共享表空间
- 22.6 调整I/O调度算法
- 22.7 RAID卡电池充放电问题
- 22.7.1 什么是RAID卡电池充放电
- 22.7.2 RAID卡缓存策略
- 22.7.3 如何应对RAID卡电池充放电带来的I/O性能波动
- 22.8 NUMA架构优化
- 22.9 小结
- 第23章 应用优化
- 23.1 使用连接池
- 23.2 减少对MySQL的访问
- 23.2.1 避免对同一数据做重复检索
- 23.2.2 使用查询缓存
- 23.2.3 增加CACHE层
- 23.3 负载均衡
- 23.3.1 利用MySQL复制分流查询操作
- 23.3.2 采用分布式数据库架构
- 23.4 其他优化措施
- 23.5 小结
- 第四部分 管理维护篇
- 第24章 MySQL高级安装和升级
- 24.1 Linux/UNIX平台下的安装
- 24.1.1 安装包比较
- 24.1.2 安装RPM包
- 24.1.3 安装二进制包
- 24.1.4 安装源码包
- 24.1.5 参数设置方法
- 24.2 源码包安装的性能考虑
- 24.2.1 去掉不需要的模块
- 24.2.2 只选择要使用的字符集
- 24.2.3 使用静态编译以提高性能
- 24.3 升级MySQL
- 24.4 MySQL降级
- 24.5 小结
- 第25章 MySQL中的常用工具
- 25.1 mysql(客户端连接工具)
- 25.1.1 连接选项
- 25.1.2 客户端字符集选项
- 25.1.3 执行选项
- 25.1.4 格式化选项
- 25.1.5 错误处理选项
- 25.2 myisampack(MyISAM表压缩工具)
- 25.3 mysqladmin(MySQL管理工具)
- 25.4 mysqlbinlog(日志管理工具)
- 25.5 mysqlcheck(MyISAM表维护工具)
- 25.6 mysqldump(数据导出工具)
- 25.6.1 连接选项
- 25.6.2 输出内容选项
- 25.6.3 输出格式选项
- 25.6.4 字符集选项
- 25.6.5 其他常用选项
- 25.7 mysqlhotcopy(MyISAM表热备份工具)
- 25.8 mysqlimport(数据导入工具)
- 25.9 mysqlshow(数据库对象查看工具)
- 25.10 perror(错误代码查看工具)
- 25.11 replace(文本替换工具)
- 25.12 小结
- 第26章 MySQL日志
- 26.1 错误日志
- 26.2 二进制日志
- 26.2.1 日志的位置和格式
- 26.2.2 日志的读取
- 26.2.3 日志的删除
- 26.2.4 其他选项
- 26.3 查询日志
- 26.3.1 日志的位置和格式
- 26.3.2 日志的读取
- 26.4 慢查询日志
- 26.4.1 文件位置和格式
- 26.4.2 日志的读取
- 26.5 mysqlsla简介
- 26.6 小结
- 第27章 备份与恢复
- 27.1 备份/恢复策略
- 27.2 逻辑备份和恢复
- 27.2.1 备份
- 27.2.2 完全恢复
- 27.2.3 基于时间点恢复
- 27.2.4 基于位置恢复
- 27.3 物理备份和恢复
- 27.3.1 冷备份
- 27.3.2 热备份
- 27.4 表的导入导出
- 27.4.1 导出
- 27.4.2 导入
- 27.5 小结
- 第28章 MySQL权限与安全
- 28.1 MySQL权限管理
- 28.1.1 权限系统的工作原理
- 28.1.2 权限表的存取
- 28.1.3 账号管理
- 28.2 MySQL安全问题
- 28.2.1 操作系统相关的安全问题
- 28.2.2 数据库相关的安全问题
- 28.3 其他安全设置选项
- 28.3.1 old-passwords
- 28.3.2 safe-user-create
- 28.3.3 secure-auth
- 28.3.4 skip-grant-tables
- 28.3.5 skip-network
- 28.3.6 skip-show-database
- 28.4 小结
- 第29章 MySQL监控
- 29.1 如何选择一个监控方案
- 29.1.1 选择何种监控方