深入浅出MySQL数据库开发优化与管理维护第3版

深入浅出MySQL数据库开发优化与管理维护第3版
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: , , , ,
2019-09
版次: 1
ISBN: 9787115515391
定价: 138.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 682页
101人买过
  • 《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》源自网易公司多位资深数据库专家数年的经验总结和MySQL数据库的使用心得,在之前版本的基础之上,基于MySQL 5.7版本进行了内容升级,同时也对MySQL 8.0的重要功能进行了介绍。除了对原有内容的更新之外,本书还新增了作者在高可用架构、数据库自动化运维,以及数据库中间件方面的实践和积累。

    《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》分为“基础篇”“开发篇”“优化篇”“管理维护篇”和“架构篇”5个部分,共32章。基础篇面向MySQL的初学者,介绍了MySQL的安装与配置、SQL基础、MySQL支持的数据类型、MySQL中的运算符、常用函数等内容。开发篇面向的是MySQL设计和开发人员,内容涵盖了表类型(存储引擎)的选择、选择合适的数据类型、字符集、索引的设计和使用、开发常用数据库对象、事务控制和锁定语句、SQL中的安全问题、SQL Mode及相关问题、MySQL分区等。优化篇针对的是开发人员和数据库管理人员,内容包括SQL优化、锁问题、优化MySQL Server、磁盘I/O问题、应用优化、PS/SYS数据库、故障诊断等内容。管理维护篇适合数据库管理员阅读,介绍了MySQL高级安装和升级、MySQL中的常用工具、MySQL日志、备份与恢复、MySQL权限与安全、MySQL监控、MySQL常见问题和应用技巧、自动化运维系统的开发等内容。架构篇主要面向高级数据库管理人员和数据库架构设计师,内容包括MySQL复制、高可用架构、MySQL中间件等内容。

    《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》内容实用,覆盖广泛,讲解由浅入深,还提供了大量来自一线的工作实例,进一步提升了本书的实战性和可操作性。本书适合数据库管理人员、数据库开发人员、系统维护人员、数据库初学者及其他数据库从业人员阅读,也适合用作大中专院校相关专业师生的参考用书和相关培训机构的培训教材。 翟振兴,网易技术专家,毕业于清华大学软件学院,2005年入职网易,经历了网易多个核心系统的数据库设计和运维工作,对高并发下的数据库架构变迁有着深刻的理解,目前主要对自动化运维、大数据、NewSQL等新技术有着较多的兴趣和研究。

    张恒岩,网易技术经理,2010年毕业于北京科技大学,在网易DBA组工作9年,负责过网易内部多个核心数据库的运维以及数据库自动化运维系统的设计和开发。在数据库架构设计、性能优化、故障诊断以及自动化运维等方面有丰富的经验。

    崔春华,网易资深DBA,有 10 多年的数据库技术领域从业经验,深刻理解数据库原理并具有丰富的实战经验,拥有Oracle 9i OCP证书,曾先后混迹于石化、电信行业,加入网易后,负责网易多个核心业务的数据库设计和维护工作,擅长数据库优化、故障诊断、架构设计,主要参与Cetus开源项目和私有云RDS底层设计开发。

    黄荣,网易资深数据库工程师,毕业于北京邮电大学,曾参与了网易多个核心业务的数据库设计和开发。至今有12年数据库相关工作经验,尤其擅长高可用架构设计、数据库优化及故障诊断。现专注于研究MySQL内部原理、探索MySQL新技术和开发自动化运维平台。

    董骐铭,网易高级数据库工程师,毕业于北京航空航天大学,负责网易数据库运维平台的研发工作,参与了Cetus及其管理工具项目的开发,专注于自动化与智能运维相关技术的探索与实现。 第 一部分 基础篇

    第 1章 MySQL的安装与配置 2

    1.1 MySQL的下载 2

    1.1.1 在Windows平台下下载MySQL 3

    1.1.2 在Linux平台下下载MySQL 3

    1.2 MySQL的安装 5

    1.2.1 在Windows平台下安装MySQL 5

    1.2.2 在Linux平台下安装MySQL 8

    1.3 MySQL的配置 12

    1.3.1 Windows平台下配置MySQL 12

    1.3.2 Linux平台下配置MySQL 13

    1.4 启动和关闭MySQL服务 13

    1.4.1 在Windows平台下启动和关闭MySQL服务 13

    1.4.2 在Linux平台下启动和关闭MySQL服务 13

    1.5 小结 14

    第 2章 SQL基础 15

    2.1 SQL简介 15

    2.2 (My)SQL使用入门 15

    2.2.1 SQL分类 15

    2.2.2 DDL语句 16

    2.2.3 DML语句 23

    2.2.4 DCL语句 33

    2.3 帮助的使用 34

    2.3.1 按照层次看帮助 34

    2.3.2 快速查阅帮助 35

    2.4 查询元数据信息 36

    2.5 小结 37

    第3章 MySQL支持的数据类型 38

    3.1 数值类型 38

    3.2 日期时间类型 43

    3.3 字符串类型 49

    3.3.1 CHAR和VARCHAR类型 50

    3.3.2 BINARY和VARBINARY类型 51

    3.3.3 ENUM类型 51

    3.3.4 SET类型 52

    3.4 JSON类型 52

    3.5 小结 54

    第4章 MySQL中的运算符 55

    4.1 算术运算符 55

    4.2 比较运算符 56

    4.3 逻辑运算符 59

    4.4 位运算符 60

    4.5 运算符的优先级 61

    4.6 小结 62

    第5章 常用函数 63

    5.1 字符串函数 63

    5.2 数值函数 66

    5.3 日期和时间函数 68

    5.4 流程函数 71

    5.5 JSON函数 73

    5.5.1 创建JSON函数 74

    5.5.2 查询JSON函数 75

    5.5.3 修改JSON的函数 79

    5.5.4 查询JSON元数据函数 81

    5.5.5 JSON工具函数 83

    5.6 窗口函数 86

    5.6.1 ROW_NUMBER() 87

    5.6.2 RANK()/DENSE_RANK() 89

    5.6.3 PERCENT_RANK()/CUME_DIST() 89

    5.6.4 NFILE(N) 90

    5.6.5 NTH_VALUE(expr,N) 91

    5.6.6 LAG(expr,N)/LEAD(expr,N) 91

    5.6.7 FIRST_VALUE(expr)/LAST_VALUE(expr) 92

    5.6.8 聚合函数作为窗口函数 93

    5.7 其他常用函数 93

    5.8 小结 95

    第二部分 开发篇

    第6章 表类型(存储引擎)的选择 98

    6.1 MySQL存储引擎概述 98

    6.2 各种存储引擎的特性 100

    6.2.1 MyISAM 101

    6.2.2 InnoDB 102

    6.2.3 MEMORY 108

    6.2.4 MERGE 109

    6.2.5 TokuDB 111

    6.3 如何选择合适的存储引擎 112

    6.4 小结 113

    第7章 选择合适的数据类型 114

    7.1 CHAR与VARCHAR 114

    7.2 TEXT与BLOB 115

    7.3 浮点数与定点数 118

    7.4 日期类型选择 120

    7.5 小结 120

    第8章 字符集 121

    8.1 字符集概述 121

    8.2 Unicode简述 121

    8.3 汉字及一些常见字符集 123

    8.4 怎样选择合适的字符集 124

    8.5 MySQL支持的字符集简介 125

    8.6 MySQL字符集的设置 126

    8.6.1 服务器字符集和排序规则 126

    8.6.2 数据库字符集和排序规则 127

    8.6.3 表字符集和排序规则 127

    8.6.4 列字符集和排序规则 128

    8.6.5 连接字符集和排序规则 128

    8.7 字符集的修改步骤 129

    8.8 小结 129

    第9章 索引的设计和使用 130

    9.1 索引概述 130

    9.2 设计索引的原则 131

    9.3 索引设计的误区 132

    9.4 索引设计的一般步骤 132

    9.5 BTREE索引与HASH索引 133

    9.6 索引在MySQL 8.0中的改进 134

    9.6.1 不可见索引 134

    9.6.2 倒序索引 135

    9.7 小结 136

    第 10章 开发常用数据库对象 137

    10.1 视图 137

    10.1.1 什么是视图 137

    10.1.2 视图操作 137

    10.1.3 创建或者修改视图 137

    10.1.4 删除视图 139

    10.1.5 查看视图 139

    10.2 存储过程和函数 140

    10.2.1 什么是存储过程和函数 141

    10.2.2 存储过程和函数的相关操作 141

    10.2.3 创建、修改存储过程或者函数 141

    10.2.4 删除存储过程或者函数 144

    10.2.5 查看存储过程或者函数 144

    10.2.6 变量的使用 146

    10.2.7 定义条件和处理 146

    10.2.8 光标的使用 148

    10.2.9 流程控制 149

    10.2.10 事件调度器 152

    10.3 触发器 155

    10.3.1 创建触发器 155

    10.3.2 删除触发器 157

    10.3.3 查看触发器 157

    10.3.4 触发器的使用 158

    10.4 小结 159

    第 11章 事务控制和锁定语句 160

    11.1 LOCK TABLES和UNLOCK TABLES 160

    11.2 事务控制 161

    11.3 分布式事务的使用 166

    11.3.1 分布式事务的原理 166

    11.3.2 分布式事务的语法 166

    11.3.3 存在的问题 168

    11.4 小结 171

    第 12章 SQL中的安全问题 172

    12.1 SQL注入简介 172

    12.2 应用开发中可以采取的应对措施 173

    12.2.1 PrepareStatement+Bind-Variable 173

    12.2.2 使用应用程序提供的转换函数 174

    12.2.3 自己定义函数进行校验 174

    12.3 小结 175

    第 13章 SQL Mode及相关问题 176

    13.1 MySQL SQL Mode简介 176

    13.2 SQL Mode的常见功能 178

    13.3 常用的SQL Mode 180

    13.4 SQL Mode在迁移中如何使用 182

    13.5 小结 183

    第 14章 MySQL分区 184

    14.1 分区概述 184

    14.2 分区类型 185

    14.2.1 RANGE分区 187

    14.2.2 LIST 分区 188

    14.2.3 COLUMNS 分区 189

    14.2.4 HASH分区 192

    14.2.5 KEY分区 195

    14.2.6 子分区 196

    14.2.7 MySQL分区处理NULL值的方式 197

    14.3 分区管理 199

    14.3.1 RANGE与LIST分区管理 199

    14.3.2 HASH与KEY分区管理 205

    14.3.3 交换分区 206

    14.4 小结 208

    第三部分 优化篇

    第 15章 SQL优化 210

    15.1 优化SQL语句的一般步骤 210

    15.1.1 通过show status命令了解各种SQL的执行频率 210

    15.1.2 定位执行效率较低的SQL语句 211

    15.1.3 通过EXPLAIN分析低效SQL的执行计划 211

    15.1.4 通过show profile分析SQL 216

    15.1.5 通过trace分析优化器如何选择执行计划 219

    15.1.6 确定问题并采取相应的优化措施 220

    15.2 索引问题 220

    15.2.1 索引的存储分类 220

    15.2.2 MySQL如何使用索引 222

    15.2.3 查看索引使用情况 231

    15.3 两个简单实用的优化方法 231

    15.3.1 定期分析表和检查表 232

    15.3.2 定期优化表 233

    15.4 常用SQL的优化 233

    15.4.1 大批量插入数据 234

    15.4.2 优化INSERT语句 235

    15.4.3 优化ORDER BY语句 235

    15.4.4 优化GROUP BY语句 239

    15.4.5 优化JOIN操作 239

    15.4.6 优化嵌套查询 243

    15.4.7 MySQL如何优化OR条件 245

    15.4.8 优化分页查询 246

    15.4.9 使用SQL提示 248

    15.5 直方图 250

    15.5.1 什么是直方图 250

    15.5.2 直方图的分类 251

    15.5.3 直方图实例应用 252

    15.5.4 直方图小结 256

    15.6 使用查询重写 256

    15.7 常用SQL技巧 259

    15.7.1 正则表达式的使用 259

    15.7.2 巧用RAND()提取随机行 261

    15.7.3 利用GROUP BY的WITH ROLLUP子句 262

    15.7.4 用BIT GROUP FUNCTIONS做统计 263

    15.7.5 数据库名、表名大小写问题 265

    15.7.6 使用外键需要注意的问题 265

    15.8 小结 266

    第 16章 锁问题 267

    16.1 MySQL锁概述 267

    16.2 MyISAM表锁 268

    16.2.1 查询表级锁争用情况 268

    16.2.2 MySQL表级锁的锁模式 268

    16.2.3 如何加表锁 269

    16.2.4 并发插入(Concurrent Inserts) 271

    16.2.5 MyISAM的锁调度 272

    16.3 InnoDB锁问题 273

    16.3.1 背景知识 273

    16.3.2 获取InnoDB行锁争用情况 275

    16.3.3 InnoDB的行锁模式及加锁方法 276

    16.3.4 InnoDB行锁实现方式 279

    16.3.5 Next-Key锁 283

    16.3.6 恢复和复制的需要,对InnoDB锁机制的影响 284

    16.3.7 InnoDB在不同隔离级别下的一致性读及锁的差异 287

    16.3.8 什么时候使用表锁 288

    16.3.9 关于死锁 289

    16.4 小结 294

    第 17章 优化MySQL Server 296

    17.1 MySQL体系结构概览 296

    17.2 MySQL内存管理及优化 298

    17.2.1 内存优化原则 298

    17.2.2 MyISAM内存优化 298

    17.2.3 InnoDB内存优化 301

    17.2.4 调整用户服务线程排序缓存区 305

    17.3 InnoDB log机制及优化 305

    17.3.1 InnoDB重做日志 305

    17.3.2 innodb_flush_log_at_trx_commit的设置 306

    17.3.3 设置log file size,控制检查点 307

    17.3.4 调整innodb_log_buffer_size 308

    17.4 调整MySQL并发相关的参数 308

    17.4.1 调整max_connections,提高并发连接 308

    17.4.2 调整back_log 309

    17.4.3 调整table_open_cache 309

    17.4.4 调整thread_cache_size 309

    17.4.5 innodb_lock_wait_timeout的设置 309

    17.5 持久化全局变量 309

    17.6 使用资源组 310

    17.7 小结 312

    第 18章 磁盘I/O问题 313

    18.1 使用固态硬盘 313

    18.2 使用磁盘阵列 314

    18.2.1 常见RAID级别及其特性 314

    18.2.2 如何选择RAID级别 315

    18.3 虚拟文件卷或软RAID 315

    18.4 使用Symbolic Links分布I/O 315

    18.5 禁止操作系统更新文件的atime属性 316

    18.6 调整I/O调度算法 316

    18.7 RAID卡电池充放电问题 318

    18.7.1 什么是RAID卡电池充放电 318

    18.7.2 RAID卡缓存策略 319

    18.7.3 如何应对RAID卡电池充放电带来的I/O性能波动 321

    18.8 NUMA架构优化 322

    18.9 小结 325

    第 19章 应用优化 326

    19.1 优化数据表的设计 326

    19.1.1 优化表的数据类型 326

    19.1.2 通过拆分提高表的访问效率 328

    19.1.3 逆规范化 329

    19.2 数据库应用优化 330

    19.2.1 使用连接池 330

    19.2.2 减少对MySQL的访问 330

    19.2.3 负载均衡 331

    19.3 小结 331

    第 20章 PS/SYS数据库 332

    20.1 Performance Schema库 332

    20.1.1 如何开启PS库 332

    20.1.2 PS库的表 333

    20.2 SYS 库 335

    20.2.1 SYS库的对象 335

    20.2.2 SYS对象的实际应用 336

    20.3 小结 340

    第 21章 故障诊断 341

    21.1 故障诊断和处理的原则 341

    21.2 故障处理一般流程 343

    21.2.1 故障发现 343

    21.2.2 故障定位 345

    21.2.3 故障解决 346

    21.3 典型故障案例 349

    21.3.1 案例1 349

    21.3.2 案例2 353

    21.4 小结 356

    第四部分 管理维护篇

    第 22章 MySQL高级安装和升级 358

    22.1 Linux/UNIX平台下的安装 358

    22.1.1 安装包比较 358

    22.1.2 安装二进制包 359

    22.1.3 安装源码包 359

    22.1.4 参数设置方法 360

    22.2 升级MySQL 361

    22.3 小结 363

    第 23章 MySQL中的常用工具 364

    23.1 MySQL官方工具 364

    23.1.1 mysql(客户端连接工具) 364

    23.1.2 mysqladmin(MySQL管理工具) 371

    23.1.3 mysqlbinlog(日志管理工具) 371

    23.1.4 mysqlcheck(表维护工具) 378

    23.1.5 mysqldump(数据导出工具) 380

    23.1.6 mysqlpump(并行的数据导出工具) 384

    23.1.7 mysqlimport(数据导入工具) 385

    23.1.8 mysqlshow(数据库对象查看工具) 385

    23.1.9 perror(错误代码查看工具) 387

    23.1.10 MySQL Shell 387

    23.2 Percona工具包 390

    23.2.1 pt-archiver(数据归档工具) 391

    23.2.2 pt-config-diff(参数对比工具) 393

    23.2.3 pt-duplicate-key-checker(检查冗余索引工具) 394

    23.2.4 pt-find(查找工具) 395

    23.2.5 pt-heartbeat(监控主从延迟工具) 395

    23.2.6 pt-kill(杀死会话工具) 397

    23.2.7 pt-online-schema-change(在线修改表结构工具) 397

    23.2.8 pt-query-digest(SQL分析工具) 399

    23.2.9 pt-table-checksum(数据检验工具) 401

    23.2.10 pt-table-sync(数据同步工具) 402

    23.3 小结 403

    第 24章 MySQL日志 404

    24.1 错误日志 404

    24.2 二进制日志 405

    24.2.1 日志的位置和格式 405

    24.2.2 日志的读取 406

    24.2.3 日志的删除 407

    24.2.4 日志的事件 411

    24.2.5 日志闪回 412

    24.3 查询日志 415

    24.3.1 日志的位置和格式 415

    24.3.2 日志的读取 416

    24.4 慢查询日志 416

    24.4.1 文件位置和格式 416

    24.4.2 日志的读取 417

    24.4.3 Anemometer简介 419

    24.5 小结 421

    第 25章 备份与恢复 422

    25.1 备份/恢复策略 422

    25.2 逻辑备份和恢复 422

    25.2.1 备份 423

    25.2.2 完全恢复 425

    25.2.3 基于时间点恢复 427

    25.2.4 基于位置恢复 427

    25.2.5 并行恢复 427

    25.3 物理备份和恢复 428

    25.3.1 冷备份和热备份 428

    25.3.2 MyISAM存储引擎的热备份 429

    25.3.3 InnoDB存储引擎的热备份 429

    25.4 表的导入和导出 438

    25.4.1 导出 438

    25.4.2 导入 442

    25.5 小结 445

    第 26章 MySQL权限与安全 446

    26.1 MySQL权限管理 446

    26.1.1 权限系统的工作原理 446

    26.1.2 权限表的存取 446

    26.1.3 账号管理 449

    26.2 MySQL安全问题 461

    26.2.1 操作系统相关的安全问题 461

    26.2.2 数据库相关的安全问题 463

    26.3 其他安全设置选项 471

    26.3.1 密码插件 471

    26.3.2 safe-user-create 472

    26.3.3 表空间加密 473

    26.3.4 skip-grant-tables 474

    26.3.5 skip-networking 474

    26.3.6 skip-show-database 475

    26.4 小结 475

    第 27章 MySQL监控 476

    27.1 如何选择一个监控方案 476

    27.1.1 选择何种监控方式 476

    27.1.2 如何选择适合自己的监控工具 477

    27.2 常用的网络监控工具 477

    27.2.1 Open-Falcon简介 477

    27.2.2 Nagios简介 479

    27.2.3 Zabbix简介 480

    27.2.4 几种常见开源软件比较 481

    27.3 Zabbix 部署 481

    27.3.1 Zabbix Server软件安装 482

    27.3.2 Zabbix Server配置与启动 482

    27.3.3 配置Zabbix Web服务端 483

    27.3.4 Zabbix Agent安装和配置 485

    27.3.5 PMP插件介绍和部署 486

    27.3.6 Zabbix Web端操作 489

    27.4 性能医生orzdba 491

    27.4.1 orzdba安装 491

    27.4.2 orzdba使用 492

    27.5 小结 492

    第 28章 MySQL常见问题和应用技巧 493

    28.1 忘记MySQL的root密码 493

    28.2 数据目录磁盘空间不足的问题 494

    28.3 mysql.sock丢失后如何连接数据库 495

    28.4 从mysqldump文件抽取需要恢复的表 496

    28.5 使用innobackupex备份恢复单表 497

    28.6 分析BINLOG,找出写的热点表 498

    28.7 在线DDL 499

    28.8 小结 502

    第 29章 自动化运维系统的开发 503

    29.1 MySQL自动化运维背景 503

    29.2 CMDB系统搭建 504

    29.2.1 CMDB数据库 504

    29.2.2 批量管理系统 505

    29.2.3 后台API 511

    29.3 任务调度系统 515

    29.3.1 Celery安装 515

    29.3.2 Celery任务部署 516

    29.3.3 Flower监控 518

    29.4 客户端搭建 519

    29.4.1 Vue.js简介 519

    29.4.2 Vue项目搭建 520

    29.5 自动化运维平台实战 525

    29.5.1 搭建CMDB 525

    29.5.2 搭建任务调度平台 528

    29.5.3 搭建客户端 529

    29.5.4 项目演示 532

    29.6 小结 532

    第五部分 架构篇

    第30章 MySQL复制 534

    30.1 复制概述 534

    30.1.1 复制中的各类文件 536

    30.1.2 3种复制方式 537

    30.1.3 复制的4种常见架构 540

    30.2 复制搭建 543

    30.2.1 异步复制 543

    30.2.2 多线程复制 547

    30.2.3 增强半同步复制 553

    30.3 GTID(Global Transaction Identifier) 558

    30.3.1 格式与存储 558

    30.3.2 gtid_purged 561

    30.3.3 复制搭建 565

    30.3.4 主从切换 571

    30.3.5 常见问题 572

    30.4 主要复制启动选项 576

    30.4.1 log-slave-updates 576

    30.4.2 read-only/super_read_only 576

    30.4.3 指定复制的数据库或者表 577

    30.4.4 slave-skip-errors 579

    30.5 日常管理维护 579

    30.5.1 查看从库复制状态和进度 579

    30.5.2 主从复制问题集锦 580

    30.5.3 多主复制时的自增长变量冲突问题 582

    30.5.4 如何提高复制的性能 584

    30.6 小结 588

    第31章 高可用架构 589

    31.1 MHA架构 589

    31.1.1 安装部署MHA 591

    31.1.2 应用连接配置 598

    31.1.3 自动failover 605

    31.1.4 网络问题触发的failover操作 614

    31.1.5 手动failover 614

    31.1.6 在线进行切换 615

    31.1.7 修复宕掉的Master 617

    31.2 MGR架构 617

    31.2.1 安装部署MGR 618

    31.2.2 监控 625

    31.2.3 primary成员切换 626

    31.2.4 重要特性 628

    31.2.5 常见问题 629

    31.3 InnoDB Cluster 636

    31.3.1 安装部署 637

    31.3.2 初始化MySQL Router 642

    31.3.3 集群Metadata 643

    31.3.4 集群成员角色切换 644

    31.3.5 集群删除/增加节点 646

    31.3.6 重新加入节点 648

    31.4 小结 649

    第32章 MySQL中间件 650

    32.1 MySQL Router 650

    32.1.1 MySQL Router的安装 651

    32.1.2 MySQL Router的初始化 653

    32.1.3 MySQL Router策略验证 656

    32.2 Cetus架构 658

    32.2.1 Cetus的安装配置 659

    32.2.2 Cetus的使用 670

    32.2.3 Cetus日志文件 674

    32.2.4 Cetus的后端管理 675

    32.2.5 Cetus的路由策略 678

    32.2.6 常见问题 681

    32.3 小结 682
  • 内容简介:
    《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》源自网易公司多位资深数据库专家数年的经验总结和MySQL数据库的使用心得,在之前版本的基础之上,基于MySQL 5.7版本进行了内容升级,同时也对MySQL 8.0的重要功能进行了介绍。除了对原有内容的更新之外,本书还新增了作者在高可用架构、数据库自动化运维,以及数据库中间件方面的实践和积累。

    《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》分为“基础篇”“开发篇”“优化篇”“管理维护篇”和“架构篇”5个部分,共32章。基础篇面向MySQL的初学者,介绍了MySQL的安装与配置、SQL基础、MySQL支持的数据类型、MySQL中的运算符、常用函数等内容。开发篇面向的是MySQL设计和开发人员,内容涵盖了表类型(存储引擎)的选择、选择合适的数据类型、字符集、索引的设计和使用、开发常用数据库对象、事务控制和锁定语句、SQL中的安全问题、SQL Mode及相关问题、MySQL分区等。优化篇针对的是开发人员和数据库管理人员,内容包括SQL优化、锁问题、优化MySQL Server、磁盘I/O问题、应用优化、PS/SYS数据库、故障诊断等内容。管理维护篇适合数据库管理员阅读,介绍了MySQL高级安装和升级、MySQL中的常用工具、MySQL日志、备份与恢复、MySQL权限与安全、MySQL监控、MySQL常见问题和应用技巧、自动化运维系统的开发等内容。架构篇主要面向高级数据库管理人员和数据库架构设计师,内容包括MySQL复制、高可用架构、MySQL中间件等内容。

    《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》内容实用,覆盖广泛,讲解由浅入深,还提供了大量来自一线的工作实例,进一步提升了本书的实战性和可操作性。本书适合数据库管理人员、数据库开发人员、系统维护人员、数据库初学者及其他数据库从业人员阅读,也适合用作大中专院校相关专业师生的参考用书和相关培训机构的培训教材。
  • 作者简介:
    翟振兴,网易技术专家,毕业于清华大学软件学院,2005年入职网易,经历了网易多个核心系统的数据库设计和运维工作,对高并发下的数据库架构变迁有着深刻的理解,目前主要对自动化运维、大数据、NewSQL等新技术有着较多的兴趣和研究。

    张恒岩,网易技术经理,2010年毕业于北京科技大学,在网易DBA组工作9年,负责过网易内部多个核心数据库的运维以及数据库自动化运维系统的设计和开发。在数据库架构设计、性能优化、故障诊断以及自动化运维等方面有丰富的经验。

    崔春华,网易资深DBA,有 10 多年的数据库技术领域从业经验,深刻理解数据库原理并具有丰富的实战经验,拥有Oracle 9i OCP证书,曾先后混迹于石化、电信行业,加入网易后,负责网易多个核心业务的数据库设计和维护工作,擅长数据库优化、故障诊断、架构设计,主要参与Cetus开源项目和私有云RDS底层设计开发。

    黄荣,网易资深数据库工程师,毕业于北京邮电大学,曾参与了网易多个核心业务的数据库设计和开发。至今有12年数据库相关工作经验,尤其擅长高可用架构设计、数据库优化及故障诊断。现专注于研究MySQL内部原理、探索MySQL新技术和开发自动化运维平台。

    董骐铭,网易高级数据库工程师,毕业于北京航空航天大学,负责网易数据库运维平台的研发工作,参与了Cetus及其管理工具项目的开发,专注于自动化与智能运维相关技术的探索与实现。
  • 目录:
    第 一部分 基础篇

    第 1章 MySQL的安装与配置 2

    1.1 MySQL的下载 2

    1.1.1 在Windows平台下下载MySQL 3

    1.1.2 在Linux平台下下载MySQL 3

    1.2 MySQL的安装 5

    1.2.1 在Windows平台下安装MySQL 5

    1.2.2 在Linux平台下安装MySQL 8

    1.3 MySQL的配置 12

    1.3.1 Windows平台下配置MySQL 12

    1.3.2 Linux平台下配置MySQL 13

    1.4 启动和关闭MySQL服务 13

    1.4.1 在Windows平台下启动和关闭MySQL服务 13

    1.4.2 在Linux平台下启动和关闭MySQL服务 13

    1.5 小结 14

    第 2章 SQL基础 15

    2.1 SQL简介 15

    2.2 (My)SQL使用入门 15

    2.2.1 SQL分类 15

    2.2.2 DDL语句 16

    2.2.3 DML语句 23

    2.2.4 DCL语句 33

    2.3 帮助的使用 34

    2.3.1 按照层次看帮助 34

    2.3.2 快速查阅帮助 35

    2.4 查询元数据信息 36

    2.5 小结 37

    第3章 MySQL支持的数据类型 38

    3.1 数值类型 38

    3.2 日期时间类型 43

    3.3 字符串类型 49

    3.3.1 CHAR和VARCHAR类型 50

    3.3.2 BINARY和VARBINARY类型 51

    3.3.3 ENUM类型 51

    3.3.4 SET类型 52

    3.4 JSON类型 52

    3.5 小结 54

    第4章 MySQL中的运算符 55

    4.1 算术运算符 55

    4.2 比较运算符 56

    4.3 逻辑运算符 59

    4.4 位运算符 60

    4.5 运算符的优先级 61

    4.6 小结 62

    第5章 常用函数 63

    5.1 字符串函数 63

    5.2 数值函数 66

    5.3 日期和时间函数 68

    5.4 流程函数 71

    5.5 JSON函数 73

    5.5.1 创建JSON函数 74

    5.5.2 查询JSON函数 75

    5.5.3 修改JSON的函数 79

    5.5.4 查询JSON元数据函数 81

    5.5.5 JSON工具函数 83

    5.6 窗口函数 86

    5.6.1 ROW_NUMBER() 87

    5.6.2 RANK()/DENSE_RANK() 89

    5.6.3 PERCENT_RANK()/CUME_DIST() 89

    5.6.4 NFILE(N) 90

    5.6.5 NTH_VALUE(expr,N) 91

    5.6.6 LAG(expr,N)/LEAD(expr,N) 91

    5.6.7 FIRST_VALUE(expr)/LAST_VALUE(expr) 92

    5.6.8 聚合函数作为窗口函数 93

    5.7 其他常用函数 93

    5.8 小结 95

    第二部分 开发篇

    第6章 表类型(存储引擎)的选择 98

    6.1 MySQL存储引擎概述 98

    6.2 各种存储引擎的特性 100

    6.2.1 MyISAM 101

    6.2.2 InnoDB 102

    6.2.3 MEMORY 108

    6.2.4 MERGE 109

    6.2.5 TokuDB 111

    6.3 如何选择合适的存储引擎 112

    6.4 小结 113

    第7章 选择合适的数据类型 114

    7.1 CHAR与VARCHAR 114

    7.2 TEXT与BLOB 115

    7.3 浮点数与定点数 118

    7.4 日期类型选择 120

    7.5 小结 120

    第8章 字符集 121

    8.1 字符集概述 121

    8.2 Unicode简述 121

    8.3 汉字及一些常见字符集 123

    8.4 怎样选择合适的字符集 124

    8.5 MySQL支持的字符集简介 125

    8.6 MySQL字符集的设置 126

    8.6.1 服务器字符集和排序规则 126

    8.6.2 数据库字符集和排序规则 127

    8.6.3 表字符集和排序规则 127

    8.6.4 列字符集和排序规则 128

    8.6.5 连接字符集和排序规则 128

    8.7 字符集的修改步骤 129

    8.8 小结 129

    第9章 索引的设计和使用 130

    9.1 索引概述 130

    9.2 设计索引的原则 131

    9.3 索引设计的误区 132

    9.4 索引设计的一般步骤 132

    9.5 BTREE索引与HASH索引 133

    9.6 索引在MySQL 8.0中的改进 134

    9.6.1 不可见索引 134

    9.6.2 倒序索引 135

    9.7 小结 136

    第 10章 开发常用数据库对象 137

    10.1 视图 137

    10.1.1 什么是视图 137

    10.1.2 视图操作 137

    10.1.3 创建或者修改视图 137

    10.1.4 删除视图 139

    10.1.5 查看视图 139

    10.2 存储过程和函数 140

    10.2.1 什么是存储过程和函数 141

    10.2.2 存储过程和函数的相关操作 141

    10.2.3 创建、修改存储过程或者函数 141

    10.2.4 删除存储过程或者函数 144

    10.2.5 查看存储过程或者函数 144

    10.2.6 变量的使用 146

    10.2.7 定义条件和处理 146

    10.2.8 光标的使用 148

    10.2.9 流程控制 149

    10.2.10 事件调度器 152

    10.3 触发器 155

    10.3.1 创建触发器 155

    10.3.2 删除触发器 157

    10.3.3 查看触发器 157

    10.3.4 触发器的使用 158

    10.4 小结 159

    第 11章 事务控制和锁定语句 160

    11.1 LOCK TABLES和UNLOCK TABLES 160

    11.2 事务控制 161

    11.3 分布式事务的使用 166

    11.3.1 分布式事务的原理 166

    11.3.2 分布式事务的语法 166

    11.3.3 存在的问题 168

    11.4 小结 171

    第 12章 SQL中的安全问题 172

    12.1 SQL注入简介 172

    12.2 应用开发中可以采取的应对措施 173

    12.2.1 PrepareStatement+Bind-Variable 173

    12.2.2 使用应用程序提供的转换函数 174

    12.2.3 自己定义函数进行校验 174

    12.3 小结 175

    第 13章 SQL Mode及相关问题 176

    13.1 MySQL SQL Mode简介 176

    13.2 SQL Mode的常见功能 178

    13.3 常用的SQL Mode 180

    13.4 SQL Mode在迁移中如何使用 182

    13.5 小结 183

    第 14章 MySQL分区 184

    14.1 分区概述 184

    14.2 分区类型 185

    14.2.1 RANGE分区 187

    14.2.2 LIST 分区 188

    14.2.3 COLUMNS 分区 189

    14.2.4 HASH分区 192

    14.2.5 KEY分区 195

    14.2.6 子分区 196

    14.2.7 MySQL分区处理NULL值的方式 197

    14.3 分区管理 199

    14.3.1 RANGE与LIST分区管理 199

    14.3.2 HASH与KEY分区管理 205

    14.3.3 交换分区 206

    14.4 小结 208

    第三部分 优化篇

    第 15章 SQL优化 210

    15.1 优化SQL语句的一般步骤 210

    15.1.1 通过show status命令了解各种SQL的执行频率 210

    15.1.2 定位执行效率较低的SQL语句 211

    15.1.3 通过EXPLAIN分析低效SQL的执行计划 211

    15.1.4 通过show profile分析SQL 216

    15.1.5 通过trace分析优化器如何选择执行计划 219

    15.1.6 确定问题并采取相应的优化措施 220

    15.2 索引问题 220

    15.2.1 索引的存储分类 220

    15.2.2 MySQL如何使用索引 222

    15.2.3 查看索引使用情况 231

    15.3 两个简单实用的优化方法 231

    15.3.1 定期分析表和检查表 232

    15.3.2 定期优化表 233

    15.4 常用SQL的优化 233

    15.4.1 大批量插入数据 234

    15.4.2 优化INSERT语句 235

    15.4.3 优化ORDER BY语句 235

    15.4.4 优化GROUP BY语句 239

    15.4.5 优化JOIN操作 239

    15.4.6 优化嵌套查询 243

    15.4.7 MySQL如何优化OR条件 245

    15.4.8 优化分页查询 246

    15.4.9 使用SQL提示 248

    15.5 直方图 250

    15.5.1 什么是直方图 250

    15.5.2 直方图的分类 251

    15.5.3 直方图实例应用 252

    15.5.4 直方图小结 256

    15.6 使用查询重写 256

    15.7 常用SQL技巧 259

    15.7.1 正则表达式的使用 259

    15.7.2 巧用RAND()提取随机行 261

    15.7.3 利用GROUP BY的WITH ROLLUP子句 262

    15.7.4 用BIT GROUP FUNCTIONS做统计 263

    15.7.5 数据库名、表名大小写问题 265

    15.7.6 使用外键需要注意的问题 265

    15.8 小结 266

    第 16章 锁问题 267

    16.1 MySQL锁概述 267

    16.2 MyISAM表锁 268

    16.2.1 查询表级锁争用情况 268

    16.2.2 MySQL表级锁的锁模式 268

    16.2.3 如何加表锁 269

    16.2.4 并发插入(Concurrent Inserts) 271

    16.2.5 MyISAM的锁调度 272

    16.3 InnoDB锁问题 273

    16.3.1 背景知识 273

    16.3.2 获取InnoDB行锁争用情况 275

    16.3.3 InnoDB的行锁模式及加锁方法 276

    16.3.4 InnoDB行锁实现方式 279

    16.3.5 Next-Key锁 283

    16.3.6 恢复和复制的需要,对InnoDB锁机制的影响 284

    16.3.7 InnoDB在不同隔离级别下的一致性读及锁的差异 287

    16.3.8 什么时候使用表锁 288

    16.3.9 关于死锁 289

    16.4 小结 294

    第 17章 优化MySQL Server 296

    17.1 MySQL体系结构概览 296

    17.2 MySQL内存管理及优化 298

    17.2.1 内存优化原则 298

    17.2.2 MyISAM内存优化 298

    17.2.3 InnoDB内存优化 301

    17.2.4 调整用户服务线程排序缓存区 305

    17.3 InnoDB log机制及优化 305

    17.3.1 InnoDB重做日志 305

    17.3.2 innodb_flush_log_at_trx_commit的设置 306

    17.3.3 设置log file size,控制检查点 307

    17.3.4 调整innodb_log_buffer_size 308

    17.4 调整MySQL并发相关的参数 308

    17.4.1 调整max_connections,提高并发连接 308

    17.4.2 调整back_log 309

    17.4.3 调整table_open_cache 309

    17.4.4 调整thread_cache_size 309

    17.4.5 innodb_lock_wait_timeout的设置 309

    17.5 持久化全局变量 309

    17.6 使用资源组 310

    17.7 小结 312

    第 18章 磁盘I/O问题 313

    18.1 使用固态硬盘 313

    18.2 使用磁盘阵列 314

    18.2.1 常见RAID级别及其特性 314

    18.2.2 如何选择RAID级别 315

    18.3 虚拟文件卷或软RAID 315

    18.4 使用Symbolic Links分布I/O 315

    18.5 禁止操作系统更新文件的atime属性 316

    18.6 调整I/O调度算法 316

    18.7 RAID卡电池充放电问题 318

    18.7.1 什么是RAID卡电池充放电 318

    18.7.2 RAID卡缓存策略 319

    18.7.3 如何应对RAID卡电池充放电带来的I/O性能波动 321

    18.8 NUMA架构优化 322

    18.9 小结 325

    第 19章 应用优化 326

    19.1 优化数据表的设计 326

    19.1.1 优化表的数据类型 326

    19.1.2 通过拆分提高表的访问效率 328

    19.1.3 逆规范化 329

    19.2 数据库应用优化 330

    19.2.1 使用连接池 330

    19.2.2 减少对MySQL的访问 330

    19.2.3 负载均衡 331

    19.3 小结 331

    第 20章 PS/SYS数据库 332

    20.1 Performance Schema库 332

    20.1.1 如何开启PS库 332

    20.1.2 PS库的表 333

    20.2 SYS 库 335

    20.2.1 SYS库的对象 335

    20.2.2 SYS对象的实际应用 336

    20.3 小结 340

    第 21章 故障诊断 341

    21.1 故障诊断和处理的原则 341

    21.2 故障处理一般流程 343

    21.2.1 故障发现 343

    21.2.2 故障定位 345

    21.2.3 故障解决 346

    21.3 典型故障案例 349

    21.3.1 案例1 349

    21.3.2 案例2 353

    21.4 小结 356

    第四部分 管理维护篇

    第 22章 MySQL高级安装和升级 358

    22.1 Linux/UNIX平台下的安装 358

    22.1.1 安装包比较 358

    22.1.2 安装二进制包 359

    22.1.3 安装源码包 359

    22.1.4 参数设置方法 360

    22.2 升级MySQL 361

    22.3 小结 363

    第 23章 MySQL中的常用工具 364

    23.1 MySQL官方工具 364

    23.1.1 mysql(客户端连接工具) 364

    23.1.2 mysqladmin(MySQL管理工具) 371

    23.1.3 mysqlbinlog(日志管理工具) 371

    23.1.4 mysqlcheck(表维护工具) 378

    23.1.5 mysqldump(数据导出工具) 380

    23.1.6 mysqlpump(并行的数据导出工具) 384

    23.1.7 mysqlimport(数据导入工具) 385

    23.1.8 mysqlshow(数据库对象查看工具) 385

    23.1.9 perror(错误代码查看工具) 387

    23.1.10 MySQL Shell 387

    23.2 Percona工具包 390

    23.2.1 pt-archiver(数据归档工具) 391

    23.2.2 pt-config-diff(参数对比工具) 393

    23.2.3 pt-duplicate-key-checker(检查冗余索引工具) 394

    23.2.4 pt-find(查找工具) 395

    23.2.5 pt-heartbeat(监控主从延迟工具) 395

    23.2.6 pt-kill(杀死会话工具) 397

    23.2.7 pt-online-schema-change(在线修改表结构工具) 397

    23.2.8 pt-query-digest(SQL分析工具) 399

    23.2.9 pt-table-checksum(数据检验工具) 401

    23.2.10 pt-table-sync(数据同步工具) 402

    23.3 小结 403

    第 24章 MySQL日志 404

    24.1 错误日志 404

    24.2 二进制日志 405

    24.2.1 日志的位置和格式 405

    24.2.2 日志的读取 406

    24.2.3 日志的删除 407

    24.2.4 日志的事件 411

    24.2.5 日志闪回 412

    24.3 查询日志 415

    24.3.1 日志的位置和格式 415

    24.3.2 日志的读取 416

    24.4 慢查询日志 416

    24.4.1 文件位置和格式 416

    24.4.2 日志的读取 417

    24.4.3 Anemometer简介 419

    24.5 小结 421

    第 25章 备份与恢复 422

    25.1 备份/恢复策略 422

    25.2 逻辑备份和恢复 422

    25.2.1 备份 423

    25.2.2 完全恢复 425

    25.2.3 基于时间点恢复 427

    25.2.4 基于位置恢复 427

    25.2.5 并行恢复 427

    25.3 物理备份和恢复 428

    25.3.1 冷备份和热备份 428

    25.3.2 MyISAM存储引擎的热备份 429

    25.3.3 InnoDB存储引擎的热备份 429

    25.4 表的导入和导出 438

    25.4.1 导出 438

    25.4.2 导入 442

    25.5 小结 445

    第 26章 MySQL权限与安全 446

    26.1 MySQL权限管理 446

    26.1.1 权限系统的工作原理 446

    26.1.2 权限表的存取 446

    26.1.3 账号管理 449

    26.2 MySQL安全问题 461

    26.2.1 操作系统相关的安全问题 461

    26.2.2 数据库相关的安全问题 463

    26.3 其他安全设置选项 471

    26.3.1 密码插件 471

    26.3.2 safe-user-create 472

    26.3.3 表空间加密 473

    26.3.4 skip-grant-tables 474

    26.3.5 skip-networking 474

    26.3.6 skip-show-database 475

    26.4 小结 475

    第 27章 MySQL监控 476

    27.1 如何选择一个监控方案 476

    27.1.1 选择何种监控方式 476

    27.1.2 如何选择适合自己的监控工具 477

    27.2 常用的网络监控工具 477

    27.2.1 Open-Falcon简介 477

    27.2.2 Nagios简介 479

    27.2.3 Zabbix简介 480

    27.2.4 几种常见开源软件比较 481

    27.3 Zabbix 部署 481

    27.3.1 Zabbix Server软件安装 482

    27.3.2 Zabbix Server配置与启动 482

    27.3.3 配置Zabbix Web服务端 483

    27.3.4 Zabbix Agent安装和配置 485

    27.3.5 PMP插件介绍和部署 486

    27.3.6 Zabbix Web端操作 489

    27.4 性能医生orzdba 491

    27.4.1 orzdba安装 491

    27.4.2 orzdba使用 492

    27.5 小结 492

    第 28章 MySQL常见问题和应用技巧 493

    28.1 忘记MySQL的root密码 493

    28.2 数据目录磁盘空间不足的问题 494

    28.3 mysql.sock丢失后如何连接数据库 495

    28.4 从mysqldump文件抽取需要恢复的表 496

    28.5 使用innobackupex备份恢复单表 497

    28.6 分析BINLOG,找出写的热点表 498

    28.7 在线DDL 499

    28.8 小结 502

    第 29章 自动化运维系统的开发 503

    29.1 MySQL自动化运维背景 503

    29.2 CMDB系统搭建 504

    29.2.1 CMDB数据库 504

    29.2.2 批量管理系统 505

    29.2.3 后台API 511

    29.3 任务调度系统 515

    29.3.1 Celery安装 515

    29.3.2 Celery任务部署 516

    29.3.3 Flower监控 518

    29.4 客户端搭建 519

    29.4.1 Vue.js简介 519

    29.4.2 Vue项目搭建 520

    29.5 自动化运维平台实战 525

    29.5.1 搭建CMDB 525

    29.5.2 搭建任务调度平台 528

    29.5.3 搭建客户端 529

    29.5.4 项目演示 532

    29.6 小结 532

    第五部分 架构篇

    第30章 MySQL复制 534

    30.1 复制概述 534

    30.1.1 复制中的各类文件 536

    30.1.2 3种复制方式 537

    30.1.3 复制的4种常见架构 540

    30.2 复制搭建 543

    30.2.1 异步复制 543

    30.2.2 多线程复制 547

    30.2.3 增强半同步复制 553

    30.3 GTID(Global Transaction Identifier) 558

    30.3.1 格式与存储 558

    30.3.2 gtid_purged 561

    30.3.3 复制搭建 565

    30.3.4 主从切换 571

    30.3.5 常见问题 572

    30.4 主要复制启动选项 576

    30.4.1 log-slave-updates 576

    30.4.2 read-only/super_read_only 576

    30.4.3 指定复制的数据库或者表 577

    30.4.4 slave-skip-errors 579

    30.5 日常管理维护 579

    30.5.1 查看从库复制状态和进度 579

    30.5.2 主从复制问题集锦 580

    30.5.3 多主复制时的自增长变量冲突问题 582

    30.5.4 如何提高复制的性能 584

    30.6 小结 588

    第31章 高可用架构 589

    31.1 MHA架构 589

    31.1.1 安装部署MHA 591

    31.1.2 应用连接配置 598

    31.1.3 自动failover 605

    31.1.4 网络问题触发的failover操作 614

    31.1.5 手动failover 614

    31.1.6 在线进行切换 615

    31.1.7 修复宕掉的Master 617

    31.2 MGR架构 617

    31.2.1 安装部署MGR 618

    31.2.2 监控 625

    31.2.3 primary成员切换 626

    31.2.4 重要特性 628

    31.2.5 常见问题 629

    31.3 InnoDB Cluster 636

    31.3.1 安装部署 637

    31.3.2 初始化MySQL Router 642

    31.3.3 集群Metadata 643

    31.3.4 集群成员角色切换 644

    31.3.5 集群删除/增加节点 646

    31.3.6 重新加入节点 648

    31.4 小结 649

    第32章 MySQL中间件 650

    32.1 MySQL Router 650

    32.1.1 MySQL Router的安装 651

    32.1.2 MySQL Router的初始化 653

    32.1.3 MySQL Router策略验证 656

    32.2 Cetus架构 658

    32.2.1 Cetus的安装配置 659

    32.2.2 Cetus的使用 670

    32.2.3 Cetus日志文件 674

    32.2.4 Cetus的后端管理 675

    32.2.5 Cetus的路由策略 678

    32.2.6 常见问题 681

    32.3 小结 682
查看详情
相关图书 / 更多
深入浅出MySQL数据库开发优化与管理维护第3版
深入浅出全链路压测
吴骏龙
深入浅出MySQL数据库开发优化与管理维护第3版
深入解析Windows操作系统 (第7版)(卷2)
(美)安德里亚·阿列维(Andrea Allievi)
深入浅出MySQL数据库开发优化与管理维护第3版
深入理解移动互联网
吴功宜 吴英 编著
深入浅出MySQL数据库开发优化与管理维护第3版
深入实施“四个育人”,彰显本科人才培养特色——云南大学本科教育改革与创新优秀论文集
主编唐旭光
深入浅出MySQL数据库开发优化与管理维护第3版
深入浅出C语言程序设计(第3版·微课版)
李俊·c;强振平;荣剑;张晴晖;赵毅力;钟丽辉
深入浅出MySQL数据库开发优化与管理维护第3版
深入理解物联网 吴功宜 吴英
吴功宜 吴英
深入浅出MySQL数据库开发优化与管理维护第3版
深入学习习近平关于科技创新的重要论述
科学技术部编写组 著
深入浅出MySQL数据库开发优化与管理维护第3版
深入浅出Spring Boot 3.x
杨开振
深入浅出MySQL数据库开发优化与管理维护第3版
深入浅出数字经济
郭全中
深入浅出MySQL数据库开发优化与管理维护第3版
深入地心 少儿科普 新华正版
英国尤斯伯恩出版公司
深入浅出MySQL数据库开发优化与管理维护第3版
深入理解FFmpeg
刘歧 赵军 杜金房 赵文杰 宋韶颍
深入浅出MySQL数据库开发优化与管理维护第3版
深入人心:数字产品设计的底层逻辑
林婕