深入浅出MySQL:资料库开发最佳化与管理维护


深入浅出MySQL:资料库开发最佳化与管理维护

文章插图
深入浅出MySQL:资料库开发最佳化与管理维护【深入浅出MySQL:资料库开发最佳化与管理维护】该书由唐汉明、 翟振兴、 兰丽华联合编写 , 2008由人民邮电出版社出版发行 。《深入浅出MySQL资料库开发、最佳化与管理维护》从资料库的基础、开发、最佳化、管理维护4个方面对MySQL进行了详细的介绍 , 其中每一部分都独立成篇 。《深入浅出MySQL资料库开发、最佳化与管理维护》内容实用 , 覆盖广泛 , 讲解由浅入深 , 适合于各个层次的读者 。
基本介绍书名:深入浅出MySQL:资料库开发最佳化与管理维护
作者:唐汉明 翟振兴 兰丽华
ISBN:9787115175625
出版社:人民邮电出版社
出版时间: 2008
开本: 16
版权资讯定价: 59.00 元内容简介基础篇主要适合于MySQL的初学者 , 内容包括MySQL的安装与配置、SQL基础、MySQL支持的数据类型、MySQL中的运算符、常用函式、图形化工具的使用等 。开发篇主要适合于MySQL的设计和开发人员 , 内容包括表类型(存储引擎)的选择、选择合适的数据类型、字元集、索引的设计和使用、视图、存储过程和函式、触发器、事务控制和锁定语句、SQL中的安全问题、SQLMode及相关问题等 。最佳化篇主要适合于开发人员和资料库管理员 , 内容包括常用SQL技巧和常见问题、SQL最佳化、最佳化资料库对象、锁问题、最佳化MySQLServer、磁碟I/O问题、套用最佳化等 。管理维护篇主要适合于资料库管理员 , 内容包括MySQL高级安装和升级、MySQL中的常用工具、MySQL日誌、备份与恢复、MySQL许可权与安全、MySQL複製、MySQLCluster、MySQL常见问题和套用技巧等 。《深入浅出MySQL资料库开发、最佳化与管理维护》的作者都是MySQL方面的资深DBA 。《深入浅出MySQL资料库开发、最佳化与管理维护》不但融入了他们丰富的工作经验和多年的使用心得 , 还提供了大量来自工作现场的实例 , 具有很强的实战性和可操作性 。《深入浅出MySQL资料库开发、最佳化与管理维护》适用于资料库管理人员、资料库开发人员、系统维护人员、资料库初学者及其他资料库从业人员 , 也可以作为大中专院校相关专业师生的参考用书和相关培训机构的培训教材 。作者简介唐汉明网易公司技术部DBA组经理 。2000年加入网易公司 , 历任技术部高级DBA、软体开发组经理、DBA组经理等职位 , 负责多个大型核心资料库的管理维护 , 并作为核心成员参加了许多重要项目的设计实施 , 在资料库开发及管理维护等方面具有丰富的经验 。翟振兴网易公司技术部高级DBA , 具有OracleOCP认证 。曾参与某省级电力集团行销MIS系统的设计与开发工作 , 后逐渐转向资料库管理维护领域 。加入网易公司后 , 负责公司多个核心资料库的管理维护工作 , 在资料库最佳化、开发支持等方面 , 积累了丰富的经验 。兰丽华网易公司技术部高级DBA , 具有OracleOCP和IBMDB2DBA认证 。曾任职于某大型国企 , 作为核心成员参与上海税务项目的开发 , 该项目被列为2004年上海市科技成果 。加入网易公司后 , 负责多个核心资料库的管理维护工作 , 在资料库最佳化和SQL调优方面具有丰富经验 。关宝军网易技术部高级DBA 。曾从事电信行业大型BOSS系统的开发及资料库管理维护工作 。加入网易公司后 , 负责多个重要资料库管理维护 , 并参与了公司多个重要项目的计画、开发及实施 。在资料库性能最佳化、问题诊断、集群技术套用等方面有丰富的实践经验 。申宝柱网易公司技术部高级DBA , 具有OracleOCP认证 。曾参与某着名公司大型医院管理系统的开发工作 , 后致力于资料库方向的套用实践 。加入网易公司后 , 先后负责商务智慧型方面的开发和大型资料库的管理维护 , 在数据仓库建设和数据挖掘等方面有丰富的项目经验 。编辑推荐从开发、最佳化和管理维护3个角度逐步深入 , 融合了资深专家金戈铁马年工作实践的积累和经验 , 不但总结了套用MySQL资料库时遇到的各种问题及其解决办法 , 还强调了开发人员和资料库人员必备的知识、技能 。目录第1部分 基础篇第1章 MySQL的安装与配置 31.1 MySQL的下载 31.1.1 在Windows平台下下载MySQL 41.1.2 在Linux平台下下载MySQL 41.2 MySQL的安装 71.2.1 在Windows平台下安装MySQL 71.2.2 在Linux平台下安装MySQL 111.3 MySQL的配置 121.3.1 Windows平台下配置MySQL 121.3.2 Linux平台下配置MySQL 201.4 启动和关闭MySQL服务 201.4.1 在Windows平台下启动和关闭MySQL服务 211.4.2 在Linux平台下启动和关闭MySQL服务 221.5 小结 23第2章 SQL基础 252.1 SQL简介 252.2 (My)SQL使用入门 252.2.1 SQL分类 252.2.2 DDL语句 262.2.3 DML语句 352.2.4 DCL语句 512.3 帮助的使用 522.3.1 按照层次看帮助 532.3.2 快速查阅帮助 542.3.3 常用的网路资源 552.4 小结 55第3章 MySQL支持的数据类型 573.1 数值类型 573.2 日期时间类型 643.3 字元串类型 713.3.1 CHAR和VARCHAR类型 723.3.2 BINARY和VARBINARY类型 723.3.3 ENUM类型 733.3.4 SET类型 743.4 小结 74第4章 MySQL中的运算符 774.1 算术运算符 774.2 比较运算符 784.3 逻辑运算符 824.4 位运算符 834.5 运算符的优先权 854.6 小结 86第5章 常用函式 875.1 字元串函式 875.2 数值函式 905.3 日期和时间函式 935.4 流程函式 975.5 其他常用函式 1005.6 小结 103第6章 图形化工具的使用 1056.1 MySQLAdministrator 105 6.1.1 连线管理 1066.1.2 健康检查 1076.1.3 备份管理 1086.1.4 Catalogs 1096.2 MySQLQueryBrower 1106.3 phpMyAdmin 1116.3.1 资料库管理 1126.3.2 资料库对象管理 1136.3.3 许可权管理 1136.3.4 导入导出数据 1146.4 小结 116第2部分 开发篇第7章 表类型(存储引擎)的选择 1197.1 MySQL存储引擎概述 1197.2 各种存储引擎的特性 1227.2.1 MyISAM 1227.2.2 InnoDB 1247.2.3 MEMORY 1297.2.4 MERGE 1317.3 如何选择合适的存储引擎 1347.4 小结 135第8章 选择合适的数据类型 1378.1 CHAR与VARCHAR 1378.2 TEXT与BLOB 1388.3 浮点数与定点数 1428.4 日期类型选择 1458.5 小结 145第9章 字元集 1479.1 字元集概述 1479.2 Unicode简述 1479.3 汉字及一些常见字元集 1499.4 怎样选择合适的字元集 1509.5 MySQL支持的字元集简介 1509.6 MySQL字元集的设定 1529.6.1 伺服器字元集和校对规则 1529.6.2 资料库字元集和校对规则 1539.6.3 表字元集和校对规则 1549.6.4 列字元集和校对规则 1549.6.5 连线字元集和校对规则 1549.7 字元集的修改步骤 1559.8 小结 156第10章 索引的设计和使用 15710.1 索引概述 15710.2 设计索引的原则 15810.3 BTREE索引与HASH索引 15910.4 小结 161第11章 视图 16311.1 什幺是视图 16311.2 视图操作 16311.2.1 创建或者修改视图 16311.2.2 删除视图 16511.2.3 查看视图 16611.3 小结 167第12章 存储过程和函式 16912.1 什幺是存储过程和函式 16912.2 存储过程和函式的相关操作 16912.2.1 创建、修改存储过程或者函式 16912.2.2 删除存储过程或者函式 17412.2.3 查看存储过程或者函式 17412.2.4 变数的使用 17612.2.5 定义条件和处理 177 12.2.6 游标的使用 18012.2.7 流程控制 18112.3 小结 185第13章 触发器 18713.1 创建触发器 18713.2 删除触发器 19013.3 查看触发器 19013.4 触发器的使用 19213.5 小结 193第14章 事务控制和锁定语句 19514.1 LOCKTABLE和UNLOCKTABLE 19514.2 事务控制 19614.3 分散式事务的使用 20214.3.1 分散式事务的原理 20214.3.2 分散式事务的语法 20314.3.3 存在的问题 20414.4 小结 208第15章 SQL中的安全问题 20915.1 SQL注入简介 20915.2 套用开发中可以採取的应对措施 21015.2.1 PrepareStatement+Bind-variable 21015.2.2 使用应用程式提供的转换函式 21115.2.3 自己定义函式进行校验 21115.3 小结 212第16章 SQLMode及相关问题 21316.1 MySQLSQLMode简介 21316.2 常用的SQLMode 21816.3 SQLMode在迁移中如何使用 21916.4 小结 220第3部分 最佳化篇第17章 常用SQL技巧和常见问题 22317.1 正则表达式的使用 22317.2 巧用RAND()提取随机行 22617.3 利用GROUPBY的WITHROLLUP子句做统计 22717.4 用BITGROUPFUNCTIONS做统计 22917.5 资料库名、表名大小写问题 23117.6 使用外键需要注意的问题 23217.7 小结 233第18章 SQL最佳化 23518.1 最佳化SQL语句的一般步骤 23518.1.1 通过showstatus命令了解各种SQL的执行频率 23518.1.2 定位执行效率较低的SQL语句 23618.1.3 通过EXPLAIN分析低效SQL的执行计画 23618.1.4 确定问题并採取相应的最佳化措施 23818.2 索引问题 23918.2.1 索引的存储分类 23918.2.2 MySQL如何使用索引 23918.2.3 查看索引使用情况 24418.3 两个简单实用的最佳化方法 24518.3.1 定期分析表和检查表 24518.3.2 定期最佳化表 24618.4 常用SQL的最佳化 247 18.4.1 大批量插入数据 24718.4.2 最佳化INSERT语句 24918.4.3 最佳化GROUPBY语句 24918.4.4 最佳化ORDERBY语句 25018.4.5 最佳化嵌套查询 25018.4.6 MySQL如何最佳化OR条件 25218.4.7 使用SQL提示 25418.5 小结 256第19章 最佳化资料库对象 25719.1 最佳化表的数据类型 25719.2 通过拆分提高表的访问效率 25919.3 逆规範化 26019.4 使用中间表提高统计查询速度 26119.5 小结 262第20章 锁问题 26320.1 MySQL锁概述 26320.2 MyISAM表锁 26320.2.1 查询表级锁争用情况 26420.2.2 MySQL表级锁的锁模式 26420.2.3 如何加表锁 26520.2.4 并发插入(ConcurrentInserts) 26820.2.5 MyISAM的锁调度 26920.3 InnoDB锁问题 27020.3.1 背景知识 27020.3.2 获取InnoDB行锁争用情况 27220.3.3 nnoDB的行锁模式及加锁方法 27320.3.4 InnoDB行锁实现方式 27720.3.5 间隙锁(Next-Key锁) 28120.3.6 恢复和複製的需要 , 对InnoDB锁机制的影响 28220.3.7 InnoDB在不同隔离级别下的一致性读及锁的差异 28720.3.8 什幺时候使用表锁 28820.3.9 关于死锁 28820.4 小结 295第21章 最佳化MySQLServer 29721.1 查看MySQLServer参数 29721.2 影响MySQL性能的重要参数 30021.2.1 key_buffer_size的设定 30121.2.2 table_cache的设定 30321.2.3 innodb_buffer_pool_size的设定 30521.2.4 innodb_flush_log_at_trx_commit的设定 30621.2.5 innodb_additional_mem_pool_size的设定 30621.2.6 innodb_lock_wait_timeout的设定 30721.2.7 innodb_support_xa的设定 30721.2.8 innodb_log_buffer_size的设定 30721.2.9 innodb_log_file_size的设定 30821.3 小结 308第22章 磁碟I/O问题 309 22.1 使用磁碟阵列 30922.1.1 常见RAID级别及其特性 30922.1.2 如何选择RAID级别 31022.1.3 虚拟档案卷或软RAID 31022.2 使用SymbolicLinks分布I/O 31022.3 禁止作业系统更新档案的atime属性 31122.4 用裸设备(RawDevice)存放InnoDB的共享表空间 31222.5 小结 312第23章 套用最佳化 31323.1 使用连线池 31323.2 减少对MySQL的访问 31323.2.1 避免对同一数据做重複检索 31323.2.2 使用查询快取 31423.2.3 增加CACHE层 31523.3 负载均衡 31523.3.1 利用MySQL複製分流查询操作 31523.3.2 採用分散式资料库架构 31623.4 其他最佳化措施 31623.5 小结 316第4部分 管理维护篇第24章 MySQL高级安装和升级 31924.1 Linux/UNIX平台下的安装 31924.1.1 安装包比较 31924.1.2 安装RPM包 32024.1.3 安装二进制包 32024.1.4 安装源码包 32124.1.5 参数设定方法 32224.2 源码包安装的性能考虑 32324.2.1 去掉不需要的模组 32324.2.2 只选择要使用的字元集 32424.2.3 使用静态编译以提高性能 32424.3 升级MySQL 32424.4 MySQL降级 32624.5 小结 326第25章 MySQL中的常用工具 32725.1 mysql(客户端连线工具) 32725.1.1 连线选项 32725.1.2 客户端字元集选项 33025.1.3 执行选项 33125.1.4 格式化选项 33225.1.5 错误处理选项 33325.2 myisampack(MyISAM表压缩工具) 33625.3 mysqladmin(MySQL管理工具) 33825.4 mysqlbinlog(日誌管理工具) 33925.5 mysqlcheck(MyISAM表维护工具) 34525.6 mysqldump(数据导出工具) 34625.7 mysqlhotcopy(MyISAM表热备份工具) 35025.8 mysqlimport(数据导入工具) 35225.9 mysqlshow(资料库对象查看工具) 35225.10 perror(错误代码查看工具) 355 25.11 replace(文本替换工具) 35625.12 小结 357第26章 MySQL日誌 35926.1 错误日誌 35926.2 二进制日誌 36026.2.1 日誌的位置和格式 36026.2.2 日誌的读取 36026.2.3 日誌的删除 36126.2.4 其他选项 36426.3 查询日誌 36526.3.1 日誌的位置和格式 36526.3.2 日誌的读取 36526.4 慢查询日誌 36626.4.1 档案位置和格式 36626.4.2 日誌的读取 36626.4.3 其他选项 36826.5 小结 368第27章 备份与恢复 37127.1 备份/恢复策略 37127.2 逻辑备份和恢复 37127.2.1 备份 37227.2.2 完全恢复 37327.2.3 基于时间点恢复 37427.2.4 基于位置恢复 37527.3 物理备份和恢复 37527.3.1 冷备份 37527.3.2 热备份 37527.4 表的导入导出 37827.4.1 导出 37827.4.2 导入 38327.5 小结 386第28章 MySQL许可权与安全 38728.1 MySQL许可权管理 38728.1.1 许可权系统的工作原理 38728.1.2 许可权表的存取 38728.1.3 账号管理 39128.2 MySQL安全问题 40128.2.1 作业系统相关的安全问题 40128.2.2 资料库相关的安全问题 40428.3 其他安全设定选项 42328.3.1 old-passwords 42328.3.2 safe-user-create 42428.3.3 secure-auth 42528.3.4 skip-grant-tables 42628.3.5 skip-network 42628.3.6 skip-show-database 42728.4 小结 428第29章 MySQL複製 42929.1 安装配置 42929.2 主要複製启动选项 43329.2.1 log-slave-updates 43329.2.2 master-connect-retry 43329.2.3 read-only 43329.2.4 指定複製的资料库或者表 43529.2.5 slave-skip-errors 43729.3 日常管理维护 43729.3.1 查看从伺服器状态 43729.3.2 主从伺服器同步维护 43829.3.3 从伺服器複製出错的处理 439 29.3.4 logevententryexceededmax_allowed_packet的处理 44129.3.5 多主複製时的自增长变数冲突问题 44129.3.6 查看从伺服器的複製进度 44429.4 切换主从伺服器 44629.5 小结 447第30章 MySQLCluster 44930.1 MySQLCluster架构 44930.2 MySQLCluster的配置 45030.2.1 MySQLCluster的版本支持 45030.2.2 管理节点配置步骤 45130.2.3 SQL节点和数据节点的配置 45230.3 开始使用Cluster 45330.3.1 Cluster的启动 45330.3.2 Cluster的测试 45530.3.3 Cluster的关闭 45930.4 维护Cluster 46030.4.1 数据备份 46030.4.2 数据恢复 46130.4.3 日誌管理 46330.5 小结 466第31章 MySQL常见问题和套用技巧 46731.1 忘记MySQL的root密码 46731.2 如何处理MyISAM存储引擎的表损坏 46831.2.1 方法一 46831.2.2 方法二 46931.3 MyISAM表超过4GB无法访问的问题 46931.4 数据目录磁碟空间不足的问题 47031.4.1 对于MyISAM存储引擎的表 47031.4.2 对于InnoDB存储引擎的表 47131.5 DNS反向解析的问题 47131.6 mysql.sock丢失后如何连线资料库 47231.7 同一台伺服器运行多个MySQL资料库 47231.8 客户端怎幺访问区域网路资料库 47331.9 小结 476……