當前位置:編程學習大全網 - 編程語言 - 什麽情況下進行vsam split

什麽情況下進行vsam split

5。10。CI與CA的分裂(Split)

以前所討論的記錄的插入、增加和擴充,都是假定在控制區間 (C I)中存在著足夠的自由空間足以容納這些記錄。如果要插入的記錄並不能全都放在壹個 C I內,就會出現控制區間分裂(CI Split)。這時,VSAM會將這些數

據記錄連同它們的控制信息從已寫滿的控制區間移至同壹控制區域CA中空的控制區間CI中,並以適當的鍵序插入新的記錄。在指定的CA裏,當CI中的自由空間不能容納新記錄時,就要出現控制區域的分裂(CA Split),VSAM 會在文件的末尾處建立新的 CA。它可通過使用原來已經分配的空間來實現,也可以通過擴充文件而實現。

壹般而言,直接插入所引起的分裂,出現在CI和CA的中點位置,順序插入引起的分裂,則是出現在CI和CA的插入位置上。對於有足夠自由空間分布的文件,不應經常出現分裂。

--------------------

參考資料:

什麽是VSAM?

VSAM定義:

VSAM(Virtual Storage Access Method) 虛擬存儲訪問方法是壹種文件管理系統,它用於IBM的主機操作系統,如MVS,現在叫做OS/390。使用VSAM,企業可以通過他們輸入的有序指令來產生並訪問文件裏的記錄。它同樣可以保存並通過每個關鍵字來訪問每條記錄。許多公司開發了用於IBM主機的程序,它們仍然能訪問VSAM文件。VSAM之前的IBM文件訪問方法是SAM(有序訪問方法)和ISAM(索引有序訪問方法)。盡管壹些程序繼承下來的能力依然支持VSAM,但是IBM現在推薦使用關系數據庫管理系統DB2。

VSAM的數據組織:

所謂的文件組織形式,是指數據記錄在文件中的排列方式。而文件的存取方法是指從文件找到數據記錄的方法。VSAM 所使用的數據,均具有壹定的組織結構以及存取方法,用戶可以選擇三種類型的數據組織及其相應的存取方法:

1.鍵順序數據組織(Indexed Sequential Organization)

2.進入順序數據組織(Sequential Organization)

3.相對記錄數據組織(Relative Organization)

這三種數據組織所對應的數據集就分別稱為:

1.鍵順序數據集KSDS(Key Squenced Data Set)

2.進入順序數據集ESDS(Entry Squenced Data Set)

3.相對記錄數據集RRDS(Relative Record Data Set)

2.1. 鍵順序數據組織

2.1.1. 組織形式

在鍵順序數據組織中,邏輯記錄根據排序序列來存儲,起排序序列由記錄的主鍵內容決定,增加新的邏輯記錄以及刪除原有的邏輯記錄時,整個文件根據鍵的排序序列而限制在序列之中。鍵順序數據組織基本上與ISAM文件的組織相似,但VSAM並不使用溢出區。KSDS文件優於ISAM文件是由於:在壹定的範圍內,文件是自我重新組織的,因而平均探索時間實際上是壹個常數。

2.1.2. 存取方法

鍵順序數據組織允許四種類型的處理:

1.鍵控直接處理

(根據主鍵對單個邏輯記錄的處理)。

2.鍵控順序處理(在邏輯序列中根據主鍵對壹系列邏輯記錄的處理)。

3.直接訪問處理(根據在文件中的位置,對單個邏輯記錄的處理)。

4.順序訪問處理(在物理序列中,根據在文件中的位置,對壹系列邏輯記錄的處理)

2.2.進入順序數據組織

2.2.1.組織形式

在進入順序數據組織中,在物理上,邏輯記錄是以進入時的同樣次序存儲,新的邏輯記錄存儲在文件的末尾。這種數據組織基本上與SAM文件相似。

2.2.2.存取方法

進入順序數據組織只允許兩種處理類型:

1.直接訪問處理(根據在文件中的位置,對單個邏輯記錄的處理)。

2.順序訪問處理(在物理序列中,根據在文件中的位置,對壹系列邏輯記錄的處理)。

2.3.相對記錄數據組織

2.3.1.組織形式

在相對記錄數據組織中,邏輯記錄是根據記錄號、相對於文件的起始位置而存儲的。

相對記錄文件基本上是固定長度的槽(SLOT),每壹個槽都有壹個相對記錄號,從1開始。

2.3.2.存取方法

相對記錄數據組織允許兩種處理類型:

1.鍵控直接處理(根據主鍵對單個邏輯記錄的處理)。

2.鍵控順序處理(在邏輯序列中根據主鍵對壹系列邏輯記錄的處理)。

其中相對記錄號總是作為鍵來處理。

VSAM數據集:

為了滿足用戶的需要,程序員可以選擇不同的數據結構(數據集 / 文件)。

3.1.KSDS

與ISAM文件壹樣,KSDS文件根據用戶在每個記錄中所定義的鍵字段作為次序,也就是文件中的記錄根據在每個記錄中的鍵字段的排序序列而定位,每個記錄在鍵字段有唯壹的壹個值。VSAM使用與每個記錄相結合的鍵,把記錄插入到文件中,或者從文件中檢索記錄,記錄的存取次序可以是隨機的,也可以是順序的。VSAM文件可以有多個索引。這就是指文件中的記錄,既有主鍵,也有次級鍵(替換鍵),但最多能有253個次級鍵,可以是記錄中的任何字段,但必須有固定的長度和位置。替換鍵與主鍵壹樣具有同樣的功能,而且,與主鍵相比,替換鍵的鍵值不必是唯壹的值,因此在應用處理中允許用戶能充分利用其靈活性。

數據記錄 數據記錄 。。。。。 數據記錄

KEY10 KEY88 KEY1000

根據數據記錄的鍵順序而組織的鍵順序文件

3.2.ESDS

包含在文件中的記錄,是以當時進入的先後順序而存儲在ESDS中,而且,這種進入順序並不關心記錄的內容,由於沒有用鍵去標識該記錄,因而沒有建立主索引。但是,ESDS可以定義壹個或多個替換索引。記錄的次序是固定的,不會移動的.因此,將不會通過文件分配自由空間,新記錄的插入要放在文件的末端,同時也不能縮短、增長、刪除記錄,用戶要訪問這些記錄時,必須按其原來寫入記錄的次序而順序地訪問文件中的記錄。所以,從本質上來說,ESDS是順序文件,與SAM文件的處理方法類似。

3.3.RRDS

RRDS相對記錄文件也沒有索引,在其固定長度的槽串中,僅有其相對記錄號。相對記錄號從 1到N,其中N是能夠存儲在文件中最大的記錄數。每壹記錄占壹個槽,並且根據槽的相對記錄號而存儲或檢索記錄,而記錄的內容與進入的順序無關。在相對記錄文件中的記錄組成的控制區間中,正如它們進入順序文件或鍵順序文件壹樣,每個控制區間包含相同數量的槽,每個槽的大小就是記錄長度,由用戶在文件初始化定義時指定。

三種數據集的比較:

通過上面的描述可知,VSAM方法所用到的三種數據集(文件),存在著許多的不同之處。因此,在具體的使用中,應該建立哪壹種文件更利於處理,就需要視具體的情況而定。

下面是這三種文件的主要特性的比較:

類型 特征 KSDS ESDS RRDS

記錄長度 定長或變長 定長或變長 定長

記錄地址 可改變記錄的RBA 不可改變記錄的RBA 不可改變槽的相對記錄號

記錄位置 通過鍵字段而排序 按進入的物理順序排序 按相對記錄號排序

替換索引 可有壹個或多個 可有壹個或多個 沒有

跨越記錄 可有 可有 不可

存取方式 順序或直接存取。 根據鍵或RBA直接存取。 順序或直接存取。 除非

建立了替換索引,否則只根據RBA直接存取。 順序或直接存取。 根據RBA(視為鍵)直接存取。

空間回收 可插入或刪除記錄。 可回收被刪除記錄的空間重用。 不可插入或刪除記錄。 但可用同等長度的記錄置換而重用該空間。 可刪除記錄。 可插入同壹相對記錄號的新記錄重用該空間。

自由空間 可使用文件的自由空間,用以增加記錄或者改變記錄的長度。 文件末端的空間可用來增加記錄,但不能改變記錄的長度。 文件中空的槽可用來增加 記錄,但不能改變記錄的長度。

VSAM的物理結構與邏輯結構:

5。1。控制區間(CI)

控制區間CI(Control Interval)是DASD中連續的區域。在該區域內,VSAM存儲數據記錄及描述這些數據記錄的控制信息。

CI是VSAM方法在虛存(Virtual Storage)和外存(DASD)之間傳送數據信息的基本單位。每個CI由壹個以上的定長或變長的邏輯記錄、自由空間、及描述本CI數據存放和空間使用情況等控制信息所組成。不同的文件其CI的長度可以不同。但在給定文件的每個CI,都具有同樣的長度,並且這個長度不能改變,對於CI長度的優化設計應該視文件性質而定。CI的長度將取決於:

1。數據記錄的最大長度

2。提供給VSAM的I / O緩沖區的虛存空間的數量

3。用於存放文件的DASD設備的類型

CI的大小必須是512字節的倍數,若大於4096字節,則必須是2048字節的倍。但不管選擇哪壹種數量

級的倍數,每個CI的最大範圍只能是32768個字節(這是因為最合適的長度應該是壹個磁道的長度)。

通常,CI包含完整的物理記錄,VSAM根據CI的大小而選擇相應的物理記錄的長度。對於壹般的DASD設備,可接受的物理記錄的長度是512、1024、2048、4096字節。對於已定的CI,VSAM能夠使用到它的最大的物理記錄。

例如:如果CI是1024字節,VSAM可以使用1024字節的物理記錄;

如果CI是1536字節,VSAM只能把512字節作為物理記錄的長度,這是因為物理長度必須是同壹物理長度。所以,對於任何已給定的文件,每個CI的物理記錄的長度和數量,都是VSAM所決定的。雖然,每個CI裏的物理記錄數量是固定的,但是邏輯記錄的數量卻是可以改變的。而且,在CI內,物理記錄與邏輯記錄在數量上不存在著相互的關系。選擇CI的大小雖然要視乎其本身定義所在的DASD設備類型而定,卻不受這些設備類型的限制。壹些CI適合於某壹種磁盤設備的磁道,但如果要把VSAM文件寫到另壹類的磁盤中,它也可以擴充而跨磁道。

5。2。控制區域(CA)

在VSAM文件中,CI組成更大的結構-----控制區域CA(Control Area),文件中的每個CA都有同樣數量與大小的CI,若幹個CI構成CA。CI的數量由VSAM所決定。

CA是直接存取空間的單位。要把記錄加入文件的末端時,VSAM就要對CA進行格式化。擴充文件時,CA也隨之擴充,這種擴充必須是整數量級的擴充。

換言之,在DASD裏,CA都是定長的,當VSAM要擴充壹個文件的空間時,就將得到壹個或者若幹個CA。

通常,CA總是占據整數量級的磁道,實際上在包含文件的設備中,CA將占有整個柱面(Cylinder),並從其柱面邊界開始占據。

VSAM在分配空間時都要在每壹個CA裏留壹定的空白的、自由CI,以利於文件的擴充。

5。3。存儲記錄

在VSAM文件中,KSDS和ESDS所使用的記錄,可以是定長或變長的,而 RRDS 只能用定長記錄。VSAM在處理這三種類型的文件記錄時都是采用同樣的方法:把數據記錄存放在CI的開始位置上,把描述這些記錄的控制信息放在CI的末端處。因此,雖然數據記錄及其本身的控制信息之間的結合,在物理上通常並不是鄰接的,但是作為壹個完整的信息,就稱之為“存儲記錄”通常情況下,存儲記錄不應跨越CI,因此在定義VSAM文件時,為了使CI能夠存放最大的存儲記錄,應該指定足夠的緩沖空間,這種非跨越記錄的最大邏輯記錄的長度為32768字節。

5。4。跨越記錄(Spanned)

鍵順序數據記錄和進入順序數據記錄的長度如果超出CI,但又不能把它們分為幾部分,或者為了使這些記錄適合於 CI 的大小而又不重新格式化,那幺,這些記錄可以跨越或擴充至壹個或多個 CI 邊界,但在跨越之前,程序員應在定義文件時指定選擇項“SPANNED”,這壹類記錄就稱之為“跨越記錄”。

跨越記錄從其CI邊界開始,並寫滿CA中的壹個或多個CI,包含跨越記錄的最後部分的 CI, 可以存到還沒有使用的空間,但是這個空間只能用於擴充跨越記錄,而不能包含其它記錄。

5。7。目錄(Catalog)

在VSAM目錄中,有兩種目錄:主目錄(Master Catalog)和用戶目錄(User Catalog)VSAM需要壹個主目錄,卻可以有任意多個用戶目錄。用戶目錄由主目錄指向並且具有和主目錄相同的功能與結構。引入主目錄和用戶目錄的主要目的是提高數據的完整性、卷的可移植性。每個VSAM目錄都存放於單個卷上並占有所駐的卷,當然,目錄也可以占有幾個卷,但是壹個卷只能為壹個目錄所占有。所有VSAM文件,若存在於卷中,則必須編目到目錄中。VSAM目錄包含了所有VSAM文件的集中的信息、所在卷的有關信息,如VSAM文件分配的數據空間等。由上圖可見:VSAM主目錄是用來指引各個用戶目錄,當VSAM 要用壹個用戶目錄時首先查找VSAM主目錄。而VSAM提供多個用戶目錄,每個用戶目錄都是獨立的,控制了它的數據空間與文件,即這個用戶所定義的每個VSAM文件與數據空間都要在這個用戶目錄上有壹個進入點。壹個VSAM文件在其用戶目錄進入點有如下信息:文件的位置及其屬性(如記錄長度、鍵位置)、文件的壹些動態信息(如文件建立後插入的記錄數、控制區間分裂的個數等)。

5。10。CI與CA的分裂(Split)

以前所討論的記錄的插入、增加和擴充,都是假定在控制區間 (C I)中存在著足夠的自由空間足以容納這些記錄。如果要插入的記錄並不能全都放在壹個 C I內,就會出現控制區間分裂(CI Split)。這時,VSAM會將這些數

據記錄連同它們的控制信息從已寫滿的控制區間移至同壹控制區域CA中空的控制區間CI中,並以適當的鍵序插入新的記錄。在指定的CA裏,當CI中的自由空間不能容納新記錄時,就要出現控制區域的分裂(CA Split),VSAM 會在文件的末尾處建立新的 CA。它可通過使用原來已經分配的空間來實現,也可以通過擴充文件而實現。

壹般而言,直接插入所引起的分裂,出現在CI和CA的中點位置,順序插入引起的分裂,則是出現在CI和CA的插入位置上。對於有足夠自由空間分布的文件,不應經常出現分裂。

5。11。VSAM數據結構

通常,ISAM的數據結構是根據磁盤柱面及磁道的物理單元而定的。而VSAM的數據結構卻是根據CI及CA的邏輯單元而定。CI是直接存取存儲器的單位,它將數據信息傳送給虛擬存儲器,或從虛擬存儲器中把數據信息傳送過來。VSAM的數據結構提供了設備的獨立性,減少了程序員對數據和索引的物理特性的關註,從而為應用編程帶來了方便。

AMS實用程序:

1、用於建立和維護VSAM數據集和世代數據集。

2、當使用VSAM數據集或維護系統目錄時,必須使用AMS命令。

3、AMS命令分兩類:

功能命令,如定義數據集,列表目錄等;

輔助命令,作用是設置條件執行功能。

4、AMS實用程序的調用模式

使用AMS主要有TSO環境下通過AMS命令及利用JCL調用方法。JCL調用模式:

//JOB1 JOB

//JOBCAT

DD

// DSNAME=DB.DATA,DISP=SHR

//STEP EXEC PGM=IDCAMS

//SYSPRINT DD

SYSOUT=*

//SYSIN DD *

COMMAND parameters…

/*

註:

JOBCAT DD語句定義壹個目錄名;

EXEC 語句指出AMS程序名為IDCAMS;

SYSPRINT DD語句指定系統的輸出信息;

SYSIN DD 語句為IDCAMS提供各種AMS命令;

5、AMS命令及功能

ALTER:修改數據集和目錄屬性;

BLDINDEX:建立輔助索引;

DEFINE ALIAS:為目錄或數據集建立別名;

DEFINE

ALTERNATEINDEX:定義輔助索引;

DEFINE CLUSTER:為VSAM數據集定義簇;

DEFINE GENERATION DATA GROUP:為世代數據集定義編目入口;

DEFINE NONVSAM:為非VSAM數據集定義編目入口;

DEFINE PAGE SPACE:定義系統頁空間數據集;

DEFINE PATH:定義連接輔助索引與主數據集的路徑;

DEFINE USER CATALOG:定義用戶目錄;

DELETE:刪除目錄、VSAM及非VSAM數據集;

EXPORT:中斷用戶目錄與主目錄的聯系;

IMPORT:接通用戶目錄與主目錄的聯系;

LISTCAT:列表編目內容;

PRINT:打印

VSAM、非VSAM數據集及目錄內容;

REPR拷貝VSAM、非VSAM數據集及目錄,分類及綜合編目功能

Example : Define a key-

sequenced data set

DEFINE CLUSTER ( NAME(CUSTOMER.MASTER.FILE) -

OWNER(DLOWE2) -

INDEXED -

RECORDSIZE(200 200) -

KEYS(9 12) -

VOLUMES(MPS800) -

UNIQUE -

FREESPACE(20 10) -

SHAREOPTION(3) -

SPANNED -

IMBED) -

DATA ( NAME

(CUSTOMER.MASTER.FILE.DATA) -

CYLINDERS(50 5) -

CISZ(4096) -

INDEX ( NAME(CUSTOMER.MASTER.FILE.INDEX)

)

1--CYLINDERS(primary[ secondary])

RECORDS(primary[ secondary])

TRACKS

(primary[ secondary])

用以定義VSAM文件的空間,其中CYLINDER,TRACK,RECORD為單位,現在我們的磁盤中

1CYLINDER = 849960 BYTE,1TRACK=56664BYTE,1CYLINDER=15TRACK,而RECORD的大小則由RECORDSIZE參數決定。另外,primary為初次分配空間,secondary為每次extend時分配空間,VSAM會根據兩者中的最小值計算CA的大小,但CA最大不大於1CYLINDER。對於本系統,每個VSAM DATASET允許extend 123次(當使用了REUSE參數時只允許extend 16次)。另用RECORDS定義有利於空間計算,但用此方式 定義文件會影響CA的充分使用,希望不采取此方式定義文件。

2---RECORDSIZE(average maximum)

用以定義每個記錄的大小,average為平均記錄長度,maximum為最大記錄長度,應註意的是在不指定SPANNED參數時,每個記錄的最小值是1BYTE,最大值是32761BYTE。(SPANNED指定允許記錄跨CI)

3---INDEXED|NONINDEXED|NUMBERED

用以定義VSAM文件的類型,INDEXED指定KSDS,NONINDEXED指定ESDS,NUMBERED指定RRDS。

4---SHAREOPTIONS(crossregion[ crosssystem]|1 3)

用以定義VSAM文件的***享類型,對於現役系統,暫時只有第壹個數有意義(同壹主機下的***享),其中1代表允許並發的讀請求或單個的更新請求,2代表允許並發的讀請求和單個的更新請求同時發生。

對於1,系統能確保讀寫的數據完整性,對於2,系統確保寫的數據完整性,但不確保讀的數據完整性。 另外,由於3和4 VSAM並不確保寫的完整性,暫不在考慮之列,基於本系統的特點,建議此參數選 SHAREOPTIONS(1,3)。

5---CONTROLINTERVALSIZE

(size)用以定義CI的大小,若在DEFINE CLUSTER時指定,則此定義自動影響到DATA和INDEX的定義,或在 DATA和INDEX中分別指定。應該註意的是在不指定SPANNED參數時,此參數應大於等與最大記錄長度+7(見RECORDSIZE定義)。壹般,對於經常作連續記錄處理的文件應選較大的CI,對於經常作離散記錄 處理的文件應選較小的CI。由於指定此參數需要有壹定的經驗和技巧,建議不指定此參數,讓系統根據文件的平均記錄長度和最大記錄長度自動計算適宜的數值。

6--- BUFFERSPACE(size)

定義BUFFER的最小值。VSAM會利用此參數計算CI的大小,若不指定此參數,VSAM默認BUFFER為兩個DATA CI和壹個INDEX CI(KSDS)。

7---REUSE

當指定了REUSE參數時,VSAM文件能在不delete define的情況下重新使用,但應註意的是, 定義了REUSE參數的VSAM文件只能extend 16次,並不能定義KEYRANGE,UNIQUE參數。

8---FREESPACE(CI-percent[ CA-percent]|0 0)

CI-percent定義每個CI中預留空間的百分比,CA-percent定義每個CA中預留空間的百分比。此參數壹般用於經常有記錄插入的VSAM文件,以避免經常發生的CI SPLIT和CA SPLIT。建議對於不會發生記錄插入的文件,不定義此參數,對於會發生記錄插入的文件,按記錄插入的頻繁度定義此參數。

9---SPEED

當指定SPEED參數時,空VSAM文件在首次記錄載入時並不預格式化其數據部分,從而加速了首次記錄載入的過程。但需註意的是,此參數只在首次記錄載入時起作用,以後取而代之的是RECOVERY參數(雖然在DEFINE時選定了SPEED),因此,建議不使用SPEED(系統默認參數是RECOVERY)。

10---REPLICATE

當指定了此參數時,每個INDEX SET的記錄都會重寫多次,直到寫滿壹個TRACE,因此,INDEX的搜索速度會加快,但也會帶來磁盤空間的增加。(見附圖)

11---IMBED

當指定此參數時,每個CA的SEQUENCE SET都會從INDEX中分離出來,寫入每個CA的第壹個TRACK。 此參數的可讓我們將INDEX SET放在高速設備上,而SEQENCE SET放在低速設備上。而且,在我們的硬盤上有CACHE,SEQUENCE SET壹般都已讀入CACHE,設此參數並不能提高性能。所以建議不使用IMBED。

  • 上一篇:計算機論文的寫作指導
  • 下一篇:高中生不上大學,學什麽專業比較好?
  • copyright 2024編程學習大全網