SQL Server 2008存储结构之GAM、SGAM

FactoryTool量产神器实战:5分钟搞定多块RK3568板卡并行烧录 本文详细介绍了使用瑞芯微FactoryTool对多块RK3568板卡进行高效并行烧录的实战指南。文章从硬件连接、驱动配置、软件操作到排错技巧,提供了一套完整的量产解决方案,重点阐述了如何利用该工具在5分钟内完成多设备固件烧录,并确保eMMC存储的写入稳定性与效率,大幅提升生产线吞吐量。 阅读详情


    【IT168专稿】谈到GAM和SGAM,我们不得不从数据库的页和区说起。一个数据库由用户定义的空间构成,这些空间用来永久存储用户对象,例如数据库管理信息、表和索引。这些空间被分配在一个或多个操作系统文件中。

  当我们创建一个数据库的时候,例如以缺省的方式CREATE DATABASE TESTDB,SQLServer自动帮我们创建好如下两个数据库文件。


 

  这两个数据文件是实实在在的操作系统文件,其中一个是叫行数据文件,用来存储数据库的各种对象,另外一个是日志文件,从来记录数据变化的过程。

  从逻辑角度而言,数据库的最小存储单位为页即8kb。

  数据库被分成若干逻辑页面(每个页面8KB),并且在每个文件中,所有页面都被连续地从0到x编号,其中x是由文件的大小决定的。我们可以通过指定一个数据库ID、一个文件ID、一个页码来引用任何一个数据页。每个数据页则用来存储表和索引,以及相关的数据库管理信息。

  我们顺着上面数据文件的路径可以找到该文件,观察一下新建的数据文件的大小为:

  2.18 MB (2,293,760 字节)=2,293,760b/8kb=280个页面=35个区

  数据库进行空间管理的最小单位为区(extents)。

  一个区由8个逻辑上连续的页面组成(64KB的空间)。为了能够更有效地分配空间,SQL Server 2008不会为少量的数据向数据表分配整区的空间。SQL Server 2008有两种类型的区。

  统一类型的区 这些区为单个对象所有,区中所有的8个数据页只能被所属对象使用。

  混合类型的区 这些区能为最多8个对象共享。

  SQL Server为新的表或索引从混合类型的区中分配页面。当该表或索引增长到8个页面时,以后所有的分配都使用统一类型的区。

  当一张表或一个索引需要更多的空间时,SQL Server需要找到能够用来分配的空间。如果该表或索引整体仍然少于8个页面,SQL Server必须找到能够用来分配的混合类型区构成的空间。如果表或索引有8个页面或更大,SQL Server必须找到一个自由的统一类型的区。

  SQL Server使用两种特殊类型的页面来记录哪些区已经被分配出去了,哪些类型(混合类型或统一类型)的区可供使用:

  全局分配映射(Global Allocation Map,GAM)页面 这些页面记录了哪些区已经被分配并用作何种用途。一个GAM页面在它所覆盖空间里针对每一个区都有一个数据位。如果数据位为0,那么对应的区正在使用;如果该数据位为1,那么该区为自由区。一个GAM页面除了页面头部和其他一些需要记入的开销大概有8 000字节或者说64 000位空间可用,所以每个GAM页面可以覆盖64 000个区,也就是大约4GB的数据。这意味着一个文件的每4GB空间对应一个GAM页面。

  共享全局分配映射(Shared Global Allocation Map,SGAM)页面 这些页面记录了哪些区当前被用作混合类型的区,并且这些区需含有至少一个未使用的页面。就像一个GAM页面,每一个SGAM页面覆盖了大约64 000个区,也就是大约4GB的数据。一个SGAM页面在它所覆盖空间里针对每一个区都有一个数据位。如果数据位为1,那么对应的被使用的区为混合类型,并且该区有一些自由页面;如果数据位为0,那么对应的区不是一个混合类型的区,或者虽然是一个混合类型的区,但是所有的页面都已被使用了。

  表4-2显示了基于每一个区当前的使用情况,在GAM和SGAM中该区所对应的比特位模式。

区的当前使用情况GAM比特位设置SGAM比特位设置
自由,未使用10
统一类型或已全部使用的混合区00
含有自由页面的混合区01

  如果SQL Server需要找到一个新的完全没有使用的区,那么它可以使用任何一个在GAM页面中对应的比特位值为1的区。如果SQL Server需要找到一个有着可用空间(有一个或多个自由页面)的混合类型的区,那么它可以寻找一个对应的GAM中的值为0、SGAM中的值为1的区。如果不存在有可用空间的混合类型的区,SQL Server会使用GAM页面来寻找一个全新的区并将其分配为混合类型的区,然后使用该区中的一页。如果根本没有自由区,那么这个文件已经满了。

第0页第1页第2页第3页第4页第5页第6页第7页
m_type=15m_type=11m_type=8m_type=9m_type=0m_type=0m_type=16m_type=17
头文件页PFS页GAM页SGAM页保留页保留页DCM页BCM页

  SQL Server能够迅速地锁定一个文件中的GAM页面,因为它总是位于任何数据库文件的第三页上(页码为2)。SGAM页面是在第四页上(页码为3)。下一个GAM页面出现在第一个GAM页面(页码为2)以后的每511 230个页面中,并且下一个SGAM页面出现在第一个SGAM页面(页码为3)以后的每511 230个页面中。每一个数据库文件的页码为0的页面是文件头页面,并且每个文件仅有一页。页码0是头文件页,页码1是页面自由空间页(Page Free Space,PFS)。

  在SQLServer2008的每一个数据库中的前八页顺序都是固定的。

  除了第9页为数据库的BOOT页以外,从第8页到第173页为SQLServer2008内部系统表的相关存储信息,然后从第174页到第279页为未分配页面。因为第一页从0开始,所以刚好280页,即和我们看到的数据库数据文件的大小完全相等。

第8页第8页第8页第N页第173页第279页
m_type=1m_type=13m_type in (1,2,10)N/A
Data页Boot页主要为内部系统表相关信息未分配

  以下截图是通过SQLServer2008的Internals Viewer插件看到的整体页面结构,该插件是从http://www.SQLInernalsViewer.com网站下载的,分为不同的.net版本。

  备注:TESTDB为新创建的空数据库,没有任何用户自定义对象,直到有建表脚本为止;


 


       关于数据库页类型如下所示:

类型页面类型名称页面类型描述
1Data page堆表和聚集索引的叶子节点数据
2Index page聚集索引的非叶子节点和非聚集索引的所有索引记录
3Text mixed pageA text page that holds small chunks of LOB values plus internal parts of text tree. These can be shared between LOB values in the same partition of an index or heap.
4Text tree pageA text page that holds large chunks of LOB values from a single column value.
7Sort page排序时所用到的临时页,排序中间操作存储数据用的。
8GAM page全局分配映射(Global Allocation Map,GAM)页面 这些页面记录了哪些区已经被分配并用作何种用途。
9SGAM page共享全局分配映射(Shared Global Allocation Map,GAM)页面 这些页面记录了哪些区当前被用作混合类型的区,并且这些区需含有至少一个未使用的页面。
10IAM page.有关每个分配单元中表或索引所使用的区的信息
11PFS page.有关页分配和页的可用空间的信息
13boot page.记录了关于数据库的信息,仅存于每个数据库的第9页
15file header page记录了关于数据库文件的信息,存于每个数据库文件的第0页
16DCM page记录自从上次全备以来的数据改变的页面,以备差异备份
17BCM page有关每个分配单元中自最后一条 BACKUP LOG 语句之后的大容量操作所修改的区的信息

  实际上SQLServer还包括一些未公开的页面类型,例如type 19,type 14等等。

  本章我们主要介绍GAM页和SGAM页,其他页面类型会稍后介绍。

  那么如何查看页面信息呢,从SQLServer2000起便开始提供了一个读取数据页结构的命令DBCC Page。该命令为非文档化的命令,具体如下:

  DBCC Page ({dbid|dbname},filenum,pagenum[,printopt])

  具体参数描述如下:

  dbid               包含页面的数据库ID

  dbname       包含页面的数据库的名称

  filenum         包含页面的文件编号

  pagenum      文件内的页面

  printopt            可选的输出选项;选用其中一个值:

                            0:默认值,输出缓冲区的标题和页面标题

                           1:输出缓冲区的标题、页面标题(分别输出每一行),以及行偏移量表

                           2:输出缓冲区的标题、页面标题(整体输出页面),以及行偏移量表

                           3:输出缓冲区的标题、页面标题(分别输出每一行),以及行偏移量表;每一行后跟分别列出的它的列值

  如果要想看到这些输出的结果,还需要设置DBCC TRACEON(3604)。

  如前文所述,GAM页一定存在于该数据库的第二个页面,SGAM页则一定存在于该数据库的第三个页面;而每一个数据库都会存在文件编号为1的数据库文件,所以我们执行以下命令即可。

DBCC TRACEON(3604)
DBCC PAGE(TESTDB,1,2,1)  —查看GAM页信息
DBCC PAGE(TESTDB,1,3,1)  —查看SGAM页信息
DBCC PAGE(TESTDB,1,2,2)  —查看GAM页信息和整体输出页面
DBCC PAGE(TESTDB,1,3,2)  —查看SGAM页信息和整体输出页面
DBCC PAGE(TESTDB,1,2,3)  —查看GAM页信息及相应列值
DBCC PAGE(TESTDB,1,3,3)  —查看SGAM页信息及相应列值
DBCC PAGE(TESTDB,1,2,1) WITH TABLERESULTS  —以表格形式查看SGAM页信息及相应列值
DBCC PAGE(TESTDB,1,3,1) WITH TABLERESULTS  —以表格形式查看SGAM页信息及相应列值

 

  我们可以看到一个完整的页面分为四个部分;BUFFER、PAGE HEADER、DATA和OFFSET TABLE。

  让我们首先从GAM页开始看起:

  BUFFER部分:

  显示给定页面的缓冲信息,是内存中的结构,用于管理页面,该信息仅当该页面处于内存时才有意义。关于这个部分我们知之甚少,基本上无法找到相关材料。

BUF @0x03585CD8每一次清空缓存再次查询,地址都会改变
bpage = 0x060B4000每一次清空缓存再次查询,地址都会改变
bhash = 0x00000000相对不变
bpageno = (1:2)当前页面地址
bdbid = 8sys.databases.database_id
breferences = 1每一次清空缓存再次查询,地址都会改变
bUse1 = 41490每一次清空缓存再次查询,地址都会改变
bstat = 0xc00009相对不变
blog = 0x59ca2159相对不变
bnext = 0x00000000相对不变
  

  PAGE HEADER部分:

  PAGE HEADER部分显示的是该页面上的所有报头字段的数据


 

  PAGE HEADER这部分内容只有通过DBCC PAGE(TESTDB,1,2,2)即整体输出页面才能够展现;通过与上面表格的对照,我们勉强能识别一些相关存储信息;当这部分缺乏官方文档的支持,为了避免无谓的猜测,所以暂时就不做深入探讨了。


 

  DATA 部分


 

   DATA部分一般分为若干插槽号(Slot),如果是数据页或索引页的话,可以理解为一行记录,SQLServer通过文件号+页面号+插槽号用来唯一标识表中的每一条记录。但在GAM页中我们可以把Slot 0理解为GAM页的保留页,共计94个字节。

  从第194个字节开始(页面总是从第0个字节开始的),到第196个字节,这三个字节代表已分配的分区的情况。即0000C0。

  我们再来看一下DBCC PAGE(TESTDB,1,2,3)的执行结果。

3
 

  上面显示从第1页到第168页已分配,而第176页到272页未分配,和DBCC PAGE(TESTDB,1,2,2)显示的194个页面似乎有些矛盾,实际上是不矛盾的。如前文所述,GAM对未使用的分区标识为0,而对已分配的分区标识为1

  1个分区=64页,因为前128个页面均已分配,所以前两个字节为00 00

  从第128个页面起到第175个页面也均已分配,实际上为6个区为0也就是说连续6个bit为0,一个字节为8个bit,最后两个bit为11,所以该字节为0000 0011,在此需要反转一下相关二进制位;反转之后为1100 0000即为C0。

  最后让我们用Internals Viewer插件看一下GAM页的全貌吧。


 


  SGAM页面

PAGE: (1:3)

BUFFER:
BUF @0x0358A7F4
bpage = 0x062AE000             bhash = 0x00000000              bpageno = (1:3)
bdbid = 8                      breferences = 3                       bUse1 = 14428
bstat = 0xc00009               blog = 0x21212159              bnext = 0x00000000
                                                              
PAGE HEADER:                                                  
Page @0x062AE000                                              
m_pageId = (1:3)               m_headerVersion = 1             m_type = 9
m_typeFlagBits = 0x0           m_level = 0                     m_flagBits = 0x200
m_objId (AllocUnitId.idObj)=99 m_indexId (AllocUnitId.idInd)=0 Metadata: AllocUnitId=6488064
Metadata: PartitionId = 0      Metadata: IndexId = 0           Metadata: ObjectId = 99
m_prevPage = (0:0)             m_nextPage = (0:0)              pminlen = 90
m_slotCnt = 2                  m_freeCnt = 6                   m_freeData = 8182
m_reservedCnt = 0              m_lsn = (18:435:5)              m_xactReserved = 0
m_xdesId = (0:0)               m_ghostRecCnt = 0               m_tornBits = 177043542
Allocation Status              
GAM (1:2)=ALLOCATED            SGAM (1:3)=NOT ALLOCATED          PFS(1:1)=0x44 ALLOCATED 100_PCT_FULL
DIFF (1:6) = CHANGED           ML (1:7) = NOT MIN_LOGGED        

DATA:
Slot 0, Offset 0x60, Length 94, DumpStyle BYTE
Record Type = PRIMARY_RECORD         Record Attributes =                  
Memory Dump @0x4F32C060
00000000:   00005e00 00000000 00000000 00000000 ?..^.............        
00000010:   00000000 00000000 00000000 00000000 ?................        
00000020:   00000000 00000000 00000000 00000000 ?................        
00000030:   00000000 00000000 00000000 00000000 ?................        
00000040:   00000000 00000000 00000000 00000000 ?................        
00000050:   00000000 00000000 00000000 0000??????..............          

Slot 1, Offset 0xbe, Length 7992, DumpStyle BYTE
Record Type = PRIMARY_RECORD         Record Attributes =                  
Memory Dump @0x4F32C0BE
00000000:   0000381f 20ee2000 00000000 00000000 ?..8. . .........        
00000010:   00000000 00000000 00000000 00000000 ?................
00001F30:   00000000 00000000 ???????????????????........          

 
   以下为DBCC PAGE(TESTDB,1,3,3)得到的相关信息,有兴趣的可以和20ee20做一下对比。

(1:0)        - (1:32)       = NOT ALLOCATED                              
(1:40)       -              =     ALLOCATED                              
(1:48)       - (1:64)       = NOT ALLOCATED                              
(1:72)       - (1:88)       =     ALLOCATED                              
(1:96)       -              = NOT ALLOCATED                              
(1:104)      - (1:120)      =     ALLOCATED                              
(1:128)      - (1:160)      = NOT ALLOCATED                              
(1:168)      -              =     ALLOCATED                              
(1:176)      - (1:272)      = NOT ALLOCATED

 
  最后让我们用Internals Viewer插件看一下SGAM页的全貌吧。


 

  总结一下,关于GAM和SGAM页比较困难的地方:

  1、 关于GAM和SGAM页中的BUFFER信息基本无法理解,也找不到相关材料。

  2、 PAGE HEADER的部分信息和Slot 0中的一部分信息,也无法找到相关材料。

  3、 SGAM页中的NOT ALLOCATED实际上是统一类型区或者已使用完的混合类型的区,而ALLOCATED实际上为含有自由页面的混合区。

  4、 GAM页中0代表已分配,1代表自由区;和一般的标志位的含义刚好相反。

  5、 GAM和SGAM实际上只分配了280个页面,即35个区;显示出来的数据内容虽然很多,但后面的分区信息实际上是不存在的。

  6、 GAM和SGAM通过DBCC的printopt为3的属性显示出来的页面分配信息看似是断号的。

  7、 GAM和SGAM的区信息的字节是通过二级制反转得到的。

  GAM和SGAM页的总的大小为8192个字节;文件头为96个字节,slot 0为94个字节,slot 1的头部的系统信息为4个字节,尾部的系统信息为10个字节,所以有效存储应为7988个字节,63904个区,511230个页;事实上当数据文件超过约4G的时候,我们将能在第511232页、 第511233页分别找到其对应的GAM、SGAM页面。


【CANdelaStudio编辑CDD】-21.2-创建OBD诊断$03,$07,$0A和$04服务以及OBD DTC 案例背景(共11页精讲):创建OBD诊断$03,$07,$0A和$04服务;以及OBD DTC。 在《【ISO15031_OBD诊断】-3.1-$03服务Request emission-related diagnostic trouble codes理论部分https://blog.youkuaiyun.com/qfmzhu/article/details/122157513》, 《【ISO15031_OBD诊断】-7.1-$07服务Request emission-related diagnostic trou 阅读详情

相关推荐

2024最新实战:用1Panel面板+Docker快速部署Frps服务端(含Nginx配置模板)

本文详细介绍了2024年企业级内网穿透方案,通过1Panel面板和Docker技术快速部署Frps服务端,包含Nginx反向代理配置模板。从服务器选型、系统准备到安全加固,提供全栈实战指南,帮助企业和开发者高效实现内网穿透需求。

weixin_27966471的博客 419

sql server 2000 扩展盘区分配错误 error:8905 的问题解决

在用dbcc checkdb 对数据库进行检查的时候,在数据结果的头部报下面的错误:扩展盘区 (1:9508664) (属于数据库 ID 7 )在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 消息 8905 ,级别 16 ,状态 1 ,服务器 SERVER ,行 1 扩展盘区 (1:9508672) (属于数据库 ID 7 )在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 消息 8905 ,级别 16 ,

雨翰数据库修复 9953

双目相机立体匹配算法概述(含Python代码)

立体匹配任务是计算机视觉中的一个重要问题,旨在从一对具有相同场景的图像中估计每个像素的视差(disparity)。本文对现有的传统算法和深度学习算法进行了综述,以便于各位选择合适的立体匹配算法用于深度估计或三维建模。

m0_59257547的博客 8291

SQL Server 2008存储结构——GAM和SGAM、PFS结构、IAM结构、DCM&BCM

SQL Server 2008连载之存储结构——GAM和SGAM 谈到GAM和SGAM,我们不得不从数据库的页和区说起。   一个数据库由用户定义的空间构成,这些空间用来永久存储用户对象,例如数据库管理信息、表和索引。这些空间被分配在一个或多个操作系统文件中。 当我们创建一个数据库的时候,例如以缺省的方式CREATE DATABASE TESTDB,SQLServer自动帮我们创建好如下两

dz45693的专栏 4804

Agent + 监控平台:自动诊断告警根因

根因分析、智能监控、AI Agent、告警风暴、异常检测、可观测性、故障诊断在现代分布式系统中,快速定位和解决问题是维持系统稳定性的关键。传统的监控系统虽然能够生成大量告警,但往往缺乏对告警根因的自动诊断能力,导致运维团队在告警风暴中难以快速定位问题。本文深入探讨了将AI Agent技术与监控平台结合,实现告警根因自动诊断的技术架构、理论基础和实现方法。我们将从第一性原理出发,分析根因诊断问题的本质,介绍基于Agent的智能监控系统设计,并通过实际案例展示其应用价值。文章同时涵盖了从理论到实践的全链路,包括

AIGC应用创新大全的博客 302

《大明王朝1566》中,朝廷财政危机无法解决的根源分析

财政困局中的财富最终流向三重黑洞:​皇室挥霍​(如嘉靖炼丹修殿)、特权阶层贪腐​(严党年入百万两盐税)、制度性损耗​(宗室供养、低效官僚)。更深层的“钱”其实是被禁锢在道德化治理的牢笼中——当国家用“黄河长江皆可为用”的权术思维替代制度性改革时,财政危机便成为帝制王朝无法逃脱的宿命。

为了小家奋斗 1966

SQL Server2000中的IAM链

SQL Server2000中的IAM链

misterliwei的专栏 2066

C++中为什么要引入引用变量?

C++引用机制的设计哲学在于平衡性能与安全性。它解决了指针的三个痛点:语法噪音、空指针风险和语义模糊,同时保持了指针的效率优势。引用必须绑定有效对象且不可重绑定的特性增强了安全性,其值语义语法更直观。尤其在运算符重载和const引用场景中,引用展现了不可替代的优势。本质上,引用是编译器优化的指针实现,体现了C++"零开销抽象"的核心思想——既保持底层性能,又提供高级抽象。这种设计允许开发者根据场景灵活选择指针或引用,反映了C++多范式共存的语言智慧。

教学 & 技术专栏 173

1个损坏的数据库情况

服务器: 消息 8905,级别 16,状态 1,行 1 扩展盘区 (1:36808)(属于数据库 ID 14)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8929,级别 16,状态 1,行 1 对象 ID 2: 在文本 ID 9785573376 中发现错误,该文本的所有者是由 RID = (1:2109:0) id = 1595152728 and indid = 1 标识的数据记录。 服务器: 消息 8961,级别 16,状态 1,行 1 表错误:

1231

【tensorrt】——深入解析TypeError: pybind11::init()报错:CUDA版本冲突与解决方案

本文深入解析了TensorRT中常见的TypeError: pybind11::init()报错问题,重点探讨了CUDA版本冲突的根源与解决方案。通过实际案例展示了PyTorch与TensorRT的版本兼容性问题诊断方法,并提供了conda环境管理、环境变量配置等实用修复技巧,帮助开发者有效解决CUDA初始化失败问题。

ggg99的专栏 270

YOLO12涨点改进| 损失函数改进篇 |AAAI 2025| 一种小目标检测SDLoss损失函数,解决现有损失函数对不同目标尺度敏感度不足的局限,提高了网络检测不同尺度目标的敏感能力,助力高效涨点

本文提出了一种改进的小目标检测方法SDLoss,通过动态调整尺度损失与位置损失的权重,优化了YOLOv12模型的性能。针对红外小目标检测中存在的两个主要问题:1)标准卷积难以捕捉目标的高斯空间分布特性;2)现有损失函数对不同尺度目标的敏感度不足,研究团队开发了Pinwheel-shaped卷积(PConv)和Scale-based Dynamic损失函数(SDLoss)。PConv通过不对称卷积核设计显著提升感受野,SDLoss则根据目标大小动态平衡尺度与位置损失的影响。

Ai缝合怪、助力小伙伴高效发论文 235

《Microsoft Sql server 2008 Internals》读书笔记--第十一章DBCC Internals(4)

《Microsoft Sql server 2008 Internals》读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397.html/rss 《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internal》读书笔记--目录索...

dfdfadsf3443的博客 221

PyTorch深度学习实战(39)——少样本学习(Few-shot Learning)

小样本学习 (Few-shot Learning) 旨在解决在训练集中只有很少样本的情况下进行分类和推理的问题。在小样本学习中,我们希望通过利用已有的少量样本和先验知识来进行泛化,以便在面对新的、未见过的类别时能够做出准确的预测。这就要求模型能够从有限的训练样本中提取出有用的信息,并能够将这些信息应用到新类别的样本中去。在本节中,将介绍孪生、原型和关系网络的原理,并使用 PyTorch 实现孪生网络。

盼小辉丶的博客 1万+

[转]SQL Server 2008存储结构之GAM、SGAM

[转]SQL Server 2008存储结构之GAM、SGAM 【IT168专稿】谈到GAM和SGAM,我们不得不从数据库的页和区说起。一个数据库由用户定义的空间构成,这些空间用来永久存储用户对象,例如数据库管理信息、表和索引。这些空间被分配在一个或多个操作系统文件中。   当我们创建一个数据库的时候,例如以缺省的方式CREATE DATAB...

weixin_30625691的博客 74

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

[转帖]真TM长的:SQL Server 2008存储结构——GAM和SGAM、PFS结构、IAM结构、DCM&BCM

谈到GAM和SGAM,我们不得不从数据库的页和区说起。 https://blog.youkuaiyun.com/snowfoxmonitor/article/details/49991015 一个数据库由用户定义的空间构成,这些空间用来永久存储用户对象,例如数据库管理信息、表和索引。这些空间被分配在一个或多个操作系统文件中。 当我们创建一个数据库的时候,例如以缺省的方式CREATE DATABASE ...

weixin_30577801的博客 240

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

查看SQLSERVER内部数据页面的小插件Internals Viewer

查看SQLSERVER内部数据页面的小插件Internals Viewer 感觉internals viewer这个名字起得很好,内部查看。 这个小工具是我之前看园子里的某大侠转载的文章是看到的 文章地址:SQL Server2008存储结构之堆表、行溢出 http://www.cnblogs.com/trams/archive/2010/09/11/1823727.html 这几天研究...

weixin_33733810的博客 91

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是:关于FileGroup如果你的系统是用Raid设备直接存放data文件,则不需要再借助FileGroup,因为FileGroup

邀月周记 3275

SQL Server 索引(一)数据结构和存储结构

  本文关注以下方面(本文所有的讨论基于SQL Server数据库): 索引的分类; 索引的结构; 索引的存储 一、索引定义分类   让我们先来回答几个问题:   什么是索引? 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 举个例子,索引就像我们查字典时用的按拼音或笔画或偏旁部首 有哪些索引? 从物理结...

weixin_30293135的博客 519
上一篇: 非托管c++调用托管C++写的程序集 实现非托管C++对.NET库的访问
下一篇: SQL Server 2005 中的分区表和索引
wangjunhe
博客等级 码龄20年 31粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值