首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> ASP.NET >> 正文

Sql Server2005 实现Oracle10g的hash表分区功能

        最近学习Oracle中,在其有hash表分区功能,就在想sql server 有类似分区吗,查了一些资料,发现没有介绍,在2005中目前只支持列表和范围分区。

        以前只知道Sql Server有hash索引,本文就在Sql Server中实现Oracle里的hash表分区。在oracle 10g的hash分区保持分区数据的均匀,分的区个数是2的倍数分区才可以实现。

        前段时间做了一个试验,实现了在sql server 2005的分区并保证了在hash分区中数据的分布均匀。

        现在我们看具体实例:

        Hash分区:将表数据均匀的分成4个区。

        建立分区函数:数据如何分区(逻辑设计)

         CREATE PARTITION FUNCTION [zping.com.PF](int) AS
        RANGE LEFT FOR VALUES (-1073741824, 0, 1073741824)

        注意:我们这里使用的int型数据,因为hash函数是checksum(id),这里根据int的最大长度进行分区,我们使用2,147,483,648/2=1073741824

        这里:Range left 意思: <=

              Range right 意思: <

        创建分区方案:分区数据如何物理存放(逻辑设计)

         CREATE PARTITION SCHEME [zping.com.Ps] AS PARTITION [zping.com.PF] all TO ([PRIMARY])

        这里的all TO ([PRIMARY]) 意思是将分区数据将存储于主文件组中

        建立分区表:

         CREATE TABLE [dbo].[zping.com](
            [id] [varchar](32) NOT NULL,
            [sid] int,
            [hashid] AS (checksum([id])) PERSISTED
        )
        ON [zping.com.Ps] ([hashid])

        注意:1,这里我们使用了计算列的做为分区列,在SQL server 2005中,分区列如果是计算列,必须PERSISTED持久化

              2,我们这里使用了checksum(列)这个哈希函数,该函数用来计算id的hash值,这个函数同时可以用来建立hash索引

        插入1万条测试数据:

         insert into [zping.com](id,sid)
        select replace(newid(),'-',''),1
        from (select top 100 * from syscolumns) a
        ,(select top 100 * from syscolumns) b

        查看数据的分布分区情况:

         SELECT
            $partition.[zping.com.PF](hashid)
               AS 分区号,count(*) 数据条数
        FROM [zping.com]
        group by $partition.[zping.com.PF](hashid)

 

[1] [2] 下一页

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航