《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(1)

从零开始:如何用PSINS工具箱构建你的第一个IMU误差模型 本文详细介绍了如何使用严恭敏教授开发的PSINS工具箱构建IMU误差模型,涵盖从基础参数设置到高级误差建模的全过程。通过imuerrset函数配置陀螺零偏、随机游走等核心参数,并结合实战案例展示消费级MEMS器件的误差建模方法,帮助用户提升惯性导航系统的精度与可靠性。 阅读详情
《Microsoft Sql server 2008 Internals》索引目录:

《Microsoft Sql server 2008 Internals》读书笔记--目录索引

第五章《Table》和第六章《Indexes:Internals and Management》我们主要讨论了“规则行”在表和索引中的存储机制,第五章中我们了解到规则行是以“固定变量”的格式存储,SQL Server提供了另外一种格式存储数据,即“列描述”(Column Descriptor)。它能存储一些特殊的值(包括固定变量和不能适应常规8-KB大小页面的CD格式的值),在这章中。我们将讨论一些超过正常数据行 大小限制的数据,它们被存储作为"行溢出"或Large Object(LOB)数据。此外,SQL Server 2008还提供了一种常规列的复杂存储列,即稀疏列(Sparse Columns),和新的CD格式(compressed data)。另外,还将讨论文件流访问,即SQL Server访问操作系统的文件。最后将讨论SQL Server分离数据到分区的操作。

 ■Large Object Storage

根据第五章的知识,我们了解到8k=8192字节中,只有8060字节是用于存储数据,如果一个表的行长度超过8060,将会收到一条提示:

你可以看到8067中有7个字节用于存储行自身的开销。其实还有两个字节用于存储行偏移,但没有包含在这7个字节,详见前文第五章部分。

  ■限制长度的大对象数据(行溢出数据Row-Overflow Data)

 超过8060字节的行限制的一个方法是使用可变长度列。因为SQL Server 2005/2008会使用“行溢出”页面来存储这些列,只要固定长度列不超过限制即可。可变长度列包括 varbonary,varchar,nvarchar,sqlvariant等,还可以是在CLR中用户定义的数据类型。

如下语句:


事实上。这个语句在SQL Server 7.0出错而不会被执行,SQL Server 2000中会执行,但会收到一个警告,超过8060的行可能会被截断。而在SQL Server 2005/2008中,你不但可以创建表,而且可以插入超过8060字节的数据。如下:

 

 我们来确认一下SQL Server是如何存储行溢出数据的:

 
结果中可以看出,这一行中有两个页用来存放规则“行内”数据,两个页来存放“行溢出”数据,此外,我们还可以使用DBCC IND命令来查看更详细的四个页的存储,
注意:当表开始增长时,这个命令将无法应付成千上万的页,第六章提供了一个sp_tablepages脚本,可以很方便捕获DBCC的输出。

 

 邀月工作室

 邀月工作室

 在上图中,e(对应ascii码为65)与g(67)之间对应的部分前16个字节存储了Row-Overflow的指针,如下:

字节数十六进制值十进制值
Meaning
00x0221=LOB;2=Overflow
1-20x00000B树等级,对OverFlow始终为0
30x000未使用
4-70x00000163?序列号,在优化并发时使用
8-110x004ae100?时间戳
12-150x000008342100长度

SQL Server 在一定条件下存储可变长度列在行溢出页。决定因素在于行自身的长度,即只有行自身需要超过8060字节时才会选择。表中的每一行要么全在行中,要么全在行 外。一个行如果包含多个large Variable-length列,那么它可以跨越多个行溢出页。  例如:

 注意:虽然SQL Server提供了大容量数据存储方式,你可以高效的使用特殊数据存储而不必重新设计你的表结构,但是,最佳的使用环境是:表的大部分数据是在行以内(即 常规数据)而偶尔需要大容量数据处理。

在某些情况 下,如果一个大的可变长度列被收缩,可能变成常规列,然而,出于效率考虑,如果仅减少几个字节,SQL Server并不会检查是否需要改变。只有改变长度超过1000字节时,SQL Server才会检查是否需要移动为常规列。

看前 面的例子,我们修改行的长度:

 行总长度减为7900,减少500字节,此时,你仍然可以看到两个row-flow 页

 再执行一次:

邀月工作室 

 注意:行溢出数据存储仅仅应用于可变长度列,即不超过8000字节的常规列,而 且,存储可变长度列在行溢出页,你还必须下列条件:

1、所有固定长度列,包括开销字节(overhaed bytes,还有24字节指针指向数据溢出页),总和加起来不超过8060字节。

2、可变长度列的实际数据必须大于24字节。

3、 该列必须不是聚集索引键的一部分。

如果,单个列长度超过8000字节,则应使用LOB(text,image or ntext) 列或Max数据类型。

本文简单介绍了限制长度的Large Object Data存储形式,下一节将介绍不限长度的Large Object Data存储形式。

 

邀月注:本文版权由邀月和优快云共同所有,转载请注明出处。
助人等于自助!   3w@live.cn
爆肝5万字❤️Open3D 点云数据处理基础(Python版) 本文为Open3D 点云数据处理基础教程(Python版),小白也能轻松上手!还等什么呢,学起来! 阅读详情

相关推荐

Python实战:3种高效方法将txt转csv(附pandas对比测试)

本文针对Python中将txt文件转换为csv格式的需求,深度评测了open()、csv模块和pandas三种主流方法。通过详尽的性能对比测试,从执行效率、内存占用和适用场景等维度提供选型指南,帮助开发者根据数据规模与复杂度选择最高效的转换方案。

weixin_29073241的博客 261

SQL Server超过了每行的最大字节数(8060)的原因和解决办法

一、现象     出现这种现象都是使用SQL语句建库的时候,错误提示:     "警告: 已创建表 'XXXX,但其最大行大小(89960)超过了每行的最大字节数(8060)。如果结果行长度超过 8060 字节,则此表中行的 INSERT 或 UPDATE 将失败。"       其中xxxx是你的建的表名,10438是你建表语句中可变长度列(如 nvarchar 或 varbinary)

故纸堆 6309

kettle多表数据迁移

点击 文件——新建——作业,在左侧的 核心对象 标签下选择 通用,双击添加一个 start ,一个 转换 ,一个 作业 和一个 成功 到右侧的作业面板,这些作业项都可以改名字。点击文件—新建—转换,在左侧的 核心对象 标签下选择 输入 下的 表输入,双击添加到右侧的转换面板,再选择 作业 下的 复制记录到结果 ,双击添加到右侧的转换面板。新建转换,在左侧的 核心对象 标签下选择 作业 下的 从结果获取记录,双击添加到右侧的转换面板,再选择 作业 下的 设置变量 ,双击添加到右侧的转换面板。

u014061745的博客 1340

关于行溢出

一个表中的每一行最多可以包含 8,060 字节。在 SQL Server 2008 中,对于包含 varchar、nvarchar、varbinary、sql_variant 或 CLR 用户定义类型列的表,可以放宽此限制。其中每列的长度仍必须在 8,000 字节的限制内,但是它们的总宽可以超过 8,060 字节的限制。创建和修改 varchar、nvarchar、varbinary、sql_va

jerrynet的专栏 1297

波束形成算法:LCMV实现(MATLAB)

阵列信号处理,波束成形,

weixin_43601588的博客 1万+

极简JEPA世界模型实战:低门槛复现LeWorldModel,CPU可跑

这次我们来看一个能让普通开发者真正上手跑起来的“世界模型”项目。如果你对Yann LeCun提出的JEPA(联合嵌入预测架构)框架感兴趣,但又苦于Meta官方实现过于庞大复杂,那么这个GitHub上4k star的项目就是为你准备的。它用极简的PyTorch代码(核心文件仅160-278行)完整复刻了包括LeWorldModel在内的五个JEPA核心变体,最大的亮点是: 门槛极低,普通笔记本甚至CPU就能跑,显存占用友好,非常适合学习和原理验证。 这个项目名为 keon/jepa ,完全开源。它剥离了工业级

weixin_29031161的博客 421

SQL Server 2005之改进还是没改进?

SQL Server 2005是微软五年磨一剑的产品,推出之后赞誉声一片。确实,相比sql server 2000,2005有了长足的进步,算是从娃娃长大成人了,可是,一些儿时的坏习惯,依然如故啊。在SQL Server 200...

congzhan1377的博客 140

31、双相不锈钢直齿轮加工与性能研究及人工神经网络在焊接中的应用

本文研究了双相不锈钢直齿轮在不同加工方法(WEDM与滚齿加工)下的磨损行为,分析了表面粗糙度、齿厚变化、磨损率及润滑性能随转速的变化规律,并对比了两种工艺的优劣。同时,探讨了人工神经网络(ANN)在AA7050铝合金搅拌摩擦焊中的应用,通过建立工艺参数与焊接质量之间的预测模型,实现了对焊缝硬度和峰值温度的准确预测。研究为高性能齿轮制造和铝合金焊接提供了理论支持和技术参考,并提出了未来在润滑优化、加工工艺改进及智能控制方面的研究方向。

ggg99的专栏 150

数据页面和数据行

数据库中的空间分为逻辑8KB页面。 这些页面从零开始连续编号,可以通过指定文件ID和页码来引用它们。 页面编号始终是连续的,这样当SQL Server增长数据库文件时,新页面将从文件中的最高页码加1开始编号。 同样,当SQL Server收缩文件时,它会从文件中删除编号最大的页面。 SQL SERVER中的数据存储 一般来说,SQL Server存储和处理数据库中的数据有三种不同的方式或技术。 使...

qq_43166840的博客 319

Linux内核驱动模型--PCIe(PCI Express)驱动​​

本文系统介绍了Linux内核中PCIe驱动的设计与实现。首先从架构定位入手,指出PCIe驱动基于PCI子系统扩展支持高速、低功耗特性。核心数据结构struct pci_driver包含设备匹配表id_table、生命周期函数probe/remove等关键组件。文章详细解析了驱动与设备的绑定流程、资源管理机制,并重点阐述了MSI-X中断、电源管理、热插拔和多队列等高级特性实现方案。最后提供了lspci、dmesg等调试工具的使用方法,总结了PCIe驱动在支持高性能设备中的关键作用。全文通过架构设计、核心结构、

amy_mhd的博客 424

C#解析基恩士(KEYENCE)PLC数据:KV协议通信与实时监控实现

KV协议是基恩士PLC使用的一种专用通信协议,通常用于与上位机进行数据交换。KV协议通过RS-232C、RS-485、Ethernet等接口与上位机通信,支持多种数据类型的读写,包括但不限于位、字、双字、浮点数等。简洁易用:KV协议的通信格式简单,易于实现。支持多种数据类型:支持位数据、字数据、定长字符串等。高效实时性:能够提供较高的实时数据交换性能,适合实时监控应用。本文介绍了如何通过C#与基恩士KV系列PLC进行通信,实现数据的解析和实时监控功能。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1806

《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(1)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在第五章主要学习了table的内部存储结构,第七章《Special storage》中将继续深入学习存储机制,那将是本书最难理解的一章。第六章主要介绍index的基础知识,第八章是《query Optimizer》,下

邀月周记 2991

Android系统开发面试指南:系统Launcher岗位解析

本文针对上海礼聪Android系统开发岗位(侧重系统Launcher、充电/电池/USB底层开发)提供面试指南。内容涵盖应用开发(启动流程优化)、系统底层(充电状态机、USBOTG)、编程能力(线程安全LRU实现)、问题排查(ANR分析)及沟通协作等核心考点。通过5类典型问题及技术深度解析,帮助候选人系统准备,重点考察Framework源码理解、系统调试能力和工程思维。建议结合PowerManagerService等模块源码和systrace工具进行实践准备,同时注重技术表达与协作能力的展现。

郑伟强dev的专栏 927

《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(5)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引上文简单介绍了 filestream数据存储和修改的一些特性。下面我们来继续了解SQL Server 2008中新增的稀疏列(sparse column),它可以看作是对Null值作了优化存储的普通列。稀疏列削减了针对n

邀月周记 1940

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SAP B1中文培訓教材_SDK

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

《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(4)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引上文简单介绍了filestream数据的基础,本文继续了解FileStream的一些特性。  ■ 更新FileStream数据当使用Updte修改一个fileStream列时,包含数据的文件被修改,文件相应增加或减少。特

邀月周记 2526

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(6)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引  这一节我们继续了解稀疏列的物理存储。 ■物理存储在某种角度上,你可以稀疏列作为存储,同时使用列集显示。如此,没有值的特殊列,它不会被列出,也不会占用空间;但有值的稀疏列比正常的null列得花费更多的空间。用non-s

邀月周记 1824

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(2)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引上文简单介绍了限制长度的Large Object Data存储形式,本文将介绍不限长度的Large Object Data存储形式。■不限长度的大对象数据 如果一个表包含老的数据类型如text/ntext/image等

邀月周记 2354

《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(3)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引上文简单介绍了不限长度的Large Object Data存储形式,以及存储在数据行的LOB数据。本文简要介绍MAX-Length数据及添加数据到LOB列的存储,另外主要介绍filestream数据的基础。■MAX-Le

邀月周记 2358
上一篇: 一个简单XQuery查询的例子
下一篇: 《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(2)
downmoon
博客等级 码龄24年 1676粉丝 494原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值