數據庫設備與存儲空間管理

 一、概述
1.安裝初始化
初始安裝SQL Server時,安裝程序和腳本初始化主設備,並建立master、model、tempdb和sybsystemprocs數據庫。系統數據庫、預定義設備和段按下列默認方式組織:
a.master、model、tempdb數據庫安裝在主設備master上;
b.sybsystemprocs數據庫安裝在安裝時選擇的設備上(sysprocsdev);
c.爲每個數據庫創建三個預定義段:system、default和logsegment;
d.所有用戶創建數據庫的默認設備是master設備;
e.如果選擇安裝了審計數據庫sybsecurity,它位於自己的設備上。
2.設備與存儲管理考慮的主要問題
(1)恢復
物理磁盤崩潰時,磁盤鏡像或在單獨的物理設備上保存日誌爲數據庫恢復提供了兩種機制。
(2)性能
磁盤讀寫速度是I/O操作的瓶頸,正確地把數據庫對象放置到物理設備上有利於改進性能;
把日誌和數據庫對象置於單獨的設備上可以提高系統性能;
把表放在一個硬盤上而把索引放在另一個硬盤上,由於把工作分置於兩個硬盤驅動器上,所以可以確保物理讀寫速度加快;
磁盤鏡像會降低磁盤寫的速度。
二、設備(Device)
Sybase將數據庫中的所有數據存放在設備上。
1.設備的概念
設備是Sybase預先配置的專門存放數據庫的一塊連續的磁盤空間,並且它被映射到一操作系統文件或一原始磁盤分區上。它有兩個對應的名稱:邏輯名和物理名。NT僅支持設備映射到文件。
設備與數據庫之間的關係:多對多關係。一個數據庫可以被創建或擴充到多個設備上,一個設備也可以被用來存放多個數據庫。不同的設備操作系統可以對其並行地讀寫,因此我們可以人爲地將一個數據庫放置到多個數據庫設備上。
設備的分類:Database Device和Dump Device。數據庫設備存放數據庫和事務日誌,轉儲設備用來存放數據庫或日誌的備份。
2.設備的創建
命令語法:
DISK INIT
Name=’device_name’,
Physname=’physical_name’,
Vdevno=virtual_device_number
Size=number_of_pages
[…….]
舉例說明:
DISK INIT
Name=’My_Device’,
Physname=’D:/database/My_device.dat’,
Vdevno=3
Size=5000
註釋:邏輯名、物理名、設備虛擬號、設備大小

創建轉儲設備:
sp_addumpdevice{‘disk’|’tape’}
Logical_Name,
Physical_Name,
TapeSize

3.默認設備
在沒有指定設備的情況下,用戶創建的任何數據對象自動存放在默認設備上。
初始安裝後,系統的主設備master被預指定爲默認設備,因此要儘快創建自己的默認設備。確保以下設備不是默認設備:系統主設備、指定僅被日誌使用的設備。
Sp_diskdefault 設備名[,DefaultOn|DefaultOff]

4.磁盤鏡像
磁盤鏡像是出於數據庫安全性的考慮,當介質失敗時,磁盤鏡像能提供不間斷恢復。磁盤鏡像是磁盤上的數據的絕對拷貝。如果某一硬盤事故發生,則該被損壞的拷貝就自動變成離線狀態,因而所有的讀寫都被引向未被損壞的拷貝。
Sybase的磁盤鏡像是在設備級上進行的,因此磁盤鏡像實質上是設備鏡像。當對某一設備進行鏡像操作時,Sybase自動創建一個附加設備,由鏡像處理程序將原設備上的所有數據拷貝到鏡像設備上。
如果要使某一數據庫成爲鏡像,被分配給該數據庫的每一設備都必須成鏡像。Master設備在服務器中地位特殊,如果它損壞了,SQL Server將崩潰。因此,如果有可能總是要鏡像Master設備(在另一磁盤上)。
鏡像命令語法:
Disk Mirror
Name=’device_name’,//被鏡像的設備
Mirror=’physical_name’
[,writes=serial|noserial]
5.刪除設備
sp_dropdevice logical_name[,delfile]
含有數據庫的設備不允許刪除。
三、創建與使用段
   段(Segment)是數據庫設備上磁盤空間的邏輯組合,它可以看作是指向一個或多個數據庫設備的標籤。利用段可以控制數據庫對象的存放位置,可以將數據庫對象分類存放到不同的段上。
設備與段之間的關係:多對多關係。一個設備上可以創建多個段,一個段也可以覆蓋多個設備。
1.使用段的優點
a. 控制空間的使用:放在一個段上的數據庫對象不會在段外增長;
b. 提高性能:處於不同磁盤設備上的段可以並行地讀寫;
d.處理大表:利用段,可以將一個大表分段放在獨立的物理設備上,如將一個表的文本或圖象數據存儲另外的一個段上。
2.創建段
sp_addsegment 段名,數據庫名,設備名
說明:在指定設備上爲某個數據庫創建一個段。
●擴展段的範圍
 sp_exetendsegment 段名,數據庫名,設備名
說明:設備在數據庫中必須可用,否則需要擴展數據庫到新的設備上;指定的段、數據庫、設備必須存在。
●縮小段的範圍:
 sp_dropsegment 段名,數據庫名,設備名
說明:帶第三個參數時,該命令並不刪除段,只是段的範圍縮小了。若某個段包含了別的段要獨佔的設備,就需要縮小該段的範圍。
3.使用段
●兩個數據庫放在同一設備的不同段上,它們不會相互影響;
●當數據庫增加空間時,增加的空間會自動分配到它的每一個段上;
例如:alter database my_db
     on data_dev=50
在data_dev設備上爲my_db增加50M空間,這50M空間被自動分配到數據庫的每一個段中。注意:如果data_dev對於數據庫是新的,system和default段會自動擴展到該設備上。
可以使用alter database命令的log on選項分配附加的日誌空間。
(1)在段中創建新對象
create table 表名(列名 數據類型)[on 段名]
create [clusterd|non clusterd]index 索引名 on 表名(列名)[on 段名]
注意:按照定義,聚集索引總是與表放在同一段上。
(2)在段上放置現有對象
sp_placeobject 段名,對象名
注意:該命令並不把對象從一個數據庫設備移動到另一設備上,它隻影響未來的空間分配。
可以將某個大表的text字段或image字段放置到一個單獨的設備段上。
Sp_placeobject 段名,“表名.字段名”
(3)在段上創建聚集索引
按照定義,聚集索引總是與表放在同一段上。如果在一個段上創建表,而在另一個段上創建聚集索引,則其表與其索引一起移動,整個表將離開創建表的段而遷移到創建聚集索引的段中。通過這種方法,可以快速而方便地把指定表移動到指定的設備上。
(4)系統預定義段
當用戶創建一個數據庫時,Sybase自動創建三個預定義的段:
system段:存放系統表(包括所有用戶對象的定義)
default段:存放用戶創建的各種對象,除非它們明顯地指定到不同的段上。
Logsegment段:存放數據庫的事務日誌。
(5)刪除段
刪除段是縮小段範圍的一個特例:
sp_dropsegment 段名,數據庫名
4.使用閾值管理
閾值(Threshold)管理是一種自動監控數據庫自由空間的機制,Sybase的閾值管理允許用戶爲數據庫的某個段上的自由空間設置閾值並定義相應的存儲過程。當該段上的自由空間低於所置頭閾值時,Sybase自動運行相應的存儲過程。
在一個實際運行的數據庫中,日誌的增長速度一般要高於數據的增長,一旦日誌段的自由空間用盡,SQL Server在默認情況下會掛起所有數據操縱事務,客戶端應用程序停止執行。
在每個分離的段上存儲其事務日誌的數據庫均自動設置有最後機會閾值(Last Chance Threshold),其閾值是備份事務日誌所需的自由空間的估計值。當該段上的自由空間低於所置閾值時,Sybase自動運行名爲sp_thresholdaction的存儲過程。該過程的名稱及參數由系統預定義,內容由用戶編寫。下面是一個簡單示例。
CREATE PROCEDURE dbo.sp_thresholdaction
/*本過程參數通過位置傳遞,名稱可以改變,但其定義及順序不能變*/
@db_name varchar(30),/*數據庫名*/
@seg_name varchar(30),/*段名*/
@space_lefe int,/*剩餘自由空間*/
@status int/*最後機會閾值,其值爲1,其它閾值,其值爲0*/
AS
BEGIN
/*用戶編寫過程內容*/
dump transaction @db_name
with truncate_only

END

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章