資料分割槽例項概述

2021-05-27 20:03:17 字數 3768 閱讀 3029

1,分割槽作用:將資料分放到多個物理磁碟上,利用並行,多個磁碟同時吞吐以提公升io能力,同時每個分割槽資料量小,也減少了資料的掃瞄,提公升了命中速度。實際上表邏輯上並未拆分,只是分散儲存於不同的物理檔案上,相當於把一張表大資料無限極細化到多張表上,多個驅動上,但是訪問時卻還是一樣的訪問,因為本身並未新建任何表。

注:即使放到一塊磁碟上,因每個分割槽資料量小,掃瞄範圍減少,也能提高速度。

表分割槽方法:1,按時間分割槽:好處,查詢速度快。壞處:因當前資料一直寫到一塊分割槽上,故寫不快。

2,hash分割槽:資料均勻的分散到各分割槽,好處:因當前資料寫到不同分割槽,故寫快。但在查詢方面,要聯合多個分割槽,故查詢不快。

注:分割槽分為硬體與軟體分割槽,此頁是軟體分割槽。硬體分割槽指用磁碟陣列的方式分割槽,硬體負責將資料將到不同磁碟上,查詢與寫入速度都會提高。

操作:指定資料要分割槽的位置-建立檔案組及對應檔案, 資料以何種規則適移到分割槽上-建立分割槽函式, 進行資料遷移。

操作:指定資料要分割槽的位置-建立檔案組及對應檔案, 資料以何種規則適移到分割槽上-建立分割槽函式, 進行資料遷移。

步驟:/*1,指定資料存放位置:增加檔案組,並指定檔案存放位置*/

alter database brm_lvjian

add filegroup [gf_bdorder_50]

alter database brm_lvjian

add filegroup [gf_bdorder_100]

alter database brm_lvjian

add filegroup [gf_bdorder_150]

alter database brm_lvjian

add file ( name = n'gf_bdorder_50',

filename = n'g:\mssql_filegroup\bdorder_50.ndf' , size = 300mb , filegrowth = 10% )

to filegroup [gf_bdorder_50]

alter database brm_lvjian

add file ( name = n'gf_bdorder_100',

filename = n'i:\mssql_filegroup\bdorder_100.ndf' , size = 300mb , filegrowth = 10% )

to filegroup [gf_bdorder_100]

alter database brm_lvjian

add file ( name = n'gf_bdorder_150',

filename = n'i:\mssql_filegroup\bdorder_150.ndf' , size = 300mb , filegrowth = 10% )

to filegroup [gf_bdorder_150]

/*2,指定資料如何存放:建立分割槽函式*/

--left,right指定"="是在最左邊還是右邊

--left: <=1, 1<10<=20, >20

--right: <1,1<=10<20, >=20

create partition function [partitionfunc_bdorder] (int)

as range left for values ('500000','1000000')

select max(id) from bdorder

/*3,資料的遷移,應用分割槽位置與函式,為了方便,將二者合二唯一,提出分割槽架構的概念*/

create partition scheme [partitionscheme_bdorder]

as partition [partitionfunc_bdorder]

to ([primary],gf_bdorder_50,gf_bdorder_100,gf_bdorder_150)

--資料遷移到分割槽

alter table dbo.bdorder drop constraint pk_bdorder

alter table dbo.bdorder add constraint pk_bdorder primary key clustered (id)

on [partitionscheme_bdorder](id)

--恢復成原來的預設狀態,因原來的分割槽架構是primary,故修改表即可,如下:

alter table dbo.bdorder drop constraint pk_bdorder

alter table dbo.bdorder add constraint pk_bdorder primary key clustered (id)

on [primary]

/*查詢*/

--分割槽

select * from sys.partitions where object_id = object_id('dbo.bdorder')

--資料所在分割槽

select $partition.[partitionfunc_bdorder](1000000)

select top 20 id,orderno,orderdate,$partition.[partitionfunc_bdorder](id) from bdorder

order by newid()

--資料分布

select $partition.partitionfunc_bdorder(id) as partition_num,

min(id) as min_value,max(id) as max_value,count(1) as record_num

from dbo.[bdorder]

group by $partition.partitionfunc_bdorder(id)

order by $partition.partitionfunc_bdorder(id)

select * from

sys.partition_range_values

/*若資料量增大,需要增加分割槽,擴大範圍,操作如下*/

操作方法:增加分割槽,增加範圍

alter database [d] add filegroup [gf2]

alter database [wsbook] add file ( name = n'gf2', filename = n'e:\e\e1\dgf2.ndf' , size = 5mb , filegrowth = 10% )

to filegroup [gf2]

為架構新增範圍

alter partition scheme [d_partition_sheme]

next used gf2

這句話就是讓下乙個分割槽使用和現在已經存在的分割槽gf2分割槽中,

2.新增乙個範圍

alter partition function [d_partitionfunc]()

split range ('700000')

可以合併乙個範圍,其實就是刪除分割槽,如merge range(要刪除的原分割槽界點)

alter partition function [d_partitionfunc]() merge range ('400000')

3.查詢分割槽分布

select * from sys.partitions where object_id = object_id('dbo.b')

4.刪除分割槽

drop partition scheme [d_partition_sheme]

drop partition function [d_partitionfunc]

資料切分 MySql表分割槽概述

定義 表的分割槽指根據可以設定為任意大小的規則,跨檔案系統分配單個表的多個部分。實際上,表的不同部分在不同的位置被儲存為單獨的表。使用者所選擇的 實現資料分割的規則被稱為分割槽函式,這在mysql中它可以是模數,或者是簡單的匹配乙個連續的數值區間或數值列表,或者是乙個內部hash函式,或乙個線性ha...

資料切分 MySql表分割槽概述

定義 表的分割槽指根據可以設定為任意大小的規則,跨檔案系統分配單個表的多個部分。實際上,表的不同部分在不同的位置被儲存為單獨的表。使用者所選擇的 實現資料分割的規則被稱為分割槽函式,這在mysql中它可以是模數,或者是簡單的匹配乙個連續的數值區間或數值列表,或者是乙個內部hash函式,或乙個線性ha...

MySQL分割槽表概述

摘要 隨著mysql越來越流行,mysql裡面的儲存的資料也越來越大。在日常的工作中,我們會遇到一張表裡面儲存了上億甚至過十億的記錄。這些表裡面儲存了大量的歷史記錄。對於這些歷史資料的清理是乙個非常頭疼事情,由於所有的資料都乙個普通的表裡。所以只能是啟用乙個或多個帶where條件的delete語句去...