搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
剑指MySQL――架构、调优与运维
0.00     定价 ¥ 128.00
浙江图书馆
  • ISBN:
    9787121479403
  • 作      者:
    尚硅谷教育
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2024-06-01
收藏
畅销推荐
作者简介
尚硅谷教育是一家专业的IT教育培训机构,开设了JavaEE、大数据、HTML5前端等多门学科,在互联网上发布的JavaEE、大数据、HTML5前端、区块链、C语言、Python等技术视频教程广受赞誉。
展开
内容介绍
MySQL是风靡全球的数据库管理系统,被广泛应用于互联网场景。作为一名开发人员,掌握MySQL是必备技能。本书从MySQL的安装与使用开始,逐步深入。首先宏观地介绍MySQL的目录结构、用户与权限管理、逻辑架构、存储引擎、InnoDB存储引擎中的数据存储结构等;然后介绍MySQL中的索引、性能分析工具的使用、索引优化、数据库的设计规范、数据库调优等;接着介绍MySQL中的事务和锁机制,以及MySQL如何保证事务的特性,涉及redo日志、undo日志、MVCC及各种锁的细节等知识;最后介绍数据库软硬件的性能优化,包括主从复制、数据库备份与恢复等。本书内容全面细致,讲解深入浅出,书中穿插了大量案例,做到了理论和实践相结合。本书主要以MySQL 8.0以后的版本为例进行讲解,同时融合了MySQL 8.0以前的版本进行比较,适用性更强。无论你是致力于构建和管理高性能、高可用性的数据库系统的开发人员,还是数据库管理员,都能从本书中有所收获。
展开
目录
目录

第1章 Linux平台下MySQL的安装与使用 1
1.1 MySQL概述 1
1.1.1 MySQL简介 1
1.1.2 MySQL的发展历程 2
1.1.3 MySQL高手是如何练就的 3
1.2 Linux平台下MySQL的安装 3
1.2.1 MySQL的四大版本 3
1.2.2 下载MySQL指定版本 3
1.2.3 Linux平台下安装MySQL的
三种方式 5
1.2.4 安装MySQL前的必要操作 6
1.2.5 CentOS 7下MySQL的安装
过程 7
1.3 卸载MySQL 10
1.4 登录MySQL 10
1.4.1 首次登录 10
1.4.2 修改密码 11
1.4.3 设置远程登录 11
1.5 MySQL 8.0的密码强度评估 14
1.5.1 MySQL不同版本的密码设置 14
1.5.2 MySQL 8.0的密码安全策略 15
1.6 字符集的设置 17
1.6.1 查看字符集 17
1.6.2 查看校对规则 18
1.6.3 各级别的字符集和校对规则 19
1.6.4 MySQL 5.7和MySQL 8.0中数据
库级别默认字符集的变化 22
1.7 SQL语句中的字母大小写规范 23
1.7.1 Windows和Linux平台下字母
大小写规范的区别 23
1.7.2 Linux平台下字母大小写规范
设置 23
1.8 sql_mode 24
1.8.1 sql_mode简介 24
1.8.2 宽松模式与严格模式对比 24
1.8.3 模式的查看和设置 25
1.9 小结 26
第2章 MySQL的目录结构 27
2.1 MySQL的主要目录 27
2.1.1 MySQL的数据目录 27
2.1.2 MySQL的数据库命令目录 27
2.2 数据库和文件系统的关系 29
2.2.1 查看系统数据库 29
2.2.2 数据库在文件系统中的表示 29
2.2.3 表在文件系统中的表示 30
2.2.4 视图在文件系统中的表示 33
2.2.5 其他文件 33
2.3 小结 34
第3章 用户与权限管理 35
3.1 权限表 35
3.1.1 user表 35
3.1.2 db表 37
3.1.3 tables_priv表和
columns_priv表 38
3.1.4 procs_priv表 39
3.2 用户管理 40
3.2.1 登录MySQL服务器 40
3.2.2 创建用户 40
3.2.3 删除用户 41
3.2.4 修改用户信息 42
3.2.5 修改当前用户的密码 42
3.2.6 修改其他普通用户的密码 43
3.2.7 MySQL 8.0密码管理 43
3.3 权限管理 45
3.3.1 权限列表 45
3.3.2 授予权限的原则 46
3.3.3 授予权限的方式 46
3.3.4 查看权限 47
3.3.5 回收权限 50
3.4 访问控制 50
3.4.1 连接核实阶段 50
3.4.2 请求核实阶段 50
3.5 角色管理 51
3.5.1 角色概述 51
3.5.2 创建角色 52
3.5.3 给角色授权 52
3.5.4 查看角色拥有的权限 53
3.5.5 回收角色拥有的权限 53
3.5.6 删除角色 54
3.5.7 赋予用户角色 54
3.5.8 激活角色 55
3.5.9 撤销用户被赋予的角色 55
3.5.10 设置强制角色 56
3.6 配置文件的使用 57
3.6.1 配置文件的格式 57
3.6.2 启动命令与选项组 58
3.6.3 特定MySQL版本的专用
选项组 59
3.6.4 同一配置文件中多个选项组的
优先级 59
3.6.5 命令行和配置文件中启动选项
的区别 59
3.7 系统变量 59
3.7.1 系统变量简介 59
3.7.2 查看系统变量 59
3.7.3 通过启动选项设置系统变量 60
3.7.4 在服务器端程序运行过程中设置系统变量 61
3.7.5 启动选项和系统变量之间的
关系 63
3.8 小结 63
第4章 逻辑架构 64
4.1 逻辑架构剖析 64
4.1.1 MySQL的逻辑架构 64
4.1.2 客户端连接器 66
4.1.3 连接层 66
4.1.4 服务层 66
4.1.5 存储引擎层 67
4.1.6 存储层 68
4.2 SQL语句的执行流程 68
4.3 MySQL 5.7中的查询缓存设置 73
4.4 数据库缓冲池 75
4.4.1 缓冲池和查询缓存 75
4.4.2 查看缓冲池的大小 76
4.4.3 将数据加载到缓冲池中 77
4.4.4 缓冲池中的free链表 78
4.4.5 缓冲池中的LRU链表 79
4.4.6 缓冲池中的flush链表 81
4.5 小结 82
第5章 存储引擎 83
5.1 存储引擎的相关操作 83
5.1.1 查看存储引擎 83
5.1.2 设置系统默认的存储引擎 85
5.1.3 设置表的存储引擎 85
5.2 主要存储引擎介绍 86
5.2.1 InnoDB存储引擎:事务型存储
引擎 86
5.2.2 MyISAM存储引擎:主要的非事务处理存储引擎 86
5.2.3 ARCHIVE存储引擎:数据
存档 86
5.2.4 BLACKHOLE存储引擎:丢弃写操作 87
5.2.5 CSV存储引擎:存储CSV
文件 87
5.2.6 MEMORY存储引擎:内存表 88
5.2.7 其他存储引擎 89
5.2.8 常用存储引擎对比 89
5.3 小结 90
第6章 InnoDB存储引擎中的数据存储结构 91
6.1 数据库的存储架构 91
6.2 InnoDB存储引擎中的行格式 91
6.2.1 查看和修改行格式 91
6.2.2 完整的记录信息 92
6.2.3 行溢出 93
6.2.4 REDUNDANT行格式 94
6.2.5 COMPACT行格式 94
6.2.6 DYNAMIC和COMPRESSED
行格式 95
6.3 页的结构 96
6.3.1 页的组成部分 96
6.3.2 从页的角度看B+树是如何进行
查询的 99
6.4 区和段 99
6.4.1 区 99
6.4.2 段 100
6.5 表空间 100
6.6 小结 102
第7章 索引 103
7.1 索引概述 103
7.2 合理选择索引的数据结构 104
7.2.1 二叉搜索树 104
7.2.2 AVL树 105
7.2.3 B树 105
7.2.4 B+树 106
7.2.5 哈希结构 108
7.3 索引分类 109
7.3.1 按功能逻辑分类 110
7.3.2 按物理实现方式分类 111
7.3.3 按索引字段个数分类 112
7.4 索引的创建与删除 113
7.4.1 创建索引 113
7.4.2 删除索引 123
7.5 InnoDB和MyISAM存储引擎中的索引
方案 126
7.5.1 InnoDB存储引擎中的索引
方案 126
7.5.2 MyISAM存储引擎中的索引
方案 128
7.5.3 InnoDB和MyISAM存储引擎中
的索引方案对比 129
7.6 MySQL 8.0的新特性 130
7.6.1 支持降序索引 130
7.6.2 支持隐藏索引 132
7.7 适合创建索引的场景 135
7.7.1 数据准备 135
7.7.2 查询操作的条件字段 137
7.7.3 分组和排序的字段 138
7.7.4 更新和删除操作的条件字段 141
7.7.5 去重的字段 142
7.7.6 多表连接查询 142
7.7.7 数据类型小的列 143
7.8 不适合创建索引的场景 144
7.8.1 WHERE条件用不到的字段 144
7.8.2 数据量小的表 144
7.8.3 有大量重复数据的字段 145
7.8.4 索引不要冗余或重复创建 147
7.8.5 其他不适合创建索引的场景 147
7.9 小结 148
第8章 性能分析工具的使用 149
8.1 数据库性能调优步骤 149
8.2 查看系统状态信息 150
8.3 查看SQL查询成本 151
8.4 定位执行时间长的SQL语句 153
8.4.1 开启慢查询日志 153
8.4.2 测试及分析 155
8.4.3 慢查询日志分析工具 156
8.4.4 关闭慢查询日志 157
8.4.5 删除慢查询日志 157
8.5 查看SQL语句的具体查询成本 158
8.6 分析查询语句:EXPLAIN 163
8.6.1 说明 163
8.6.2 EXPLAIN结果之id 164
8.6.3 EXPLAIN结果之select_type 166
8.6.4 EXPLAIN结果之table 172
8.6.5 EXPLAIN结果之partitions 172
8.6.6 EXPLAIN结果之type 173
8.6.7 EXPLAIN结果之possible_keys
和key 177
8.6.8 EXPLAIN结果之key_len 178
8.6.9 EXPLAIN结果之ref 179
8.6.10 EXPLAIN结果之rows 181
8.6.11 EXPLAIN结果之filtered 181
8.6.12 EXPLAIN结果之Extra 182
8.6.13 JSON格式的执行计划 183
8.6.14 执行计划的扩展信息 185
8.7 小结 185
第9章 索引优化 186
9.1 数据准备 186
9.2 索引优化原则 188
9.2.1 全值匹配法则 188
9.2.2 最左前缀法则 188
9.2.3 优先考虑覆盖索引 190
9.3 索引失效的场景 191
9.3.1 查询条件中包含函数、计算导致
索引失效 191
9.3.2 范围查询条件右边的列不能被
使用导致索引失效 194
9.3.3 不等值查询导致索引失效 195
9.3.4 判空条件对索引的影响 196
9.3.5 LIKE以通配符“%”开头导致
索引失效 196
9.3.6 数据类型转换导致索引失效 197
9.3.7 OR关键字导致索引失效 198
9.4 关联查询优化 199
9.4.1 数据准备 199
9.4.2 采用左连接:LEFT JOIN 200
9.4.3 采用内连接:INNER JOIN 203
9.4.4 JOIN语句的原理 206
9.5 排序优化 210
9.5.1 ORDER BY的索引规则 210
9.5.2 排序方式比较 214
9.5.3 影响排序效率的两个系统
变量 217
9.6 索引下推 217
9.6.1 索引下推概述 217
9.6.2 索引下推案例 221
9.7 B+树索引的优化 223
9.7.1 自适应哈希索引 223
9.7.2 覆盖索引 224
9.8 其他索引优化场景 225
9.8.1 子查询优化 225
9.8.2 分页查询优化 228
9.8.3 索引提示 229
9.8.4 前缀索引 231
9.9 常用SQL编写建议 233
9.10 小结 235
第10章 数据库的设计规范 236
10.1 范式 236
10.1.1 范式简介 236
10.1.2 范式分类 236
10.1.3 数据表中的键 237
10.1.4 第一范式 238
10.1.5 第二范式 238
10.1.6 第三范式 239
10.1.7 巴斯-科德范式 240
10.1.8 第四范式 240
10.2 反范式化 241
10.2.1 反范式化概述 241
10.2.2 反范式化应用举例 241
10.2.3 反范式化的使用建议 246
10.3 ER模型 246
10.3.1 ER模型中的要素 247
10.3.2 ER模型中实体的属性 248
10.3.3 把ER模型转换为数据表 249
10.3.4 把实体转换为数据表 249
10.3.5 把多对多的关系转换为
数据表 252
10.3.6 通过外键来表达一对多的
关系 252
10.3.7 把属性转换为表中的字段 252
10.4 数据库对象的设计规范 253
10.4.1 库的设计规范 253
10.4.2 表的设计规范 253
10.4.3 索引的设计规范 254
10.5 PowerDesigner的使用 255
10.6 小结 261
第11章 数据库调优 262
11.1 数据库调优的措施 262
11.1.1 如何解决定位问题 262
11.1.2 数据库调优的维度和步骤 262
11.2 优化MySQL服务器 264
11.2.1 优化服务器硬件 264
11.2.2 优化MySQL服务的配置
参数 264
11.3 优化数据库结构 268
11.3.1 拆分表:冷、热数据分离 268
11.3.2 增加中间表或冗余字段 269
11.3.3 优化字段的数据类型 270
11.3.4 优化插入记录的速度 277
11.3.5 使用非空约束 279
11.3.6 分析表、检查表和优化表 279
11.4 大表优化 284
11.4.1 读写分离 284
11.4.2 垂直拆分 285
11.4.3 水平拆分 286
11.5 其他调优策略 287
11.5.1 服务器语句超时处理 287
11.5.2 创建全局通用表空间 287
11.5.3 临时表性能优化 288
11.6 小结 289
第12章 数据库事务 291
12.1 事务概述 291
12.1.1 事务的ACID特性 291
12.1.2 事务的状态 292
12.2 事务的基本使用 293
12.2.1 数据准备 293
12.2.2 事务的基本语法 294
12.2.3 隐式提交数据库事务的情况 296
12.2.4 事务提交和回滚案例 297
12.2.5 不支持事务的表无法回滚
事务 299
12.2.6 事务保存点 300
12.3 事务隔离级别 301
12.3.1 数据库并发问题 301
12.3.2 事务中的4种隔离级别 303
12.3.3 设置隔离级别 304
12.3.4 不同隔离级别下的并发情况 305
12.4 小结 309
第13章 redo日志和undo日志 310
13.1 为什么需要日志维护事务 310
13.2 redo日志 311
13.2.1 redo日志的优势 311
13.2.2 redo日志文件组 311
13.2.3 checkpoint 312
13.2.4 Log Sequence Number 312
13.2.5 redo日志缓存 313
13.2.6 redo日志刷盘策略 314
13.2.7 redo日志相关参数 315
13.3 undo日志 316
13.3.1 为什么需要undo日志 316
13.3.2 undo日志的作用 316
13.3.3 undo日志的存储机制 317
13.3.4 undo日志如何回滚事务 319
13.3.5 undo日志相关参数 321
13.4 小结 322
第14章 锁 323
14.1 锁概述 323
14.1.1 并发事务访问相同记录 323
14.1.2 锁的分类 324
14.2 共享锁和独占锁 325
14.3 表级锁 327
14.3.1 表级别的共享锁和独占锁 327
14.3.2 意向锁 331
14.3.3 自增锁 333
14.3.4 元数据锁 335
14.4 InnoDB存储引擎中的行级锁 336
14.4.1 记录锁 337
14.4.2 间隙锁 338
14.4.3 临键锁 339
14.4.4 插入意向锁 340
14.5 悲观锁和乐观锁 340
14.5.1 悲观锁 340
14.5.2 乐观锁 341
14.5.3 悲观锁和乐观锁的适用场景 342
14.6 隐式锁和显式锁 342
14.6.1 隐式锁 342
14.6.2 显式锁 343
14.7 死锁 343
14.8 锁监控 348
14.9 MySQL加锁案例解析 352
14.9.1 案例一:唯一索引等值查询 352
14.9.2 案例二:非唯一索引等值
查询 354
14.9.3 案例三:主键索引范围查询 356
14.9.4 案例四:非唯一索引上存在
等值的情况 357
14.9.5 案例五:LIMIT语句加锁 359
14.10 小结 361
第15章 多版本并发控制 362
15.1 什么是MVCC 362
15.1.1 快照读 363
15.1.2 当前读 363
15.2 版本链 363
15.3 ReadView 367
15.3.1 什么是ReadView 367
15.3.2 ReadView的设计思路 367
15.3.3 ReadView规则 368
15.3.4 MVCC整体操作流程 370
15.4 不同隔离级别下的ReadView 370
15.4.1 READ COMMITTED隔离级
别下的ReadView 371
15.4.2 REPEATABLE READ隔离级
别下的ReadView 373
15.5 小结 375
第16章 其他数据库日志 376
16.1 MySQL支持的日志 376
16.2 通用查询日志 376
16.2.1 开启/关闭通用查询日志
功能 377
16.2.2 查看通用查询日志 378
16.2.3 删除(刷新)通用查询
日志 378
16.3 错误日志 379
16.3.1 开启错误日志功能 379
16.3.2 查看错误日志 379
16.3.3 删除(刷新)错误日志 380
16.4 二进制日志 381
16.4.1 开启/关闭二进制日志功能 381
16.4.2 二进制日志参数设置 382
16.4.3 查看二进制日志 383
16.4.4 删除(刷新)二进制日志 388
16.4.5 使用二进制日志恢复数据 389
16.4.6 二进制日志的写入机制 394
16.4.7 两阶段提交 396
16.5 中继日志 397
16.6 数据定义语句日志 398
16.7 小结 398
第17章 主从复制 399
17.1 主从复制概述 399
17.2 主从复制的原理 400
17.3 主从复制架构的搭建 400
17.3.1 准备工作 401
17.3.2 修改配置文件 401
17.3.3 主机:创建账户并授权 402
17.3.4 从机:配置需要复制的主机
信息 403
17.3.5 测试和停止主从复制 405
17.3.6 双主双从架构 405
17.3.7 二进制日志格式在主从复制架构中的优缺点 406
17.4 数据一致性 407
17.4.1 数据同步延迟问题 407
17.4.2 如何解决主从复制中数据不一致的问题 408
17.5 数据库中间件 410
17.6 小结 410
第18章 数据库备份与恢复 411
18.1 物理备份和逻辑备份的概念 411
18.2 逻辑备份之mysqldump命令 411
18.2.1 备份单个数据库 412
18.2.2 备份全部数据库 414
18.2.3 备份多个数据库 414
18.2.4 备份部分表 414
18.2.5 备份单表中的部分数据 416
18.2.6 排除某些表的备份 416
18.2.7 只备份表结构或只备份
数据 416
18.2.8 备份中包含函数、存储过程或
事件 417
18.2.9 以事务的形式备份 419
18.2.10 mysqldump命令的常用
参数 419
18.3 逻辑恢复之mysql命令 420
18.3.1 从单库备份中恢复单库 420
18.3.2 全量备份恢复 420
18.3.3 从全量备份中恢复单库 421
18.3.4 从单库备份中恢复单表 421
18.4 MyISAM存储引擎类型的表的物理
备份 421
18.5 MyISAM存储引擎类型的表的物理
备份的恢复流程 422
18.6 InnoDB存储引擎类型的表的物理
导出、导入 423
18.7 导出不同格式的文件 424
18.7.1 使用SELECT…INTO OUTFILE语句导出文件 425

18.7.2 使用mysqldump命令导出
文件 426
18.7.3 使用mysql命令导出文件 428
18.8 导入文本文件 430
18.8.1 使用LOAD DATA INFILE
语句导入文本文件 430
18.8.2 使用mysqlimport命令导入
文本文件 431
18.9 数据迁移 433
18.9.1 数据迁移概述 433
18.9.2 迁移方案和注意事项 433
18.10 误删数据的预防方案和恢复方案 435
18.11 MySQL常用命令 436
18.11.1 mysql 436
18.11.2 mysqladmin 436
18.11.3 mysqlbinlog 437
18.11.4 mysqldump 438
18.11.5 mysqlshow 438
18.12 小结 439
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用浙江图书馆的读者帐号和密码进行登录

点击获取验证码
登录