MicrosoftSQLServer2000中的位图

 摘要:Microsoft SQL Server 从版本 7.0 开始使用内置位图来提高执行查询的速度。通过在 SQL Server 2000 中引入新的运算符,可以将进一步的位图筛选技术应用于源自大型数据集的、更快速的查询结果。

  简介

  本文首先介绍了在 Microsoft® SQL Server 7.0 的查询优化中位图的使用,然后介绍了它们在 SQL Server 2000™ 中增强的应用。

  SQL Server 7.0

  Microsoft SQL Server 7.0 在所有的散列联接中无提示使用位图。散列联接包含创建和探测两个阶段。在创建阶段,其中一个已联接的表(也称为外部表)的所有联接键都被分布到一个散列表中。作为该散列操作的副产品,SQL Server 将生成一个独立的位图,其中“0”表示“外部表中没有键值分布到该位”,“1”表示“外部表中有一个或多个键值分布到该位”。

  位图的大小是在根据外部表中唯一值的数量而进行的优化查询过程中决定的。一旦外部表中所有的行都被散列后,位图就由 0 和 1 组成。然后将使用与处理外部键相同的散列算法对探测表(也称为内部表)中的每个键进行分布。

  在检查和搜索创建阶段的散列表之前,我们将先检查位图。如果对应的条目为“0”,则该行在外部表中不可能有匹配值,因此将被丢弃。

  由于搜索位图要比搜索散列表更经济,处理不生成联接记录的内部表中的行要比处理不带位图的行快。由于位图是散列联接不可分割的一部分,因此位图将自动创建并且不会显示在显示方案的输出中。

  SQL Server 2000

  Microsoft SQL Server 2000 非常有效地使用了类似的位图,不仅在内部散列联接中使用,而且还用于外部联接运算符以删除包含不能生成任何联接记录的键值的行。在创建位图的显示方案输出中,有一个“Bitmap Create”运算符。在查询优化过程中,位图被自动引用到查询计划中。以下查询示例便使用了包含这些位图的计划:

  SELECT

  S_NAME,

  S_ADDRESS ,S_PHONE ,S_COMMENT ,PS_PARTKEY

  FROM

  SUPPLIER ,PARTSUPP

  WHERE

  S_SUPPKEY = PS_SUPPKEY AND

  PS_PARTKEY between 5000 AND 5999

  该查询从 SUPPLIER 表中选择所有供应商,这些供应商生产 5000 系列中的所有部件(部件键值在 5000 到 5999 之间)。除 SUPPLIER 表外,我们还使用 PARTSUPP(部件供应商)表,它包含了(针对每个部件)生产同一部件的不同供应商的所有记录。图 1 显示了由 SQL Server 2000 生成的显示方案图解。

  

  图 1:示例查询的执行计划图解

  对于每个数据流,位图都在联接的外部输入端上的散列联接之前创建。从左至右和从上至下查看上面的显示计划图解,将发现 PARTSUPP 表的扫描是并行的。后面的交换运算符 (Parallelism/Repartition Streams) 使用键值分配行,这样它们将在并行的散列匹配(联接)之前被置于包含 SUPPLIER 表的再分配行的对应流中。先执行顶部分支,直至散列联接的散列表被填充,底部分支没有活动为止。

  在扫描 SUPPLIER 表时,我们已使用 PARTSUPP 键(在本查询中为 PS_SUPPKEY 列)在顶部分支上创建了位图。每一个进入散列联接的流都有一个位图。当 SUPPLIER 行在扫描后输入交换运算符时,我们首先要判断它们将进入哪一个流。如果在对应于键值(S_SUPPKEY 列)的项目中该行的位图包含“0”,则丢弃该行。因此,在被置于适当的交换输出流之前,不符合条件的行将被删除。

  SQL Server 2000 只在并行查询计划中使用这些位图。这是因为如果没有交换运算符,则在散列联接中的位图上没有额外的补偿。除了上述使用散列联接的方案外,SQL Server 2000 还在合并联接中使用这些位图,但仍然只限于并行计划,并且在外部分支上存在 SORT 运算符。SORT 运算符使 SQL Server 在处理内部表中的行之前先处理所有外部行,因此使我们可以创建位图。如果在外部分支上没有 SORT 运算符,将同时处理合并联接中来自内部表和外部表中的行,这样就不能使用位图了。

  测试结果显示速度的提高

  通常,由于采用位图而产生的性能提高取决于被筛选出的行数。该数目是可以变化的,因此根据查询执行中其他运算符的开销的不同,速度提高的幅度可以从小到无法测量到非常显著。

  图 2 显示了在大型数据库(134 GB 的表,45 GB 的索引)中测试三种复杂查询时所观察到的速度提高。测试是在实验室中使用 RAM 为 4 GB 的 8 路 550 MHz 计算机完成的。

  查询 A 为包含结果汇总和排序的三个表(最大的表大约包含 100 GB 数据)的联接查询。

  查询 B 为包含相关子查询的查询。

  查询 C 为在联接顶部包含汇总的六个表的联接查询。

  

  图 2:位图筛选对三个大型数据库的复杂查询的优化

  结论

  在查询优化过程中使用位图是 SQL Server 2000 采用的众多技术之一,旨在从大型数据集(如企业数据库中的数据集)中最快的获取查询结果。通过减少需要处理的行数,使内部联接和外部联接查询更有效,迅速返回数据的同时还减少了服务器处理的工作量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Microsoft SQL Server 是一种关系型数据库管理系统,用于存储和管理数据。以下是使用 Microsoft SQL Server 的一些基本步骤: 1. 安装 SQL Server:首先需要下载并安装 SQL Server。可以从 Microsoft 官网下载安装程序。 2. 创建数据库:安装完成后,可以使用 SQL Server Management Studio 工具创建数据库。在创建数据库时,需要指定数据库名称、数据文件和日志文件的位置等信息。 3. 创建表格:在数据库创建表格,可以使用 SQL Server Management Studio 工具或者 SQL 语句来完成。在创建表格时,需要指定表格名称、列名、数据类型等信息。 4. 插入数据:在表格插入数据,可以使用 SQL 语句来完成。例如,可以使用 INSERT INTO 语句来向表格插入数据。 5. 查询数据:查询数据是 SQL Server 的主要功能之一。可以使用 SELECT 语句来查询表格的数据。 6. 更新和删除数据:可以使用 UPDATE 和 DELETE 语句来更新和删除表格的数据。 以上是使用 Microsoft SQL Server 的一些基本步骤。当然,SQL Server 还有很多高级功能,需要进一步学习和掌握。 ### 回答2: Microsoft SQL Server 是一种关系数据库管理系统,用于存储和管理大量的结构化数据。下面是关于如何使用 Microsoft SQL Server 的简要介绍。 首先,你需要在你的计算机上安装 Microsoft SQL Server。你可以从官方网站下载 SQL Server 的安装程序,并按照指示进行安装。 安装完成后,你可以打开 SQL Server Management Studio(SSMS),这是一个用于管理和操作 SQL Server 数据库的工具。在 SSMS ,你可以连接到你的 SQL Server 实例,并在其创建、修改和删除数据库、表、视图、存储过程等。 在创建数据库之后,你可以使用 Transact-SQL(T-SQL)语言编写查询来与数据库进行交互。T-SQL 是一种 SQL 的扩展语言,用于执行各种数据库操作,如插入、更新、删除数据,以及查询数据等。 在编写查询之前,你需要先了解数据库的结构和表之间的关系。根据需要,你可以创建新的表、字段和索引,并将数据导入到表。你可以使用 T-SQL 语句创建表,定义字段的类型、约束和关联关系。 当你完成了数据库的设计和表的创建后,你可以使用 T-SQL 语句执行各种查询操作。例如,你可以使用 SELECT 语句查询表的数据,使用 INSERT 语句插入新的数据,使用 UPDATE 语句更新数据,使用 DELETE 语句删除数据等。 此外,你还可以使用 SSMS 来执行诸如备份和还原数据库、创建和管理用户权限、监视服务器性能等高级操作。 总的来说,使用 Microsoft SQL Server 需要先安装 SQL Server,然后使用 SSMS 连接到数据库实例,通过 T-SQL 语句来操作数据库,执行各种查询和管理任务。对于初学者来说,熟悉和掌握 T-SQL 语法是使用 SQL Server 的关键。- ### 回答3: Microsoft SQL Server是微软公司开发的一款关系型数据库管理系统。它提供了强大的功能和灵活的工具,可以用于管理和处理大量的数据。以下是关于如何使用Microsoft SQL Server的一些简要步骤。 首先,安装SQL Server。您可以从微软官方网站上下载并安装SQL Server的最新版本。根据您的需求,可以选择安装完整版或仅安装某个组件。 安装完成后,您需要配置SQL Server实例。通过SQL Server配置管理器,您可以为实例设置网络协议、端口号和其他相关配置项。确保配置项符合您的需求。 接下来,您需要连接到SQL Server实例。您可以使用SQL Server Management Studio(SSMS)来连接到SQL Server。SSMS是SQL Server的集成开发环境,可以用于管理数据库、执行查询和进行其他相关操作。 通过SSMS,您可以创建数据库、表和其他对象。您可以使用Transact-SQL(T-SQL)语言来编写和执行查询,也可以使用SSMS提供的图形界面来进行操作。 一旦数据库和表创建完成,您可以插入、更新和删除数据。通过T-SQL语言,您可以编写insert、update和delete语句来操作数据。您还可以使用SSMS提供的图形界面来执行这些操作。 除了基本的数据操作,SQL Server还提供了其他高级功能,如事务处理、备份和恢复、安全性管理等。您可以根据需要进行配置和使用这些功能。 最后,定期维护和监控SQL Server是很重要的。您可以设置日志、性能监控和自动化任务,以保证数据库的稳定性和高效性。 总之,通过安装、配置和使用SSMS,您可以轻松地管理和操作Microsoft SQL Server。从创建数据库和表到执行查询和进行数据操作,SQL Server提供了强大的功能和灵活的工具来满足各种需求。通过学习和实践,您可以熟练地使用SQL Server进行数据管理和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值