SQL Server 2005 中的分区表和索引(1)
关于本文本文所描绘的功能和计划是下一版本 SQL Server 的开发方向。它们并非本产品的说明书,如有更改,恕不另行通知。对于最终产品是否具有这些功能不做任何明示或暗示的保证。对于某些功能,本文假设读者熟悉 SQL Server 2000 功能和服务。有关背景信息,请访问SQL Server 网站或 SQL Server 2000 资源工具包。这并不是产品说明书。
下载相关的代码示例 SQL2005PartitioningScripts.exe。
本页内容
为什么要进行分区?
分区的发展历史
定义和术语
创建分区表的步骤
融会贯通:案例研究
总结
为什么要进行分区?
什么是分区?为什么要使用分区?简单的回答是:为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。通常,创建表是为了存储某种实体(例如客户或销售)的信息,并且每个表只具有描述该实体的属性。一个表对应一个实体是最容易设计和理解的,因此不需要优化这种表的性能、可伸缩性和可管理性,尤其是在表变大的情况下。
大型表是由什么构成的呢?超大型数据库 (VLDB) 的大小以数百 GB 计算,甚至以 TB 计算,但这个术语不一定能够反映数据库中各个表的大小。大型数据库是指无法按照预期方式运行的数据库,或者运行成本或维护成本超出预定维护要求或预算要求的数据库。这些要求也适用于表;如果其他用户的活动或维护操作限制了数据的可用性,则可以认为表非常大。例如,如果性能严重下降,或者每天、每周甚至每个月的维护期间有两个小时无法访问数据,则可以认为销售表非常大。有些情况下,周期性的停机时间是可以接受的,但是通过更好的设计和分区实现,通常可以避免或最大程度地减少这种情况的发生。虽然术语 VLDB 仅适用于数据库,但对分区来说,了解表的大小更重要。
除了大小之外,当表中的不同行集拥有不同的使用模式时,具有不同访问模式的表也可能会影响性能和可用性。尽管使用模式并不总是在变化(这也不是进行分区的必要条件),但在使用模式发生变化时,通过分区可以进一步改善管理、性能和可用性。还以销售表为例,当前月份的数据可能是可读写的,但以往月份的数据(通常占表数据的大部分)是只读的。在数据使用发生变化的类似情况下,或在维护成本随着在表中读写数据的次数增加而变得异常庞大的情况下,表响应用户请求的能力可能会受到影响。相应地,这也限制了服务器的可用性和可伸缩性。
此外,如果以不同的方式使用大量数据集,则需要经常对静态数据执行维护操作。这可能会造成代价高昂的影响
相关文档:
查询速度慢的原因很多,常见如下几种
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创 ......
varchar和nvarchar如何选择:
varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的。中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节。虽然使用nva ......
1. 判断a表中有而b表中没有的记录
select a.* from tbl1 a
left join tbl2 b
on a.key = b.key
where b.key is null
虽然使用in也可以实现,但是这种方法的效率更高一些
2. 新建一个与某个表相同结构的表
select * into b
from a where 1<>1
3.betwee ......
先说说这些误区。所谓“误区”,有一些是新手很容易犯的错误或者很容易忽略的问题,另外一些,则是像“耗子吃了盐会变成蝙蝠”一样,让我们从小就认为是正确的事情。如下:
1、 表上不管用得着用不着,都加个聚集索引。
我们知道,表以两种方式组织物理存储:有聚集索引的“聚集表&r ......