最近想對乙個表進行分割槽,在sybase版轉了半天,沒找著詳細介紹表分割槽有關的帖子. 終於找著一篇比較詳細的,故貼之:
sybase ase表分割槽的使用
表分割槽是目前各主流資料庫都提供的常用技術,各大資料庫基於不同的體系結構提供了各具特色的實現,如果能合理使用這種技術,將為系統效能的提公升帶來意想不到的效果,本文以sybase ase資料庫為例來說明這種技術的使用方法。
在sybase ase中,未分割槽的不帶聚簇索引的表有乙個雙向的資料庫頁鏈鏈結。在插入資料行時,將查詢並鎖定頁鏈的最後一頁,如果最後一頁空間用盡,sybase ase將分配新的一頁,如果對錶進行大量頻繁的資料插入,將引起對最後一頁鎖資源的競爭,如果乙個事務(transaction)正在使用最後一頁的排它鎖,那麼其他向同一張表插入資料的事務必須等待,直到該事務結束釋放資源,解除排它鎖。
sybase ase從11.5開始提供新的特性表分割槽。表分割槽將產生附加的頁鏈,每個頁鏈有自己的最後一頁,這樣插入操作可以獲得多個最後一頁,實現併發操作,從而提高資料庫插入效能。若包含表的段分布在多個物理裝置上,表分割槽通過降低伺服器從快取記憶體向磁碟進行資料重新整理的i/o衝突而提高資料插入效能。對頻繁地追加資料到表中或進行大塊資料的拷入、拷出操作,採用表分割槽技術,將能極大地提公升系統效能。
劃分表分割槽的操作步驟如下:
1. 在同一資料庫裝置上劃分表分割槽時,先建立表,再用alter table 的 partition 語句劃分表分割槽。
create table opt_plnexrcd ( per_date datetime, per_sndstn char(4), ... )
alter table opt_plnexrcd partition 5
2. 在多個資料庫裝置上劃分表分割槽時,先建乙個資料庫段在多個資料庫上,然後再將表建在該段上,最後對錶分割槽。
sp_addsegment seg1, oil, oil_data1
sp_extendsement seg1, oil, oil_data2
...
sp_extendsement seg1, oil, oil_data5
create table opt_plnexrcd ( per_date datetime, per_sndstn char(4), ... ) on seg1
或建完錶後執行sp_placeobject:
sp_placeobject seg1, opt_plnexrcd
最後對錶分割槽:
alter table opt_plnexrcd partition 5
如果表分為5個分割槽,表所在的段又分跨5個資料庫裝置,那麼每個分割槽將分別對映到該段所在的5個資料庫裝置上。一般劃分表分割槽的原則是:表分割槽數等於或大於表所在段分跨的資料庫裝置數。但要注意有些表不能分割槽,它們是系統表、正在使用的表、臨時表和有聚簇索引的表。
sybase ase使用儲存在分割槽控制頁上的統計資料,來評測基於分割槽的並行掃瞄方式,以挑選最優執行計畫。如果表中資料在多個分割槽上是分布均衡的,表分割槽統計資料是精確的,那麼掃瞄效率就比較高,並行處理就有很好的效能,所以表分割槽的維護對於並行查詢處理十分重要。sybase ase的異常停止和某些情況下的事務回退都可能造成分割槽統計資料不精確,sybase ase提供了兩個系統函式data_pgs和ptn_data_pgs,用它們可分別計算資料頁面數量。如果兩者不相同,說明分割槽統計不精確,需要維護,sybase ase 提供如下命令來更新分割槽和頁面統計資料:
1.更新每個分割槽的頁面統計資料:
update partition statistics
2.更新表上索引的分布頁面,同時更新各個表分割槽的控制頁面的統計資料:
update all statistics table_name
3.顯示表分割槽的當前資訊:
sp_helpartition
如果對分割槽的表進行了大量的插入、更新和刪除後,資料有可能分布不均勻,使用bcp載入大量資料後,也可能會出現資料分布不均勻,此外一些其他原因也可能導致資料分布不均勻。平衡分割槽資料有兩種方法:一是對有資料的表建聚簇索引,二是使用並行塊拷貝,指定資料載入到某個分割槽的方法,sybase ase 新的bcp允許使用者指定分割槽,把資料載入到指定的分割槽中。
sybase裡面表分割槽的用法
sybase裡面表分割槽的用法 如果表進行頻繁的插入操作,通過分割表可以減少頁的競爭,提高資料的插入效能,若表所在段分布在多個物理裝置上,可降低伺服器從快取記憶體向磁碟進行資料重新整理的i o衝突而提高插入效能 1在同一物理裝置上分割表 成 4 部分 1 alter table table name...
sybase 表資料同步
環境 servername test1 databasename test1 tablename table11 server name test2 database name test2 table name table21 dsedit 加入同步伺服器設定 1 exec sp addserver...
Sybase常用表操作
sybase常用表操作 表建立 建立一名為 rds custom ftp 的表,並設定id gap為1000.create table rds custom ftp sid numeric 12,0 identity,sub no int not null,ftp url varchar 50 no...