SQL SERVER 2005表分割槽功能
為什麼要分配表:
為了改善大型表的可伸縮性和可管理性。
當在多個表或伺服器上分割資料時,因為需掃描的資料較少,所以只訪問一部分資料的查詢執行得較快。如果表位於不同的伺服器或一臺多處理器的計算機上,同樣可以對查詢所涉及的表進行同時掃描,從而改進查詢的效能。此外,象索引重建或表備份這樣的維護任務可更快地執行。
分割槽帶來幫助:
當表和索引變得非常大時,分割槽可以將數分為更小,更容易管理的部分,從而提供一定的幫助。
如果具有多個CPU的系統中存在一個大型表,則對該表的分割槽可以通過並行操作獲得更好的效能。
SQL SERVER 2000中的分割槽檢視:
在SQL server 2000中,資料修改語句可以受益於檢視功能,由於修改語句可以使用相同的分割槽檢視結構,因此,SQL SERVER 可以通過檢視將修改定向至相應的基礎表。
允許在多個伺服器之間分佈這些檢視,並直接通過檢視更新資料庫表。
SQL SERVER 2000 中的分割槽檢視:
SQL SERVER 2000區分本地檢視和分散式檢視。在本地分割槽檢視中,所有的參與表和檢視駐留在同一SQL SERVER例項上。在分散式分割槽檢視中,至少有一個參與表駐留在不同的(遠端)伺服器上。
建立基本步驟:
1、 在實現分割槽檢視之前,必須先水平分割槽表。原始表初分成若干個較小的成員表。每個成員表包含與原始表相同數量的列。
2、 成員表設計好後,每個表基於鍵值的範圍儲存原始表的一塊水平區域。鍵值範圍基於分割槽列中的資料值,每一成員中的值範圍通過分割槽列上的CHECK約束強制,並且範圍之間不能重疊。
3、 在建立成員表後,在伺服器上定義一個分割槽檢視。
建立事例:
//ServerA
Use pubs
go
Create table customers (
Customerid varchar(5) not null,
CompanyName varchar(50) not null,
ContactName varchar(30) null,
CONSTRAINT PK_customers PRIMARY KEY CLUSTERED (Customerid),
CONSTRAINT CK_customerid CHECK (Customerid between 'AAAAA' and 'LZZZZ')
)
//Server B
use pubs
go
Create table customers (
Customerid varchar(5) not null,
CompanyName varchar(50) not null,
ContactName varchar(30) null,
CONSTRAINT PK_customers PRIMARY KEY CLUSTERED (Customerid),
CONSTRAINT CK_customerid CHECK (Customerid between 'M' and 'ZZZZZ')
)
go
//ServerA
exec sp_addlinkedserver
@server='DPVSERVER1', @srvproduct='',
@provider='SQLOLEDB', @datasrc='ServerB'
go
exec sp_addlinkedsrvlogin
@rmtsrvname = 'DPVSERVER1'
, @useself = 'false'
, @rmtuser = 'sa'
, @rmtpassword = 'password'
go
//ServerB
exec sp_addlinkedserver
@server='DPVSERVER2', @srvproduct='',
@provider='SQLOLEDB', @datasrc='ServerA'
exec sp_addlinkedsrvlogin
@rmtsrvname = 'DPVSERVER2'
, @useself = 'false'
, @rmtuser = 'sa'
, @rmtpassword = 'password'
go
//ServerA
Exec sp_serveroption 'DPVSERVER1', 'lazy schema validation', 'true'
//Sever B
Exec sp_serveroption 'DPVSERVER2', 'lazy schema validation', 'true'
//Server A:
Create view DPV_Customers As
Select * from Customers
Union all
Select * from DPVSERVER1.Pubs.dbo.Customers
//Server B
Create view DPV_Customers As
Select * from DPVSERVER2.Pubs.dbo.Customers
UNION ALL
Select * from Customers
set xact_abort on
INSERT INTO DPV_CUSTOMERS VALUES('AAMAY','FUZHOU COMPANY','MARRY')
INSERT INTO DPV_CUSTOMERS VALUES('CJOHN','XIMEN COMPANY','MARRY')
INSERT INTO DPV_CUSTOMERS VALUES('SMITH','SHANGHAI COMPANY','TOM')
INSERT INTO DPV_CUSTOMERS VALUES('YOUNG','FUJIAN COMPANY','JANE')
INSERT INTO DPV_CUSTOMERS VALUES('GTOPP','BEJING COMPANY','TOM')
INSERT INTO DPV_CUSTOMERS VALUES('QUILH','BEJING COMPANY','TOM')
//SELECT * FROM DPV_Customers order by customerid
//SELECT * FROM DPV_Customers WHERE CustomerID= 'QUILH'
Sql SERVER 2005的分割槽功能增強:
Sql server 2000中並沒有簡化分割槽管理、設計。而且分割槽數目增加,查詢優化時間上升。
SQL SERVER 2005中的分割槽表:
SQL 2005提供了在資料庫中的檔案組之間表分割槽的功能,水平分割槽允許氫表按分割槽scheme分為多個小的組。表分割槽用於非常大的,從幾百GB到TB甚至更大的資料庫。
通過SQL 2005中的分割槽表,可以對錶進行設計(使用函式和架構),從而將具有相同分割槽鍵的所有行都直接放置到(且總是轉到)特定的位置。函式用於定義分割槽邊界以及放第一個值的分割槽。在使用LEFT分割槽函式時,第一個值將作為第一個分割槽中的上邊界,在使用RIGHT分割槽函式時,第一個值將作為第二個分割槽的下邊界,定義函式後即可建立分割槽架構,分割槽架構可以將物件對映到一個或多個檔案組。為了確定資料的相應物理位置,分割槽架構將使用了分割槽函式。根據表分割槽架構建立表。
alter database adventureWorks add filegroup [fg1]
go
alter database adventureWorks add filegroup [fg2]
go
alter database adventureWorks add filegroup [fg3]
go
alter database adventureWorks
add file
(name='fg1',
filename='c:"fg1.ndf',
size=5mb)
to filegroup [fg1]
go
alter database adventureWorks
add file
(name='fg2',
filename='d:"fg2.ndf',
size=5mb)
to filegroup [fg2]
go
alter database adventureWorks
add file
(name='fg3',
filename='e:"fg3.ndf',
size=5mb)
to filegroup [fg3]
go
use adventureWorks
go
Create partition function emailPF(nvarchar(50)) as range right for
values ('G','N')--建立分割槽函式,A-F"G-N"M-Z
go
Create partition scheme emailPS as partition emailPF to (fg1,fg2,fg3)--
建立分割槽架構
go
Create table customermail (custid int, email nvarchar(50)) on emailPS
(email)--建立分割槽表
go
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-591579/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 2005分割槽表例項SQLServer
- SQL Server表分割槽SQLServer
- SQL server 分割槽表SQLServer
- SQL Server2005 表分割槽三步曲SQLServer
- SQL SERVER之分割槽表SQLServer
- SQL Server 2005 中的分割槽表和索引應用SQLServer索引
- Sql Server 2005資料庫分割槽SQLServer資料庫
- Sql Server系列:分割槽表操作SQLServer
- SQL Server表分割槽詳解SQLServer
- sql server 小記——分割槽表(上)SQLServer
- SQL Server表分割槽操作詳解SQLServer
- 關於SQL Server的分割槽表SQLServer
- SQL Server 2005分割槽表幾何倍數提高網站效能SQLServer網站
- HGDB的分割槽表實現SQL Server的分割槽檢視SQLServer
- SQL Server 表分割槽注意事項HXSQLServer
- SQL Server表分割槽刪除詳情DSCCSQLServer
- sql server針對表增加新的分割槽SQLServer
- SQL Server 表分割槽(partitioned table/Data Partitioning)SQLServer
- SQL Server大分割槽表沒有空分割槽的情況下如何擴充套件分割槽的方法SQLServer套件
- sql server 2005中的分割槽函式用法(partition by 欄位)SQLServer函式
- ORACLE 11G分割槽表新功能:列表--範圍分割槽Oracle
- oracle實用sql(14)--查詢分割槽表的分割槽列和子分割槽列OracleSQL
- Oracle SQL調優之分割槽表OracleSQL
- oracle分割槽表和分割槽表exchangeOracle
- 使用SQL-Server分割槽表功能提高資料庫的讀寫效能SQLServer資料庫
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- oracle分割槽表和非分割槽表exchangeOracle
- SQL Server 2005 功能比較 和 限制SQLServer
- Oracle分割槽表及分割槽索引Oracle索引
- INTERVAL分割槽表鎖分割槽操作
- 全面學習分割槽表及分割槽索引(9)--刪除表分割槽索引
- 全面學習分割槽表及分割槽索引(11)--合併表分割槽索引
- 全面學習分割槽表及分割槽索引(12)--修改list表分割槽索引
- 學習筆記】分割槽表和分割槽索引——新增表分割槽(二)筆記索引
- Oracle 是分割槽表,但條件不帶分割槽條件的SQLOracleSQL
- 如何查詢分割槽表的分割槽及子分割槽
- 使用split對分割槽表再分割槽
- 簡單ORACLE分割槽表、分割槽索引Oracle索引