AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 307162
Accepted
Francesco Mantovani
Francesco Mantovani
Asked: 2022-02-09 05:20:51 +0800 CST2022-02-09 05:20:51 +0800 CST 2022-02-09 05:20:51 +0800 CST

SQL Server ::这条记录占用了多少8K页?

  • 772

我想看看特定记录占用了多少 8K 页。

如果您在 AdventureWorks2019 上运行此查询:

SELECT ProductID
    ,Name
    ,DATALENGTH(Name) AS SizeInBytes
    ,LEN(Name) AS NumberOfCharacters
FROM Production.Product
ORDER BY 1

你有一个被每条记录占用的列表:

产品编号 姓名 大小字节 字符数
1 可调种族 30 15
2 轴承球 24 12
3 BB滚珠轴承 30 15
4 耳机滚珠轴承 42 21
316 刀 10 5

如何添加包含该记录所占用页数的列?

我当然可以,DATALENGTH(Name) / 8 AS PagesTaken但我想知道是否有一些命令可以让我通过SELECT.

sql-server t-sql
  • 1 1 个回答
  • 902 Views

1 个回答

  • Voted
  1. Best Answer
    Josh Darnell
    2022-02-09T05:52:32+08:002022-02-09T05:52:32+08:00

    我认为你在这里有一些倒退。一页为 8 KB(8,192 字节)。该表中的行具有所有列的数据类型大小总和的最大大小:

    AdventureWorks2019 数据库中 Production.Product 的创建表脚本的屏幕截图

    我实际上不会把所有这些都加起来,但让我们想象一下总和是 500 字节。

    您可以通过浏览文档中的此页面来查找每种数据类型的大小,然后单击您想要查找大小信息的每种类型:数据类型 (Transact-SQL)

    由于每个页面上的标题大小固定,以及其他每行开销,8KB 页面上的行可用空间量为 8,096(有关详细信息,请参见此处:页标题中存储了哪些其他信息)。

    这意味着,在此表中,每页最多可以有 8096 / 500 = 16 行。nvarchar根据可变长度 ( ) 列的大小,可能可以容纳比这更多的行。

    您可以使用如下查询查看特定索引中有多少页:SQL Server:表和/或数据库使用的 8K 页数

    从那里您可以得出每页获得的平均行数(表中的总行数/表中的总页数)。

    您还可以使用DBCC PAGE(如上面的“页眉”链接中所述)查看有关每个页面的详细信息,包括页面上有多少行。


    请注意,以上所有内容都适用于“行内数据”。如果表具有 LOB 数据类型,那么如果它们的大小导致记录超过最大记录大小 8,060 字节,那么这些数据类型将存储在行外,可能存储在多个页面上。

    • 12

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve