当前位置: 首页 > news >正文

物流公司图片南宁百度快速优化

物流公司图片,南宁百度快速优化,徐州市政建设集团公司网站,兰考县红庙关东村做网站的原文:第2周 页_SQL Server 中数据存储的基本单位上周通过探讨SQL Server如何执行一个查询奠定了基础。我也在那里提到页是8kb的缓存。今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节。 页是SQL Server的基础,在SQL Server里一切都与页有…
原文:第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里的更多细节,它们同样对我们很重要。

http://www.lbrq.cn/news/2555317.html

相关文章:

  • 网站如何快速被百度收录广州外贸推广
  • 绵阳网站建设推广百度的首页
  • 营销网点机构号seo推广计划
  • 微信网站开发用什么语言新闻头条今日要闻最新
  • 在国外做h网站怎么样唐山seo优化
  • 淘客网站怎么做啊成都网络推广哪家好
  • 建设部网站资质公示网络推广经验
  • 百度做的网站后台怎么更新查询网138网站域名
  • 济南网站建设流程江苏seo哪家好
  • 做网站模板的软件市场推广方案和思路
  • 益阳网站制作公司平台推广渠道
  • .电子商务网站建设的核心百度关键词优化专家
  • web程序设计与实践做网站网站手机优化
  • 手机网站开发 1433端口错误互联网营销推广公司
  • 原创小说手机网站制作需要多少钱潍坊做网站公司
  • 制作网页网站杭州seo全网营销
  • 做网站的价格代运营一般收费
  • 建设淘宝网站需要多少钱营销的方法手段有哪些
  • 做决定网站网络seo是什么
  • 创建软件网站seo的优化策略有哪些
  • 手机网站设计作品欣赏搜狗seo
  • 房屋网站模板购物网站大全
  • 兰州企业网站网络公司网站
  • 提供邯郸做移动网站seo教程
  • 学校网站建设调查报告软件开发外包公司
  • 无锡商城网站建设哈尔滨网络推广
  • app拉新渠道南宁seo营销推广
  • 做动态网站学php_asp+还是jsp好?武汉网站搜索引擎优化
  • 清远网站建设推广关键词排名点击软件推荐
  • 面包类网站设计成都网站设计
  • 解决MySQL不能编译存储过程的问题
  • flutter release调试插件
  • 每日练习(红黑树)
  • STM32——HAL 库MDK工程创建
  • [论文阅读] 人工智能 + 软件工程 | KnowledgeMind:基于MCTS的微服务故障定位新方案——告别LLM幻觉,提升根因分析准确率
  • Vue3+Vite项目如何简单使用tsx