搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
数据库索引设计与优化
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121260544
  • 作      者:
    (美)Tapio Lahdenmaki,(美)Michael Leach著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2015
收藏
编辑推荐
  中国数据库界几大势力云集于这本旷世奇作,没读过咋好意思和DBA同行打招呼
  蚂蚁(原支付宝)数据库团队资深专家携成长回忆与技术历程倾情献上最优质翻译
  《数据库索引设计与优化》旨在——通过设计适用于现代硬件的索引,来提升关系型数据库的性能
  软硬件发展让数据库性能被忽视,但数据处理量增长更快,全新索引优化设计才能根治随机读速缓慢
展开
作者简介
  塔皮奥.拉赫登迈奇(Tapio Lahdenmaki),数据库性能顾问,教授通用索引设计课程。他在IBM公司工作了三十多年,是公司全球课程中有关DB2 (for z/OS)性能相关课程的主要作者。Michael Leach,关系型数据库顾问,已从IBM公司退休,他拥有二十年的应用系统及数据库课程的教授经验。两位作者的文章均被翻译成了多国语言广为传播。他们有关索引设计的方法被成功应用于许多核心系统。
展开
内容介绍
  《数据库索引设计与优化》提供了一种简单、高效、通用的关系型数据库索引设计方法。作者通过系统的讲解及大量的案例清晰地阐释了关系型数据库的访问路径选择原理,以及表和索引的扫描方式,详尽地讲解了如何快速地估算SQL运行的CPU时间及执行时间,帮助读者从原理上理解SQL、表及索引结构、访问方式等对关系型数据库造成的影响,并能够运用量化的方法进行判断和优化,指导关系型数据库的索引设计。
  《数据库索引设计与优化》适用于已经具备了SQL这一关系型语言相关知识,希望通过理解SQL性能相关的内容,或者希望通过了解如何有效地设计表和索引而从中获益的人员。另外,《数据库索引设计与优化》也同样适用于希望对新硬件的引入所可能带来的变化做出更好判断的资深人士。
展开
精彩书评
  ★这本写作于2005年的著作,是少数能够穿越十年仍然历久弥新的经典著作之一。译者曹怡倩和赵建伟是支付宝的资深数据库专家,也是童家旺的得意门生,他们的经验和理解为本书增色良多。我在学习过程中也曾经从本书的英文版中获益……
  ——盖国强(Oracle ACE总监,云和恩墨创始人)

  ★在工程领域,很多数据库工程师们都积累了对于索引设计与优化的经验,可惜很少有书籍系统地介绍这部分内容,这导致网上存在很多错误的观念。可喜的是本书详细介绍了一种简单、高效的数据库索引设计方法,可让读者对数据库的索引设计快速进阶。
  ——姜承尧(网易杭州研究院数据库技术组负责人)

  ★书中使用了Oracle、DB2和SQL Server 这三种数据库的大量案例,介绍了它们的异同与各自的特性,绝大部分内容也同样适合于MySQL和PostgreSQL数据库产品。个人认为本书可奉为宝典,是值得DBA们人人收藏的一本书,也适合作为云计算平台研发自动化SQL审核与索引创建组件研发工程师的工具书。
  ——金官丁

  ★本书原著是数据库领域的重要理论大作,几年前童家旺先生就推荐过此书,在《高性能MySQL》一书中也推荐过它,据说他还要求每位徒弟都熟读此书,可见其重要性。
  ——叶金荣

  ★记得第一次接触到这本书英文版是在2011年的时候,从这本书中所学到的知识对我之后的工作带来了极大的帮助,使我在应用系统的索引设计及SQL调优上节省了大量的精力且取得了不错的效果。之所以能有如此成效,完全得益于Tapio Lahdenm?ki和Michael Leach两位作者的贡献,是他们将宝贵的经验与智慧与广大读者分享。
  ——现阿里蚂蚁DBA团队资深专家 知含

  ★这本书不仅讲述了如何建立三星索引的方法论,更重要的是给出了基于硬件和软件环境下索引设计的量化评估的方法和实践,掌握了这些方法后,你将能够提前量化业务SQL上线运行情况,并指导后期的容量评估。这本书并没有限定具体的商业或者开源的关系型数据库产品,而是讲述通用的理论和方法。
  ——现阿里蚂蚁DBA团队资深专家 赵建伟

  ★本书的目标读者是那些希望理解SQL性能相关内容,并希望了解如何有效设计表和索引的人。通过本书,拥有多年关系型系统经验的读者能够更好地判断新硬件的引入所可能带来的变化。
  ——本书英文版读者

  ★本书提供了一种简单高效的设计索引和表的方法。作者通过大量的举例及案例研究描述了Oracle、DB2和SQL Server优化器是如何决定以何种方式访问数据库的,同时还阐述了快速估算所选择的访问路径的CPU及响应时间的方法。这使得对比不同设计方案的优劣成为了可能,且能帮助你在众多方案中选出最合适的那一个。
  ——本书英文版读者

  ★尽管所有的书中都写了如何正确编写查询、如何组织表,以及应当按照什么规则来决定将哪些列添加至索引上。但我们最需要的是一本能够突破常规的书,真正开始思考为何现今仍有这么多人还会遇到如此多的问题。《数据库索引设计与优化》做到了!
  ——本书英文版读者
展开
目录
第1 章 概述
关于SQL 性能的另一本书
不合适的索引
误区和误解
误区1:索引层级不要超过5 层
误区2:单表的索引数不要超过6 个
误区3:不应该索引不稳定的列
示例
磁盘驱动器使用率
系统化的索引设计
第2章 表和索引结构
介绍
索引页和表页
索引行
索引结构
表行
缓冲池和磁盘I/O
从DBMS 缓冲池进行的读取
从磁盘驱动器进行的随机I/O
从磁盘服务器缓存进行的读取
从磁盘驱动器进行的顺序读取
辅助式随机读
辅助式顺序读
同步I/O 和异步I/O
硬件特性
DBMS 特性

表聚簇
索引行
表行
索引组织表
页邻接
B 树索引的替代品
聚簇的许多含义
第3 章 SQL 处理过程
简介
谓词
评注
优化器及访问路径
索引片及匹配列
索引过滤及过滤列
访问路径术语
监控优化器
帮助优化器(统计信息)
帮助优化器(FETCH 调用的次数)
何时确定访问路径
过滤因子
组合谓词的过滤因子
过滤因子对索引设计的影响
物化结果集
游标回顾
方式1:一次FETCH 调用物化一条记录
方式2:提前物化
数据库设计人员必须牢记
练习
第4 章 为SELETE 语句创建理想的索引
简介
磁盘及CPU 时间的基础假设
不合适的索引
三星索引——查询语句的理想索引
星级是如何给定的
范围谓词和三星索引
为查询语句设计最佳索引的算法
候选A
候选B
现今排序速度很快——为什么我们还需要候选B
需要为所有查询语句都设计理想索引吗
完全多余的索引
近乎多余的索引
可能多余的索引
新增一个索引的代价
响应时间
磁盘负载
磁盘空间
一些建议
练习
第5 章 前瞻性的索引设计
发现不合适的索引
基本问题法(BQ)
注意
快速上限估算法(QUBE)
服务时间
排队时间
基本概念:访问
计算访问次数
FETCH 处理
主要访问路径的QUBE 示例
使用满足需求的成本最低的索引还是所能达到的最优索引:示例1
该事务的基本问题
对该事务上限的快速估算
使用满足需求的成本最低的索引还是所能达到的最优索引
该事务的最佳索引
半宽索引(最大化索引过滤)
宽索引(只需访问索引)
使用满足需求的成本最低的索引还是所能达到的最优索引:示例2
范围事务的BQ 及QUBE
该事务的最佳索引
半宽索引(最大化索引过滤)
宽索引(只需访问索引)
何时使用QUBE
第6 章 影响索引设计过程的因素
I/O 时间估算的验证
多个窄索引片
简单就是美(和安全)
困难谓词
LIKE 谓词
OR 操作符和布尔谓词
IN 谓词
过滤因子隐患
过滤因子隐患的例子
最佳索引
半宽索引(最大化索引过滤)
宽索引(只需访问索引)
总结
练习
第7 章 被动式索引设计
简介
EXPLAIN 描述了所选择的访问路径
全表扫描或全索引扫描
对结果集排序
成本估算
数据库管理系统特定的EXPLAIN 选项及限制
监视揭示现实
性能监视器的演进
LRT 级别的异常监视
程序粒度的均值是不够的
异常报告举例:每个尖刺一行
问题制造者和受害者
有优化空间的问题制造者和无优化空间的问题制造者
有优化空间的问题制造者
调优的潜在空间
无优化空间的问题制造者
受害者
查找慢的SQL 调用
调用级别的异常监视
Oracle 举例
SQL Server 举例
结论
数据库管理系统特定的监视问题
尖刺报告
练习
第8 章 为表连接设计索引
简介
两个简单的表连接
例8.1:CUST 表作为外层表
例8.2:INVOICE 表作为外层表
表访问顺序对索引设计的影响
案例研究
现有索引
理想索引
理想索引,每事务物化一屏结果集
理想索引,每事务物化一屏结果集且遇到FF 缺陷
基本连接的问题(BJQ)
结论:嵌套循环连接
预测表的访问顺序
合并扫描连接和哈希连接
合并扫描连接
例8.3:合并扫描连接
哈希连接
程序C:由优化器选择MS/HJ(在现有索引条件下)
理想索引
嵌套循环连接VS
嵌套循环连接VS
嵌套循环连接VS.理想索引
连接两张以上的表
为什么连接的性能表现较差
模糊的索引设计
优化器可能选择错误的表访问路径
乐观的表设计
为子查询设计索引
为UNION 语句设计索引
对于表设计的思考
冗余数据
无意识的表设计
练习
第9 章 星型连接
介绍
维度表的索引设计
表访问顺序的影响
事实表的索引
汇总表
第10 章 多索引访问
简介
索引与
与查询表一同使用索引与
多索引访问和事实数据表
用位图索引进行多索引访问
索引或
索引连接
练习
第11 章 索引和索引重组
B 树索引的物理结构
DBMS 如何查找索引行
插入一行时会发生什么
叶子页的分裂严重吗
什么时候应该对索引进行重组
插入模式
索引列的稳定性
长索引行
举例:对顺序敏感的批处理任务
表乱序(存在聚簇索引)
表乱序(没有以CNO 开头的聚簇索引)
存储在叶子页中的表行
SQL Server
Oracle
索引重组的代价
分裂的监控
总结
第12 章 数据库管理系统相关的索引限制
简介
索引列的数量
索引列的总长度
变长列
单表索引数量上限
索引大小上限
索引锁定
索引行压缩
数据库管理系统索引创建举例
第13 章 数据库索引选项
简介
索引行压缩
索引键以外的其他索引列
唯一约束
从不同的方向扫描数据库索引
索引键截断
基于函数的索引
索引跳跃式扫描
块索引
数据分区的二级索引
练习
……
第14 章 优化器不是完美的
第15 章 其他评估事项
第16 章 组织索引设计过程
参考文献
术语表
索引
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证