您的位置:首页 > 数据库

最近学习SQL SERVER,关于表的分区有点体会,请大家拍砖

2008-06-05 17:38 411 查看
创建带分区的数据表步骤:

1,建立数据库里指定文件组FILEGROUP[分区文件名](NAME=‘’,FILENAME=‘’,SIZE=,MAXSIZE=,FILEGROWTH=)

2,创建分区表函数,可以理解为一个规则。CREATE PARTITION FUNCTION[函数名](用来分区的字段的类型)AS RANGE LEFT FOR VALUES(范围值)

3,创建分区架构,即将分区函数应用到分区文件组里面去CREATE PARTITION SCHEME[架构名] AS PARTITION [分区函数名] TO(分区文件名,分区文件名,分区文件名,分区文件名);

4,创建表结构CREATE TABLE (ID INT NOT NULL,COLUMN。。。) ON [分区结构名](用来分区的字段名)

完整示例地址:http://www.cnblogs.com/jackyrong/archive/2006/11/13/559354.html

对现有数据库进行分区操作有待考究

附带,对表进行分区的好处:

数据库的整体结构

数据库文件

|—数据分区

|—数据页(8种类型)

页的大小为 8 KB。这意味着 SQL Server 数据库中每 MB 有 128 页

区是管理空间的基本单位。一个区是八个物理上连续的页(即 64 KB)。这意味着 SQL Server 数据库中每 MB 有 16 个区。

当一个查询没有合适的索引的时候就会进行全表扫描(table scan),如果有合适的索引的话就会按索引进行查找(seek)。

索引的结构是按B-树结构来存储,而且SQL维护着树的平衡,也就是说,每次搜索都会遍历相同的层级数。

当数据越来越大,数据分区内的第一个索引页也就是索引B树的根,所属的下级子节点越来越多,索引的层级数会越来越大,索引查询也会越来越慢。

对表进行分区可以把数据索引页分到不同的区中,也就是形成了多个B树结构,就减少了树的层级数,而且把不同的数据库文件放到不同的物理磁盘中,提高了IO性能,使大数据量的查询更快
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: