当前位置:首页 > 工业技术
SQL  Server  2008数据库技术内幕
SQL  Server  2008数据库技术内幕

SQL Server 2008数据库技术内幕PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:李爱武编著
  • 出 版 社:北京:中国铁道出版社
  • 出版年份:2012
  • ISBN:9787113146405
  • 页数:405 页
图书介绍:本书主要内容都是困扰数据库技术人员的核心底层问题,具体包括:系统视图与resource数据库,堆表及索引数据存储方式,空间管理数据页,数据删除或修改后的空间重用,数据页IO保护机制,重做日志原理,执行计划的重用和重编译,锁的原理,游标,备份原理。
上一篇:砌体结构工程施工下一篇:素肴
《SQL Server 2008数据库技术内幕》目录

第1篇 体系结构基础 2

第1章 服务器体系结构与配置 2

1.1启动SQL Server服务器 2

1.1.1使用net start命令启动 2

1.1.2使用Windows服务管理器工具启动 2

1.2客户端工具 3

1.2.1客户端工具sqlcmd和SSMS比较 3

1.2.2 sqlcmd的使用方法 3

1.2.3 SQL Server Management Studio的使用方法 5

1.3服务器体系结构 6

1.4内存结构 8

1.4.1 data cache 9

1.4.2 plan cache 10

1.4.3 Workspace缓存 11

1.5 lazywriter进程、checkpoint进程及worker线程 11

1.5.1 lazywriter进程 11

1.5.2 checkpoint进程 12

1.5.3 worker线程 12

1.6数据库及其构成 13

1.6.1系统数据库 13

1.6.2文件与文件组 13

1.7服务器配置 14

1.7.1显示服务器配置信息 14

1.7.2修改服务器配置参数 15

1.8数据库配置 16

1.8.1显示数据库配置信息 16

1.8.2修改数据库配置信息 17

第2章 系统基表、系统视图与resource数据库 19

2.1系统基表 19

2.1.1查看所有系统基表 19

2.1.2以DAC连接查看系统基表中的数据 21

2.1.3连接APPLE服务器上默认SQL Server实例 22

2.2系统视图及其分类 23

2.2.1 SQL Server系统视图分类 23

2.2.2查询resource数据库存储的系统视图信息 23

2.3访问resource数据库 24

2.3.1查看resource数据库信息 25

2.3.2查看系统视图定义 25

2.3.3在服务器中附加resource数据库 26

2.4系统视图的简单应用:查询表的结构 28

第2篇 堆表与索引数据存储格式 31

第3章 文件存储格式常用研究工具 31

3.1几个常用的dbcc命令 31

3.1.1 SQL Server产品与dbcc命令的关系 31

3.1.2 dbcc extentinfo、 dbcc ind和dbcc page用法 32

3.1.3跟踪标记的启用与关闭 32

3.1.4 dbcc help——得到所有dbcc命令名称及其语法信息 34

3.1.5 dbcc extentinfo——得到对象分配到的区信息 35

3.1.6 dbcc ind——得到对象分配到的数据页信息 36

3.1.7 dbcc page——以指定格式导出数据页数据 37

3.2十六进制数据编辑工具——WinHex 42

3.2.1设置打开文件的方式 42

3.2.2转到指定偏移量 43

3.2.3在WinHex中查看和修改SQL Server文件数据 44

3.2.4使用dbcc writepage命令修改数据页数据 46

第4章 数据页结构 48

4.1数据页类型 48

4.2应用dbcc fileheader和dbcc dbinfor命令查看数据页内容 49

4.3在数据文件中定位数据页 50

4.4数据页结构 50

4.4.1数据页中三部分数据实例展示 51

4.4.2页头 52

4.4.3数据部分 54

4.4.4偏移量列表 54

第5章 堆表数据的存储方式 60

5.1行内数据、行溢出数据和大对象数据 60

5.1.1三类数据的含义 60

5.1.2记录长度不能超过8060字节 60

5.1.3分配单元 61

5.2记录类型 62

5.3记录的存储格式 62

5.4行内数据与行溢出数据的存储方式 64

5.4.1行内数据的存储方式 65

5.4.2行溢出数据的存储方式 68

5.5 forwarded/forwarding记录的存储 71

5.6大对象数据的存储 77

5.6.1 large value types out of row参数设置为0的情形 77

5.6.2 large value types out of row参数设置为1的情形 78

第6章 索引数据的存储方式 81

6.1堆表的非聚集索引结构 81

6.1.1记录的RowID 81

6.1.2如何查看RowID 82

6.1.3非聚集索引整体结构 83

6.1.4叶结点索引记录存储方式 86

6.1.5分支结点索引记录存储方式 91

6.2聚集索引结构 94

6.2.1叶结点记录存储方式 94

6.2.2分支结点索引记录存储方式 99

6.2.3聚集索引上创建的非聚集索引结构 104

6.3约束与索引的关系 106

6.4 DML语句对索引的影响 106

6.4.1 delete语句对索引的影响 106

6.4.2 delete语句对索引影响的讨论 107

6.4.3 insert操作对索引的影响 110

6.4.4 update操作对索引的影响 113

6.4.5 truncate table命令对索引的影响 114

第7章 多版本数据存储方式 115

7.1事务 115

7.1.1事务的ACID属性 115

7.1.2 commit与rollback命令 116

7.1.3客户端事务模式 116

7.1.4事务隔离级别 117

7.2开启read committed_snapshot参数后产生的多版本数据 117

7.2.1参数开启前后“行数据存储方式”的变化 117

7.2.2 update产生的旧版本数据及版本信息 119

7.2.3 delete操作产生的旧版本数据及版本信息数据 122

7.3开启allow_ snapshot isolation参数产生的多版本数据 127

7.3.1多版本数据产生的过程 127

7.3.2 allow_ snapshot isolation参数开启前后“行记录的存储方式” 128

7.3.3 snapshot隔离级别下产生的多版本数据 130

7.3.4开启allow_snapshot_isolation参数是否解决读等待写 133

第3篇 空间管理与数据校验 136

第8章SQL Server空间管理数据页 136

8.1空间管理相关数据页 136

8.2可用区跟踪——GAM及SGAM数据页 137

8.2.1 GAM和SGAM数据页的组合值 137

8.2.2查找混合区可用数据页的流程图 138

8.2.3新建数据文件的GAM与SGAM位图数据 138

8.2.4分配一个混合区后的GAM与SGAM位图数据 141

8.2.5分配多个混合区及多个专用区后的GAM与SGAM位图数据 142

8.2.6禁止单数据页分配 143

8.3数据页可用空间跟踪——PFS数据页 144

8.3.1 PFS如何跟踪数据页可用空间 144

8.3.2新数据库文件的PFS数据 145

8.3.3添加堆表数据对PFS的影响 147

8.3.4删除堆表数据对PFS的影响 148

8.4差异备份内容跟踪——DCM数据页 149

8.4.1 DCM原理分析实例 149

8.4.2全库备份后的DCM数据 150

8.4.3全库备份后数据修改导致的DCM数据变化 151

8.4.4全库备份后的DCM数据重置 153

8.5大容量操作改变的区跟踪——BCM数据页 153

8.5.1 bcp命令实例分析BCM原理 153

8.5.2全库备份或日志备份后的BCM初始数据 155

8.5.3大容量操作后的BCM数据 155

8.5.4执行事务日志备份的BCM数据重置 157

8.6实体空间跟踪——IAM数据页 158

8.6.1分配单元(allocation unit)及IAM链 158

8.6.2 IAM数据页的内容 159

8.6.3利用IAM数据页检索实体数据的过程 163

8.6.4执行全表扫描的步骤 164

8.6.5对表添加记录时的步骤 165

第9章 堆表数据删除或修改后的空间重用 166

9.1 delete操作引起的数据页内容变化 166

9.1.1 delete操作引起数据页内容的5种变化 166

9.1.2展示数据变化的实例 166

9.2删除数据所占空间的重用 170

9.2.1空闲空间足够容纳新记录的情形 170

9.2.2数据页中数据的重新组织 174

9.3修改数据后的空间重用 177

9.3.1定长记录 178

9.3.2记录长度未增长 180

9.3.3记录长度增长可存储在页尾空闲空间 182

9.3.4记录长度增长可存储在重组后的页尾空闲空间 184

9.3.5记录长度增长不能存储在重组后的页尾空闲空间 187

9.4未附加条件的delete、truncate和drop table操作 190

9.4.1准备测试数据 191

9.4.2添加测试数据后的空间管理数据页初始状态 192

9.4.3 delete操作产生的重做数据量 194

9.4.4 delete操作引起的GAM、PFS和IAM数据变化 195

9.4.5 truncate操作产生的重做数据量 196

9.4.6 truncate操作引起的GAM、PFS和IAM数据变化 196

9.5删除操作导致的锁 197

9.5.1 delete操作导致的锁 197

9.5.2 truncate操作导致的锁 199

9.5.3 drop table操作导致的锁 201

第10章 数据页I/O校验和与残缺页保护 203

10.1与数据页I/O保护机制有关的页头数据 203

10.2设置数据页I/O保护机制 203

10.3校验和机制 204

10.3.1校验和原理 204

10.3.2模拟I/O错误查看校验和保护的效果 207

10.3.3 m_flagBits的作用 208

10.4残缺页检测机制 210

10.4.1残缺页检测实现原理 210

10.4.2准备测试数据 211

10.4.3验证m tomBits的构造过程 214

10.4.4模拟数据页I/O错误查看残缺页检测效果 216

10.4.5 m_flagBits的作用 217

第4篇 重做日志原理 219

第11章 重做日志的VLF与LSN 219

11.1 VLF及其状态 219

11.1.1日志记录 219

11.1.2 VLF的状态 220

11.1.3查看VLF信息 220

11.1.4重做日志文件的VLF个数 222

11.2数据库的完整日志序列维护状态 226

11.3 VLF的循环使用 227

11.3.1非完整日志维护状态 227

11.3.2完整日志维护状态 229

11.4 LSN日志记录属性 232

11.4.1日志段 232

11.4.2日志记录的LSN 233

11.4.3日志记录的定位步骤 234

11.4.4日志记录定位示例 234

第12章checkpoint与实例恢复 237

12.1 checkpoint的功能 237

12.1.1 checkpoint对数据页的影响 238

12.1.2 checkpoint操作产生的日志记录及MinLSN 240

12.1.3 checkpoint操作后的日志记录截断 244

12.2实例恢复过程 245

12.2.1分析 246

12.2.2 redo过程 246

12.2.3 undo过程 246

第13章 常用SQL语句产生的重做数据 247

13.1查看日志记录的工具:fn_dblog函数 247

13.1.1 fn_dblog函数的主要列含义 248

13.1.2日志记录中的主要操作与对象类型的含义 248

13.1.3得到一个操作产生的重做数据 249

13.1.4得到一个操作产生的重做数据量 250

13.2事务处理命令产生的重做数据 251

13.2.1 begin transaction命令 251

13.2.2 commit命令 252

13.2.3 rollback命令 252

13.3 DDL语句产生的重做数据 253

13.3.1 create table语句 254

13.3.2 drop table语句 255

13.3.3 truncate table语句 256

13.4 DML语句产生的重做数据 257

13.4.1 insert语句 257

13.4.2 delete语句 260

13.4.3 update语句 261

第14章 大容量操作产生的重做数据 264

14.1数据库恢复模式对大容量操作产生重做数据的影响 264

14.2 select into命令产生的重做数据 265

14.2.1完整恢复模式 265

14.2.2大容量日志恢复模式 268

14.3 create index命令产生的重做数据 270

14.3.1完整恢复模式 270

14.3.2大容量日志恢复模式 272

14.4 insert into select命令在大容量日志恢复模式下产生的重做数据 273

14.5 bcp命令在大容量日志恢复模式下产生的重做数据 276

14.6 bulk insert命令在大容量日志恢复模式下产生的重做数据 278

14.7表上建有索引的各种情况 279

第5篇 执行计划重用与重编译 282

第15章SQL查询执行计划的重用与重编译 282

15.1执行计划 282

15.1.1创建执行计划的过程 282

15.1.2显示查询的执行计划 283

15.1.3执行计划的plan handle与sql handle属性 286

15.1.4 dbcc freeproccache命令清空计划缓存 286

15.1.5查询计划缓存中的执行计划信息 286

15.2 SQL查询执行计划的重用 289

15.2.1执行计划重用实例 289

15.2.2执行计划能够重用的基本要求 291

15.3参数化处理 292

15.3.1简单参数化处理 292

15.3.2强制参数化处理 294

15.4低重复率SQL命令的处理 295

15.5 trivial计划 296

15.6执行计划的重建与重编译 299

15.6.1服务器环境参数的改变导致执行计划重建 301

15.6.2架构数据的改变导致执行计划重编译 303

15.6.3统计信息的改变导致执行计划重编译 305

15.6.4使用recompile选项强制执行计划重建 306

第16章 批处理执行计划的重用与重编译 308

16.1批处理执行计划的特点 308

16.2批处理的执行计划 308

16.3批处理的重编译 309

16.4批处理执行计划的重建 313

第17章 存储过程执行计划的重用与重编译 315

17.1创建Profiler跟踪模板 315

17.2执行计划重用示例 316

17.2.1使用系统视图验证执行计划重用 317

17.2.2使用Profiler跟踪执行计划重用 317

17.2.3 SP:CacheMiss的含义 318

17.3引起执行计划重建或重编译的各种情况 319

17.3.1服务器环境参数改变对执行计划的影响 319

17.3.2引用对象结构的改变对执行计划的影响 322

17.3.3引用对象的统计信息改变对执行计划的影响 324

17.4强制执行计划重编译或重建 325

17.4.1执行存储过程时附加recompile选项 325

17.4.2创建存储过程时附加recompile选项 327

17.4.3对存储过程或其引用对象执行sp_ recompile 328

17.4.4对存储过程定义中的语句使用option recompile选项 333

第6篇 锁的原理 335

第18章锁 335

18.1锁粒度与锁模式简介 335

18.2查看锁的信息 337

18.2.1使用sys.dm_ tran_locks视图 337

18.2.2使用SQL Profiler工具 338

18.3常见资源附加的锁 339

18.3.1数据库锁 339

18.3.2区锁 341

18.3.3表锁 343

18.3.4表锁:意向共享模式(IS) 343

18.3.5表锁:共享模式(S) 344

18.3.6表锁:意向排他模式(IX) 345

18.3.7表锁:排他模式(X) 346

18.3.8表锁:Sch-S与Sch-M锁 347

18.3.9页锁与行锁 348

18.3.10索引键锁与键范围锁 348

18.4多个锁的复合 349

18.4.1锁的覆盖 349

18.4.2共享意向排他(SIX) 350

18.4.3共享意向更新(SIU) 350

18.4.4更新意向排他(UIX) 351

18.5锁的升级 352

18.6 read committed隔离级别下的锁 353

18.6.1未使用索引时的select操作 353

18.6.2使用索引时的select操作 356

18.6.3未使用索引时的update操作 357

18.6.4没有其他连接时修改表操作 357

18.6.5启动连接2时修改表操作 359

18.6.6使用索引时的update操作 360

18.7 serializable隔离级别下的键范围锁 362

18.7.1键范围锁简介 363

18.7.2键范围锁的锁定范围 363

18.7.3查询操作对索引附加的RangeS-S锁 364

18.7.4查询条件为等式且目标记录存在的情形 365

18.7.5查询条件为等式但目标记录不存在的情形 368

18.7.6查询条件为不等式且目标记录存在的情况 369

18.7.7查询条件为不等式且目标记录不存在的情况 370

18.7.8 update操作对索引附加的RangeS-U锁 371

18.7.9 update及delete操作对索引附加的RangeX-X锁 372

18.8 repeatable read隔离级别下的锁 373

18.8.1查询操作未使用索引的情形 373

18.8.2查询操作使用索引的情形 375

18.9查询操作不使用锁的几种情形 376

18.9.1 read uncommitted与锁 376

18.9.2数据库开启read_committed_snapshot参数 377

18.9.3 snapshot隔离级别 378

第19章 游标 379

19.1验证游标与一般查询的效率差别 379

19.2游标的分类 380

19.2.1 STATIC游标特征列举 381

19.2.2 KEYSET游标特征列举 384

19.2.3 DYNAMIC游标特征列举 386

19.2.4 FAST FORWARD游标特征列举 387

第7篇 备份原理 390

第20章 备份原理 390

20.1全库备份 390

20.1.1进行全库备份的步骤 390

20.1.2全库备份过程图示 391

20.1.3全库备份操作产生的备份集 391

20.1.4全库备份注意事项 392

20.1.5全库备份集的几个LSN属性 392

20.1.6如何确定全库备份集的first_lsn及last_lsn 392

20.2事务日志备份 396

20.2.1事务日志备份操作 396

20.2.2事务日志备份实例 396

20.2.3大容量日志模式下的事务日志备份 400

20.2.4事务日志备份对重做数据的影响 401

20.3差异备份 403

20.3.1查看差异备份的步骤 403

20.3.2通过查看提示信息简单说明差异备份 403

相关图书
作者其它书籍
返回顶部