1樓:一灘新約
1.內部碎片:
當一個程序裝入到固定大小的分割槽塊(比如頁)時,假如程序所需空間小於分割槽塊,則分割槽塊的剩餘的空間將無法被系統使用,稱為內部碎片。
2.外部碎片:
指的是還沒有被分配出去(不屬於任何程序),但由於太小了無法分配給申請記憶體空間的新程序的記憶體空閒區域。
3.儲存管理中都可能產生的碎片:
除了內部碎片和外部碎片,在「分頁儲存」中,可能產生「頁內碎片」,頁內碎片是由於程序的最後一頁經常裝不滿一塊而形成了不可利用的碎片。
擴充套件資料
在資料儲存領域中,碎片(fragmentation)是指儲存空間使用效率低下,結果導致功能、執行效率變低或二者兼而有之的現象。碎片化所造成的影響取決於具體的儲存系統以及碎片化的種類。
大部分情況下,碎片化都會導致都會導致儲存空間的浪費,此時「碎片」一詞亦可指代閒置的空間本身。對於其他的一些系統來說(比如fat檔案系統),資料量一定的前提下,用於儲存資料所佔的儲存空間是一定的,和碎片化的程度無關。
2樓:黑夜中的風
內部碎片_(在資料頁內部)產生的碎片
外部碎片_(在資料頁外部)產生的碎片
在這裡,假設群集索引中的碎片會導致所有其他索引中產生碎片,因為群集索引(cluster index)被作為「群集關鍵字(cluster key)」與所有其他的在其上構造的非群集索引(non-clustered index)一起使用。我使用帶有tablesresult子句的dbcc showcontig語句來查詢產生的結果表,以列出所有包含內部碎片或者外部碎片的表的名字,其中內部碎片低於一個給定的可接受的掃描密度百分比,外部碎片大於一個給定的外部碎片百分比。
對於像sybase這樣的大型dbms系統而言,作為oltp(聯機事務處理)應用的基石,它需要能每天24小時,每年365天不間斷執行。由於其應用程式每天對資料庫進行大量的插入、更新、刪除等操作,在資料庫的物理儲存介質上產生了大量儲存碎片,從而影響了儲存的效率以及資料庫應用執行的速度。是否可以像windows作業系統的「碎片整理」程式一樣,整理這些碎片,從而優化資料庫儲存,提高資料庫的執行速度呢?
答案是肯定的。本文將介紹sybase資料庫的碎片型別以及碎片整理方法。
碎片型別
由於sybase是通過oam頁、分配單元和擴充套件頁來管理資料的,所以對oltp應用的database server會十分頻繁地進行資料刪除、插入和更新等操作,時間一長就會出現以下幾種情況:
1. 頁碎片
即本來可以存放在一個頁上的資料卻分散地儲存在多個頁上。如果這些頁儲存在不同的擴充套件單元上,database server就要訪問多個擴充套件單元,因此降低了系統效能。
2. 擴充套件單元碎片
在堆表中,當刪除資料鏈中間的記錄行時,會出現空頁。隨著空頁的累積,擴充套件單元的利用率也會下降,從而出現擴充套件單元碎片。帶cluster index的table也有可能出現擴充套件單元碎片。
當有擴充套件單元碎片存在,會出現以下問題:
對錶進行處理時,常常出現死鎖;
利用較大的i/o操作或增加i/o緩衝區的大小也無法改變較慢的i/o速度;
行操作的爭用。
3. 擴充套件單元遍歷
帶有cluster index的table會由於插入記錄而導致頁**,但當刪除記錄後,頁會獲得釋放,從而形成跨幾個擴充套件單元和分配單元的資料,而要訪問該資料就必須遍歷幾個擴充套件單元和分配單元。這將導致訪問/查詢記錄的時間大大延長,開始時資料庫的效能雖然較高,但使用一段時間後效能就會下降等問題。
實際上,資料在儲存空間上排列得越緊密有序,database server訪問的速度就越快,消除碎片有助於提高系統的效能和更有效地利用資料儲存空間。
碎片優化方法
處理碎片有多種方法,如重新定義table的填充因子,根據table的定義刪除並重新建立索引、重建表等。
本文給出的方法是通過bcp實用程式將使用者資料庫的資料以文字形式匯出,然後將使用者資料庫徹底清空、截斷,再將文字資料匯入到資料庫,從而達到消除碎片的目的,具有通用性。
下面以sun solaris 7作業系統下的sybase adaptive server enterprise 11.5為例,說明整理資料庫資料的具體方法。
1. 備份資料庫
為防止在資料庫碎片整理過程**現不可預見的問題,有必要先備份資料庫。
2. 建立bcp out指令碼並匯出資料
建立包含下列sql語句的檔案:
cre_bcp_out.sql
select 「bcp」 + name + 「out ./」 + name + 「_out.txt -udboname -pdbopwd -ssys_name -c」
from sysobjects where type = 『u』
order by name
goisql -udboname -pdbopwd -ssystemname < cre_bcp_out. sql > b_out
編輯輸出檔案,去掉檔案第一行和最後兩行無關的字元:vi b_out
執行指令碼,將資料庫的資料匯出到文字檔案:sh b_out
3. 建立truncate table指令碼並截斷資料庫
建立包含下列sql語句的檔案:
cre_trunc_out.sql
select 「truncate table」 + name from sysobjects where type = 『u』
order by name
goisql -udboname -pdbopwd -ssystemname < cre_ trunc_out. sql > trunc_out. sql
編輯輸出檔案,去掉檔案第一行和最後兩行無關的字元,並在最後一行加入 go構成完整的sql語句:vi trunc_out
執行以下語句,清空資料庫的資料:
isql -udboname -pdbopwd < trunc_out. sql
4. 建立bcp in指令碼並匯入資料
建立包含下列sql語句的檔案:
cre_bcp_in. sql
select 「bcp」 + name + 「in ./」 + name + 「_out.txt -udboname -pdbopwd -ssys_name -c」from sysobjects where type = 『u』
order by name
goisql -udboname -pdbopwd -ssystemname < cre_ bcp_in. sql > b_in
編輯輸出檔案,去掉檔案第一行和最後兩行無關的字元:vi b_in
從文字中匯入資料:sh b_in
5. 更新資料庫狀態
sybase不自動維護索引的統計資訊,當用truncate table截斷資料庫時,索引並沒有改變,所以必須用update statistics來確保索引的統計資訊對應當前表資料的統計。
建立包含下列sql語句的檔案:
cre_upd_st. sql
select 「update statistics」 + name from sysobjects where type = 「u」 order by name
goisql -udboname -pdbopasswd -ssystemname < cre_upd_st. sql > upd_st. sql
編輯輸出檔案,去掉檔案第一行和最後兩行無關的字元,在最後一行加入 go構成完整的sql語句:
vi upd_st. sql
更新資料庫狀態:
isql -udboname -pdbopasswd -ssystemname < upd_st. sql
至此,基本上完成了資料庫使用者表的碎片整理工作。
小 結在整理過程中,有以下兩點需要注意:
1. tempdb的大小
當sybase執行bcp in指令碼時,會佔用匯入資料2倍的tempdb空間,因此在執行前要仔細估計最大的table的大小,保證有足夠的tempdb空間。當空間不夠時,要考慮用分割table或刪除陳舊資料的方法縮小table的大小,或者考慮增加tempdb的大小。
2. 資料庫配置選項的設定
當資料庫執行bcp in指令碼時會產生大量的log,為保證bcp in程序不致因為log溢位而中斷,應該設定database的選項「truncate log on chkpt」為「true」。
雖然sybase資料庫是自優化的,但只要資料庫是動態的,資料庫碎片現象就會存在。在oltp應用的場合,隨著資料的不斷增大,系統變得越來越緩慢,並且經常出現死鎖時,應該檢查資料庫的碎片,並且採用以上方法進行優化。
實際上,應該定期做資料庫的碎片整理,保證資料庫的物理儲存經常處於最優狀態,相對於增加硬體而言,這是一種更好的保持資料庫效能的低成本的途徑。
3樓:匿名使用者
所謂「內部碎片」,是指系統已經分配給使用者使用、使用者自己沒有用到的那部分儲存空間;
所謂「外部碎片」,是指系統無法把它分配出去供使用者使用的那部分儲存空間。
對於教材而言,單一連續區儲存管理、固定分割槽儲存管理、分頁式儲存管理和請求頁式儲存管理都會出現內部碎片。只是前兩種儲存管理造成的內部碎片比較大,浪費較為嚴重;後兩種頁式儲存管理,平均來說每個作業都會出現半頁的內部碎片。教材中,只有可變分割槽儲存管理會產生外部碎片。
什麼是碎片整理
呵呵,就是將一個檔案 分散存放 的資料塊,相對集中起來存放!就是這麼回事!碎片少的話,機器 讀取資料 的速度 會 加快!就是清除臨時檔案。可以整理,要是你覺得你機器慢的話 當你的磁碟中容量不夠的時候電腦會提示你用 碎片整理 來擴大磁碟空間。明確點的說碎片整理就是刪除磁碟中相對無用的檔案,來擴大你磁碟...
什麼是外部執行標準 什麼是內部執行標準
一般是指產品的技術標準,所謂外部執行標準就是對社會公開的產品執行標準,而內部執行標準就是在企業內部使用的標準。產品的執行標準具體是指什麼?要找什麼樣的相關檔案?產品執行標準是生產。企業生產的產品的質量必須達到或執行的技術要求 規範 有國家標準 行業標準 地方標準和企業自己制定的企業標準四種。每一種產...
天天酷跑火雞精靈碎片集滿下碎片是什麼
你約電影 樓主,火雞精靈到手以後,再給的仍然是火雞碎片,你可以用碎片兌換成積分,一個碎片可以兌換八十八積分,希望我的回答對你有所幫助!天天酷跑翻牌火雞碎片集滿後是什麼碎片 在天生橋地質考察的墨蘭 你好 天天酷跑這個遊戲你說的活動下架了,火雞碎片十個可以自動兌換到精靈感恩火雞,現在沒換到的也就換不到了...