SQL Server 2008 分区表和并行性

2024-01-05

我的公司正在迁移到 SQL Server 2008 R2。我们有一个包含大量存档数据的表。大多数使用此表的查询都在 where 语句中使用 DateTime 值。例如:

Query 1

SELECT COUNT(*) 
FROM TableA 
WHERE 
     CreatedDate > '1/5/2010' 
     and CreatedDate < '6/20/2010'  

我假设分区是在 CreatedDate 创建的,每个分区分布在多个驱动器上,我们有 8 个 CPU,数据库中有 5 亿条记录,均匀分布在 2008 年 1 月 1 日的日期上至 2011 年 2 月 24 日(38 个分区)。该数据也可以分为一年中的几个季度或其他时间段,但我们将假设保留为几个月。

在这种情况下,我认为将使用 8 个 CPU,并且只会查询 6 个分区的 2010 年 1 月 5 日到 2010 年 6 月 20 日之间的日期。

现在,如果我运行以下查询并且我的假设与上面相同会怎样。

Query 2

SELECT COUNT(*) 
FROM TableA 
WHERE State = 'Colorado'

问题?
1. 是否会查询所有分区?是的
2. 是否会使用所有 8 个 CPU 来执行查询?是的
3. 性能会比查询未分区的表更好吗?是的
4.我还有什么遗漏的吗?
5. 分区索引有什么帮助?

我根据我对 SQL Server 2008 分区表和并行性的有限知识回答上面的前 3 个问题。但如果我的答案不正确,您能否提供反馈以说明我不正确的原因。

资源:

  • Video: 演示 SQL Server 2008 分区表并行性 http://channel9.msdn.com/Blogs/Joe+Longtin/Demo-SQL-Server-2008-Partitioned-Table-Parallelism(时长5分钟)
  • MSDN: 分区表和索引 http://msdn.microsoft.com/en-us/library/ms188706.aspx
  • MSDN: 设计分区来管理数据子集 http://msdn.microsoft.com/en-us/library/ms191174.aspx
  • MSDN: 分区表和索引的查询处理增强 http://msdn.microsoft.com/en-us/library/ms345599.aspx
  • MSDN:Word 文档:使用 SQL Server 2008 的分区表和索引策略 http://technet.microsoft.com/en-us/library/dd578580%28SQL.100%29.aspx白皮书

BarDev


分区是never提高性能的选项。您所能期望的最好的结果就是获得与非分区表相当的性能。通常,您会得到随分区数量增加而增加的回归。为了提高性能,您需要索引,而不是分区。分区用于数据管理操作:ETL、归档等。有些人声称消除分区可能会提高性能,但对于任何分区消除都可以将前导索引键放在与分区列相同的列上,从而获得更好的结果。

是否会查询所有分区?

该查询需要一个索引State。否则就是表扫描,并且会扫描整个表。对分区表的表扫描是always比扫描相同大小的非分区表慢。索引本身可以在同一分区方案上对齐,但主键必须是State.

是否会使用所有 8 个 CPU 来执行查询?

尽管普遍存在相反的误解,但并行性与分区无关。分区和非分区范围扫描都可以使用并行运算符,这将由查询优化器决定。

性能会比查询不存在的表更好吗 分区?

No

分区索引有何帮助?

索引会有所帮助。如果索引必须对齐,则必须对其进行分区。非分区索引比分区索引更快,但无法规避切入/切出操作的索引对齐要求。

如果您正在考虑分区,那应该是因为您需要执行快速切入切出操作来删除超过保留策略期限的旧数据或类似的操作。为了性能,您需要查看索引,而不是分区。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 2008 分区表和并行性 的相关文章

  • 查询所有表数据并进行索引压缩

    是否有人碰巧拥有一个通用 SQL 语句 可以列出数据库中每个分区的所有表和索引及其当前的压缩设置 Thanks 编辑 这是我尝试查询表所得到的 但我不确定连接是否正确 我得到了重复项 这似乎是由于索引的存在引起的 SELECT t name
  • 使用map.get()时使用java Map.containsKey()是多余的

    一段时间以来 我一直想知道在最佳实践中是否允许避免使用containsKey 方法上java util Map而是对结果进行空检查get 我的理由是 两次查找值似乎是多余的 首先是查找containsKey 然后再次为get 另一方面 大多
  • Id 或 [TableName]Id 作为主键/实体标识符

    是否首选使用 Id 作为主键的列名或 TableName Id 作为命名约定 表 账户主键 ID 相对 表 账户主键 AccountId 在我见过的实现中 它似乎分为 50 50 左右 每种方法的优点和缺点是什么 跟进 在我的数据库中使用一
  • SqlCommand 参数与 String.Format [重复]

    这个问题在这里已经有答案了 我一直在互联网上搜索 但似乎找不到任何可以解释我的问题的内容 可能是我没有使用正确的搜索字符串 所以我在这里发帖希望有人可以帮助我有了这个 我的程序是使用Visual Studio 2010用C 编写的 我注意到
  • ClassCastException:java.util.Date 无法转换为 java.sql.Date

    你好 我的代码抛出了ClassCastException StackTrace 显示 java lang ClassCastException java util Date cannot be cast to java sql Date a
  • Sql Server:如何在 WHERE 子句中使用 MAX 等聚合函数

    我想获得该记录的最大值 请帮我 SELECT rest field1 FROM mastertable AS m INNER JOIN SELECT t1 field1 field1 t2 field2 FROM table1 AS T1
  • 如何在sqlite中创建物化视图?

    我对物化视图和 SQLite 进行了无数次搜索 据我所知 2004 年和 2006 年似乎有人提到 SQLite 没有物化视图 紧随其后的是 SQLite 的变更日志2008年3月 http www sqlite org releaselo
  • 将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句

    我有这个 UPDATE MySQL 语句 效果很好 UPDATE table1 Inner Join table2 ON table2 id table1 gw id SET table1 field1 1 table1 field2 2
  • SQL Server freetexttable 部分单词

    我第一次使用 SQL 自由文本搜索 我有点困惑为什么它会这样 我有一个联系人表 用户可以搜索并且我正在使用 SELECT Contacts Rank FROM FREETEXTTABLE Contacts O Roarty AS Conta
  • 使用按位函数查询 BIT 字段时,MySQL 不使用索引

    我的 MySQL 表中有一个 BIT 类型的字段 我想使用位值存储记录的状态 例如 1 status1 2 status2 4 status3 8 status4 每条记录可以同时具有多种状态 对于 status1 和 status3 该值
  • java.sql.Timestamp 到微秒精度的字符串

    我正在将时间戳列从数据库读取到 java sql Timestamp 对象中 然后我想将时间戳的值转换为 String 对象 但保持微秒精度 调用 toString 方法让我接近 但它似乎在微秒内丢失了尾随零 如果时间戳以非零数字结尾 则一
  • Visual Studio 2010 与 SQL Server 2012 商业智能的正确安装顺序

    我有一个 Windows 7 64 位 旗舰版 虚拟机 想要安装以下内容 Visual Studio 2010 Ultimate SQL Server 2012 Business Intelligence with SSIS and SSR
  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • Oracle 中的 SQL 调优 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何文章 链接可以让我找到 SQL 调优 Oracle 的示例 如果能用例子来解释那就太好了 我需
  • sql查询将两列与一列连接起来

    我在 MS Access 2010 中有 2 个表 如下所示 USERS u id u name LOAN l id l from ref users u id l to ref users u id l amount Users u id
  • 如何在 SQL Server 中的特定字符后分割字符串并将该值更新到特定列

    我有包含数据的表格1 1 to 1 20在一列中 我想要值 1 到 20 即 前斜杠 之后的值更新到 SQL Server 中同一表中的其他列 Example 专栏有价值1 1 1 2 1 3 1 20新列值1 2 3 20 也就是说 我要
  • 如何使用 DateTime 执行 SQL NOT NULL?

    一个人如何处理DateTime with a NOT NULL 我想做这样的事情 SELECT FROM someTable WHERE thisDateTime IS NOT NULL But how 嗯 它有效吗 我刚刚测试过 Obje
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 连接两个表的查询的 SQL Server“FOR XML”输出

    我是 SQL Server 中 FOR XML 功能的新手 我正在使用 SQL Server 2012 我有两个表 Word 和 Word Expansion 样本数据 表 字 WordOID Word 1 PIPE 2 WIRE 表 Wo
  • SQLite HAVING 比较错误

    我有一个测试 SQLite 表 用于存储带有值的报告数据 CREATE TABLE IF NOT EXISTS test fact daily revenue date TEXT revenue NUMERIC product TEXT I

随机推荐

  • 用于网站和 Api 的 Ninject - 序列不包含元素

    我有一个带有 Web Api 项目和 MVC 3 项目的 VS2010 解决方案 Web APi 和 MVC 项目都有自己的 App Start 和 NinjectWebCommon 并在其中声明了自己的绑定 当尝试使用 Api 时 我总是
  • PHP 中的 OOP:来自变量的类函数?

    是否可以像这样从类中调用函数 class new class function name do the thing req class gt function name 类似的解决方案 这似乎不起作用 是的 这是可能的 这就是众所周知的变量
  • 在单个 ASP.NET Core WebAPI 服务中托管多个产品 API

    我正在设计一个基于 ASP NET Core 的 Web API 它需要支持我的产品的多个变体 比方说基于许可证或安装的品种 我没有为每种类型的产品提供多种服务 而是考虑使用一个服务来容纳 托管多个端点或 URL 我将在安装时在 appse
  • 如何在c中读取图像的像素?

    假设我们的位图图像具有高度 M 和宽度 N 我们总是假设 在本实验中 宽度 N 是 4 的倍数 这简化了 文件中的字节布局 对于该图像 像素数组存储 正好 3 x N x M 字节 如下所示 每组 3 个字节代表一个像素 其中字节存储 按顺
  • 如何在 main 中设置 Nimbus 外观

    我刚刚学习Java 仍然无法解决我遇到的这个小问题 我的弹出日历使用 Nimbus 外观和感觉 但我有使用 Java 外观和感觉的面板和容器 Jtable 我试图使每个 GUI 屏幕 窗口都使用 Nimbus 外观和感觉 Merky 建议将
  • 从 numpy 数组到 DICOM

    我的代码读取 DICOM 文件 将像素信息放入 numpy 数组 然后修改 numpy 数组 它使用列表是因为我试图同时操作多个 DICOM 文件 我还没有找到任何关于如何获取修改后的 numpy 数组并再次使其成为 DICOM 文件的信息
  • 通过 Windows API 检索 PCI 坐标(用户模式)

    有没有办法使用 Windows c c API 例如 PnP Configuration Manager API 获取设备的 PCI 坐标 总线 插槽 功能号 我已经知道如何在内核模式下执行此操作 我需要一个用户模式解决方案 我的目标系统是
  • 在“for”循环中递增 1 时格式化背后的技术原因?

    整个网络上都有代码示例for循环看起来像这样 for int i 0 i lt 5 i 当我使用以下格式时 for int i 0 i 5 i 我这样做是因为我相信这样会更有效率 但是在大多数情况下这真的很重要吗 每个人都喜欢他们的微观优化
  • 使用来自 json 文件的字符串将字符串数组传递给 React 组件,并允许内联 span 标签

    我正在尝试获取一个字符串数组来显示为段落 并允许在这些字符串内使用内联跨度标签 我的问题是 当在段落内添加值时 会将 标记的开头和结尾解码为其解码值 有没有一种简单的方法可以使其工作而无需为此情况制作特定组件 我的React组件如下 con
  • 从 Flask 运行 Scrapy

    我有这个文件夹结构 app py flask app app datafoo scrapy cfg crawler py blogs pipelines py settings py middlewares py items py spid
  • boto3 s3 对象过期“MalformedXML”错误

    我尝试使用以下命令设置 Amazon S3 存储桶中子目录的生命周期配置boto3 put bucket lifecycle configuration 我使用了这段代码AWS 文档 https docs aws amazon com co
  • 在图形之间移动或复制补丁

    如何在图形之间移动 或复制 补丁matplotlib 我正在处理一组腌制的人物 并想将它们合并到一个情节中 使用线图时这没有问题 因为我可以通过以下方式访问数据ax get lines 然而 在使用直方图时 ax get lines回报 a
  • 在主页小部件中使用 ScrollView 时出现问题

    我能够在应用程序的布局 xml 文件中成功使用 ScrollView 但是 当我尝试在小部件的布局 xml 文件中使用 ScrollView 时 一旦将小部件放入模拟器中 就会收到 加载小部件时出现问题 错误 如果我注释掉 ScrollVi
  • 是否可以禁用在页面中查找的 Ctrl + F 功能?

    我有一个拼图网站 这是一种可怕的作弊方式 只做一部分也可以 但是能做到吗 我的想法是用图像替换字母 但还有比这更简单的吗 Code window addEventListener keydown function e if e keyCod
  • 按 ID 划分的行频率

    数据集包含三个变量 id 性别和年级 因素 mydata lt data frame id c 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 4 sex c 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1
  • 将信息从一个 jframe 传递到另一个 jframe

    首先 我知道使用多个 jframe 是不受欢迎的 不幸的是我已经深入到这个项目中来重新开始 我的问题是我找不到一种方法将数据 用户输入 从一个帧传输到另一个帧 我将提供需要从帧 1 传输到另一个帧的代码 这是我的代码 用于他们必须输入的姓名
  • C++ 到 chrono::duration 的转换运算符 - 适用于 c++17,但不适用于 C++14 或更低版本

    以下代码使用带有 C 17 集的 gcc 7 1 0 进行编译 但不使用 C 14 集 或 Visual Studio 2017 进行编译 很容易重现Wandbox https wandbox org permlink b8QJGuSPUc
  • 尝试在 Android 中传输 IP 摄像头时黑屏

    我正在开发一个 Android 应用程序来监控一些 IP 摄像机 我正在使用MjpegView 类 http code google com p android camera axis source browse trunk sereali
  • Fortran 格式 1P10E11.3

    有谁知道这个格式行在 fortran 中的含义 FORMAT 1x F7 0 2x 1P10E11 3 我知道第一部分是浮点数的一次重复 但我不明白第二部分中读取了多少指数数据点以及 P 的用途 The P格式会移动小数点 输入和输出的行为
  • SQL Server 2008 分区表和并行性

    我的公司正在迁移到 SQL Server 2008 R2 我们有一个包含大量存档数据的表 大多数使用此表的查询都在 where 语句中使用 DateTime 值 例如 Query 1 SELECT COUNT FROM TableA WHE