精华内容
下载资源
问答
  • 第2周 页_SQL Server 中数据存储的基本单位 原文:第2周 页_SQL Server 中数据存储的基本单位 上周通过探讨SQL Server如何执行一个查询奠定了基础。我也在那里提到页是8kb的缓存。今天我们对页进行...
    原文:第2周 页_SQL Server 中数据存储的基本单位

            上周通过探讨SQL Server如何执行一个查询奠定了基础。我也在那里提到页是8kb的缓存。今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节。

            页是SQL Server的基础,在SQL Server里一切都与页有关。当我们想提高查询性能时,我们可以减少SQL Server指定查询所需页的读取。在第二个月当我们讨论索引时,我们发现其实索引的结构也是由页组成的。当你不知道页是什么的时候,你就不能对SQL Server进行调优和故障排除。

    数据页结构

    在SQL Server中页的大小始终是8kb的大小,页有不同的类型:数据页,索引页,系统页等等。今天我们对在SQL Server存储我们表数据的数据页进行更多细节的学习。一个数据页总是由三个部分组成:

    1. 页头(Page Header)
    2. 数据区(Payload)
    3. 行偏移数组(Row Offset Array)

    在SQL Server中页头的始终是96 byte长(不受页的类型约束),这里存储着像Page ID,Object ID等页的大体信息。数据区是页中最有意思的部分,因为我们的记录就存在那里。SQL Server给你8192 bytes(8kb)的空间,其中8096 bytes是给数据区的。因此计算多少条记录刚好可以填满一个页是个很容易的事,直接拿8096除以记录长度即可(这里包含至少7 bytes的内部行开销)。当你把结果取整下,你就得到在一页里你可以存放多少条记录。

    SQL Server中对页操作必须是整页读或写的,因此我们的目标总是希望在一页里存放尽可能多的记录。SQL Server不能从你存储里读页的一部分,或者把页的一部分写入存储。I/O操作始终最少都是在页级别完成的。

    最后在页的底部你会看到被称作行偏移数组的东西。行偏移数组用2 bytes存储着每条记录在页里位置的偏移量。第一条记录始终开始与96的偏移,刚好紧接着页头。下图可以给你刚才介绍的数据页结构的概况认识。

    深入解析数据页

    我们来看一个简单的表定义:

     

     1 CREATE TABLE Customers
     2 (
     3    FirstName CHAR(50) NOT NULL,
     4    LastName CHAR(50) NOT NULL,
     5    Address CHAR(100) NOT NULL,
     6    ZipCode CHAR(5) NOT NULL,
     7    Rating INT NOT NULL,
     8    ModifiedDate DATETIME NOT NULL,
     9 )
    10 GO

     

    对于这样一个表定义我们很容易计算出在一页里我们可以存放几条记录。这里记录的大小是224 bytes长(50+50+100+5+4+8+7)。8096 / 224 = 36.14,也就是说在一页你最多能存放36条记录。那其他剩余的空间——在这里是32 bytes(8096-224*36)就浪费掉了,因为数据页只能属于一个指定的数据库对象,且不能与其他对象共享。最坏的情况,当你的表定义了一条长度为4031bytes 的记录时,在每一页你都在浪费4029 bytes的空间。当你用像VARCHAR等变长类型定义字段时,情况会发生改变,因为SQL Server允许变长列存放在不同的页。

    如果你想知道在你数据库设计后,每页有多少空间浪费掉,你可以通过下列动态管理视图(DMV)查询下缓冲池:sys.dm_os_buffer_descriptors 从这个动态管理视图(DMV)显示的每条记录都代表当前在缓存池里保存的每一页,当你在有大内存的机器上查询这个动态管理视图时要注意了,这个操作很耗内存。free_space_in_bytes 列告诉你当前页有多少空间是空闲的。下面这个查询可以告诉你在SQL Server里每个数据库有多少空间被浪费:

     

    1 SELECT
    2    DB_NAME(database_id),
    3    SUM(free_space_in_bytes) / 1024 AS 'Free_KB'
    4 FROM sys.dm_os_buffer_descriptors
    5 WHERE database_id <> 32767
    6 GROUP BY database_id
    7 ORDER BY SUM(free_space_in_bytes) DESC
    8 GO

     

    这个是我在系统里经常执行的查询(例如在做SQL Serve健康检查时),为了找出哪个数据库有糟糕的表设计。

    小结

     

     我希望这次性能调优可以帮你更好的理解SQL Serve中的数据页,而且它们对性能调优是多么重要。你也看到,专注于表设计与否将直接影响多少数据页给一个表使用。

    如果你想知道关于数据页的更多细节信息,我同样推荐观看关于这个话题的SQL Server Quickie。

    下周我们将探讨SQL Serve里的更多细节,它们同样对我们很重要。

    posted on 2015-05-05 09:24 NET未来之路 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/4478269.html

    展开全文
  • 我也在那里提到页是8kb缓存。今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多细节。 页是SQL Server基础,在SQL Server里一切都与页有关。当我们想提高查询性能时,我们可以减少SQL Server指定...

     上周通过探讨SQL Server如何执行一个查询奠定了基础。我也在那里提到页是8kb的缓存。今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节。

            页是SQL Server的基础,在SQL Server里一切都与页有关。当我们想提高查询性能时,我们可以减少SQL Server指定查询所需页的读取。在第二个月当我们讨论索引时,我们发现其实索引的结构也是由页组成的。当你不知道页是什么的时候,你就不能对SQL Server进行调优和故障排除。

    数据页结构

    在SQL Server中页的大小始终是8kb的大小,页有不同的类型:数据页,索引页,系统页等等。今天我们对在SQL Server存储我们表数据的数据页进行更多细节的学习。一个数据页总是由三个部分组成:

    1. 页头(Page Header)
    2. 数据区(Payload)
    3. 行偏移数组(Row Offset Array)

    在SQL Server中页头的始终是96 byte长(不受页的类型约束),这里存储着像Page ID,Object ID等页的大体信息。数据区是页中最有意思的部分,因为我们的记录就存在那里。SQL Server给你8192 bytes(8kb)的空间,其中8096 bytes是给数据区的。因此计算多少条记录刚好可以填满一个页是个很容易的事,直接拿8096除以记录长度即可(这里包含至少7 bytes的内部行开销)。当你把结果取整下,你就得到在一页里你可以存放多少条记录。

    SQL Server中对页操作必须是整页读或写的,因此我们的目标总是希望在一页里存放尽可能多的记录。SQL Server不能从你存储里读页的一部分,或者把页的一部分写入存储。I/O操作始终最少都是在页级别完成的。

    最后在页的底部你会看到被称作行偏移数组的东西。行偏移数组用2 bytes存储着每条记录在页里位置的偏移量。第一条记录始终开始与96的偏移,刚好紧接着页头。下图可以给你刚才介绍的数据页结构的概况认识。

    深入解析数据页

    我们来看一个简单的表定义: 

    复制代码
     1 CREATE TABLE Customers
     2 (
     3    FirstName CHAR(50) NOT NULL,
     4    LastName CHAR(50) NOT NULL,
     5    Address CHAR(100) NOT NULL,
     6    ZipCode CHAR(5) NOT NULL,
     7    Rating INT NOT NULL,
     8    ModifiedDate DATETIME NOT NULL,
     9 )
    10 GO
    复制代码

     对于这样一个表定义我们很容易计算出在一页里我们可以存放几条记录。这里记录的大小是224 bytes长(50+50+100+5+4+8+7)。8096 / 224 = 36.14,也就是说在一页你最多能存放36条记录。那其他剩余的空间——在这里是32 bytes(8096-224*36)就浪费掉了,因为数据页只能属于一个指定的数据库对象,且不能与其他对象共享。最坏的情况,当你的表定义了一条长度为4031bytes 的记录时,在每一页你都在浪费4029 bytes的空间。当你用像VARCHAR等变长类型定义字段时,情况会发生改变,因为SQL Server允许变长列存放在不同的页。

    如果你想知道在你数据库设计后,每页有多少空间浪费掉,你可以通过下列动态管理视图(DMV)查询下缓冲池:sys.dm_os_buffer_descriptors 从这个动态管理视图(DMV)显示的每条记录都代表当前在缓存池里保存的每一页,当你在有大内存的机器上查询这个动态管理视图时要注意了,这个操作很耗内存。free_space_in_bytes 列告诉你当前页有多少空间是空闲的。下面这个查询可以告诉你在SQL Server里每个数据库有多少空间被浪费: 

    复制代码
    1 SELECT
    2    DB_NAME(database_id),
    3    SUM(free_space_in_bytes) / 1024 AS 'Free_KB'
    4 FROM sys.dm_os_buffer_descriptors
    5 WHERE database_id <> 32767
    6 GROUP BY database_id
    7 ORDER BY SUM(free_space_in_bytes) DESC
    8 GO
    复制代码

     这个是我在系统里经常执行的查询(例如在做SQL Serve健康检查时),为了找出哪个数据库有糟糕的表设计。

    小结 

    我希望这次性能调优培训可以帮你更好的理解SQL Serve中的数据页,而且它们对性能调优是多么重要。你也看到,专注于表设计与否将直接影响多少数据页给一个表使用。


    本文转自Woodytu博客园博客,原文链接:http://www.cnblogs.com/woodytu/p/4466915.html,如需转载请自行联系原作者

    展开全文
  • 我也在那里提到页是8kb缓存。今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多细节。 页是SQL Server基础,在SQL Server里一切都与页有关。当我们想提高查询性能时,我们可以减少SQL Server指定...

            上周通过探讨SQL Server如何执行一个查询奠定了基础。我也在那里提到页是8kb的缓存。今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节。

            页是SQL Server的基础,在SQL Server里一切都与页有关。当我们想提高查询性能时,我们可以减少SQL Server指定查询所需页的读取。在第二个月当我们讨论索引时,我们发现其实索引的结构也是由页组成的。当你不知道页是什么的时候,你就不能对SQL Server进行调优和故障排除。

    数据页结构

    在SQL Server中页的大小始终是8kb的大小,页有不同的类型:数据页,索引页,系统页等等。今天我们对在SQL Server存储我们表数据的数据页进行更多细节的学习。一个数据页总是由三个部分组成:

    1. 页头(Page Header)
    2. 数据区(Payload)
    3. 行偏移数组(Row Offset Array)

    在SQL Server中页头的始终是96 byte长(不受页的类型约束),这里存储着像Page ID,Object ID等页的大体信息。数据区是页中最有意思的部分,因为我们的记录就存在那里。SQL Server给你8192 bytes(8kb)的空间,其中8096 bytes是给数据区的。因此计算多少条记录刚好可以填满一个页是个很容易的事,直接拿8096除以记录长度即可(这里包含至少7 bytes的内部行开销)。当你把结果取整下,你就得到在一页里你可以存放多少条记录。

    SQL Server中对页操作必须是整页读或写的,因此我们的目标总是希望在一页里存放尽可能多的记录。SQL Server不能从你存储里读页的一部分,或者把页的一部分写入存储。I/O操作始终最少都是在页级别完成的。

    最后在页的底部你会看到被称作行偏移数组的东西。行偏移数组用2 bytes存储着每条记录在页里位置的偏移量。第一条记录始终开始与96的偏移,刚好紧接着页头。下图可以给你刚才介绍的数据页结构的概况认识。

    深入解析数据页

    我们来看一个简单的表定义: 

     1 CREATE TABLE Customers
     2 (
     3    FirstName CHAR(50) NOT NULL,
     4    LastName CHAR(50) NOT NULL,
     5    Address CHAR(100) NOT NULL,
     6    ZipCode CHAR(5) NOT NULL,
     7    Rating INT NOT NULL,
     8    ModifiedDate DATETIME NOT NULL,
     9 )
    10 GO

     对于这样一个表定义我们很容易计算出在一页里我们可以存放几条记录。这里记录的大小是224 bytes长(50+50+100+5+4+8+7)。8096 / 224 = 36.14,也就是说在一页你最多能存放36条记录。那其他剩余的空间——在这里是32 bytes(8096-224*36)就浪费掉了,因为数据页只能属于一个指定的数据库对象,且不能与其他对象共享。最坏的情况,当你的表定义了一条长度为4031bytes 的记录时,在每一页你都在浪费4029 bytes的空间。当你用像VARCHAR等变长类型定义字段时,情况会发生改变,因为SQL Server允许变长列存放在不同的页。

    如果你想知道在你数据库设计后,每页有多少空间浪费掉,你可以通过下列动态管理视图(DMV)查询下缓冲池:sys.dm_os_buffer_descriptors 从这个动态管理视图(DMV)显示的每条记录都代表当前在缓存池里保存的每一页,当你在有大内存的机器上查询这个动态管理视图时要注意了,这个操作很耗内存。free_space_in_bytes 列告诉你当前页有多少空间是空闲的。下面这个查询可以告诉你在SQL Server里每个数据库有多少空间被浪费: 

    1 SELECT
    2    DB_NAME(database_id),
    3    SUM(free_space_in_bytes) / 1024 AS 'Free_KB'
    4 FROM sys.dm_os_buffer_descriptors
    5 WHERE database_id <> 32767
    6 GROUP BY database_id
    7 ORDER BY SUM(free_space_in_bytes) DESC
    8 GO

     这个是我在系统里经常执行的查询(例如在做SQL Serve健康检查时),为了找出哪个数据库有糟糕的表设计。

    小结 

    我希望这次性能调优培训可以帮你更好的理解SQL Serve中的数据页,而且它们对性能调优是多么重要。你也看到,专注于表设计与否将直接影响多少数据页给一个表使用。

    如果你想知道关于数据页的更多细节信息,看下这个文章:SQL Server:理解数据页结构

    下周我们将探讨SQL Serve里的更多细节,它们同样对我们很重要。

    围观PPT:

    0430_02页_SQL_Server中数据存储的基本单位.zip

    转载于:https://www.cnblogs.com/woodytu/p/4466915.html

    展开全文
  • 字节也叫Byte,是计算机数据的基本存储单位。8bit(位)=1Byte(字节)1024Byte(字节)=1KB1024KB=1MB1024MB=1GB1024GB=1TB其中:K是千 M是兆 G是吉咖 T是太拉。在电脑里一个中文字是占两个字节的。 转载于:...

    字节也叫Byte,是计算机数据的基本存储单位。
    8bit(位)=1Byte(字节)
    1024Byte(字节)=1KB
    1024KB=1MB
    1024MB=1GB
    1024GB=1TB
    其中:K是千 M是兆 G是吉咖 T是太拉。
    在电脑里一个中文字是占两个字节的。

    转载于:https://www.cnblogs.com/xiaonangua/p/11237122.html

    展开全文
  • 数据存储单位

    2017-02-25 18:24:13
    数据存储单位Bit(比特)是binary digit英文缩写,量度信息的单位,也是表示信息量最小单位,只有0、1两种二进制状态。 基本信息 中文名称 数据存储单位 外文名称 ...
  • java到底是值传递还是引用传递? 基本数据类型存在意义?起到了什么好处? 每个基本数据类型有对应位数。 进制转换和存储容量转换
  • +-*/),是内存储存数据的基本单位。 bit(位): bit是电子计算机中最小的数据单位,每一位的状态只能是0或1。 byte(字节): 1 byte=8 bit 8个二进制位(bit)构成1个“字节(Byte)”,它是存储空间的基本计量....
  • 字节是数据存储中最常用的基本单位。我们常说内存有2G,这里的单位就是字节。1K等于1024字节,1M等于1024K,1G等于1024M。 字:位的组合,作为一个独立的信息单位处理。取决于机器的类型、字长及使用者的要求。...
  • 数据存储计量单位换算

    千次阅读 2020-10-04 10:34:03
    存储容量的基本单位是:bit、B、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。 存储单位是一种计量单位。指在某一领域以一个特定量,或标准做为一个记录(计数)点。再以此点的某个倍数再去定义另一个点,而这个点...
  • //八个基本数据类型(Primitive type): //整数型: byte n1=127;//占1个字节 short n2=12345;//占2个字节 int n3=134254;//占4个字节,最常用整数型 long n4=1245635L;//占8个字节,long类型要在数字后...
  •  硬盘存放数据的基本单位为扇区,我们可以理解为一本书的一页。当我们装机或买来一个移动硬盘,第一步便是为了方便管理--分区。无论用何种分区工具,都会在硬盘的第一个扇区标注上硬盘的分区数量、每个分区的大小,...
  • 1.2 基本概念和术语 一数据数据...讨论的基本单位可由若干个数据项组成 数据项 是数据结构中讨论的最小单位数据元素可以是数 据项的集合 例如描述一个运动员的数据元素可以是 姓名 俱乐部名称 出生日期 参加日期 职
  • 2、字节(Byte)是存储数据的基本单位;3、字(Word),两个字节称为一个字;4、KB;5、MB;6、GB;7、TB。本文操作环境:Windows7系统,Dell G3电脑。相关推荐:《编程入门》存储单位是一种计量单位。指在某一领域以一...
  • 计算机数据存储单位及换算

    千次阅读 2018-12-07 10:35:21
    作为信息技术基本存储单元,因为比特实在太小了,所以大家生活中并不是经常听到。那么 bit 是什么呢? 电脑是以二进制存储以及发送接收数据的。二进制一位,就叫做 1 bit。也就是说 bit 含义就是二进制数中...
  • 在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的,每一行代表一条唯一的记录,每一列代表记录中的一个域。 一、创建...
  • 在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。 一、创建...
  • 在数据库中,数据表是其中最重要、最基本的操作对象,是数据存储的基本单位。 此篇博文列举了一些数据表的常用操作命令。
  • 在电力系统规划环节中为了进一步满足仿真操控程序Oracle数据库内部存取速率提升目标设计人员决定利用OCL技术进行机理协调管制根据这类节点控制原理论述其与传统ADO技术模式比较在综合数据精确读取和全方位存储功能...
  • 数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。 本模块将介绍数据表的...
  • 表是库中最重要,最基本的操作对象,是数据存储的基本单位。表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。 创建数据表,查看数据表结构,修改...
  • 基本数据类型存储空间 基本数据类型是学习语言中最先接触到知识,就C、C++、Java而言,它们有很多类似点,但不同点更值得注意。下面单就存储空间方面进行对比和整理。 1. 存储容量单位  计算机以“位”序列...
  • 在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中按照行和列的各式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。 一,创建...
  • 在数据库中,数据表是数据库最重要、最基本的操作对象,是数据存储的基本单位。创建数据表的过程就是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。  创建数据表的语法形式:   CREATE TABLE &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,757
精华内容 1,902
关键字:

数据存储的基本单位