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之分割槽表SQLServer
- HGDB的分割槽表實現SQL Server的分割槽檢視SQLServer
- SQL Server 表分割槽注意事項HXSQLServer
- SQL Server表分割槽刪除詳情DSCCSQLServer
- SQL Server大分割槽表沒有空分割槽的情況下如何擴充套件分割槽的方法SQLServer套件
- 使用SQL-Server分割槽表功能提高資料庫的讀寫效能SQLServer資料庫
- Oracle SQL調優之分割槽表OracleSQL
- oracle分割槽表和分割槽表exchangeOracle
- oracle分割槽表和非分割槽表exchangeOracle
- sql server 2005資料庫快照SQLServer資料庫
- 已安裝 SQL Server 2005 Express 工具。若要繼續,請刪除 SQL Server 2005 Express 工具SQLServerExpress
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- SQL Server 2005效能調整一(zt)SQLServer
- SQL Server 2005效能調整二(zt)SQLServer
- PG的非分割槽表線上轉分割槽表
- 【MYSQL】 分割槽表MySql
- 非分割槽錶轉換成分割槽表
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- 移動分割槽表和分割槽索引的表空間索引
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- MySQL 分割槽表探索MySql
- 分割槽表-實戰
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- 【Linux】MBR磁碟分割槽表只能有四個分割槽?Linux
- oracle 線上重新定義,普通表改變分割槽表,分割槽表可以更改型別、分割槽欄位等Oracle型別
- sql server 2005 資料修改的內部原理SQLServer
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- SQL SERVER資料庫檔案刪除、分割槽格式化解決方案SQLServer資料庫
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- Oracle分割槽表基礎運維-09刪除分割槽Oracle運維
- Oracle分割槽表基礎運維-05組合分割槽Oracle運維
- Oracle分割槽表基礎運維-02範圍分割槽Oracle運維
- Oracle分割槽表基礎運維-03HASH分割槽Oracle運維
- 分割槽表之自動增加分割槽(11G)
- ORACLE分割槽表梳理系列Oracle
- Spark操作Hive分割槽表SparkHive