什么是内部碎片?什么是外部碎片?各种存储管理中都可能产生何种碎片? 操作系统中的内存.内部碎片和外部碎片指的是什么?

\u5185\u90e8\u788e\u7247\u548c\u5916\u90e8\u788e\u7247\u7684\u533a\u522b\u3002\uff08\u64cd\u4f5c\u7cfb\u7edf\u4e4b\u5185\u5b58\u7ba1\u7406\uff09

\u8981\u641e\u6e05\u695a\u5185\u90e8\u788e\u7247\u4e0e\u5916\u90e8\u788e\u7247\u7684\u533a\u522b\u9996\u5148\u8981\u660e\u767d\u5206\u9875\u4e0e\u5206\u6bb5
\u4e3a\u4e86\u6709\u6548\u7684\u5229\u7528\u5185\u5b58\uff0c\u4f7f\u5185\u5b58\u4ea7\u751f\u66f4\u5c11\u7684\u788e\u7247\uff0c\u8981\u5bf9\u5185\u5b58\u5206\u9875\uff0c\u5185\u5b58\u4ee5\u9875\u4e3a\u5355\u4f4d\u6765\u4f7f\u7528\uff0c\u6700\u540e\u4e00\u9875\u5f80\u5f80\u88c5\u4e0d\u6ee1\uff0c\u4e8e\u662f\u5f62\u6210\u4e86\u5185\u90e8\u788e\u7247\u3002\u4e3a\u4e86\u5171\u4eab\u8981\u5206\u6bb5\uff0c\u5728\u6bb5\u7684\u6362\u5165\u6362\u51fa\u65f6\u5f62\u6210\u5916\u90e8\u788e\u7247\uff0c\u6bd4\u59825K\u7684\u6bb5\u6362\u51fa\u540e\uff0c\u6709\u4e00\u4e2a4k\u7684\u6bb5\u8fdb\u6765\u653e\u5230\u539f\u67655k\u7684\u5730\u65b9\uff0c\u4e8e\u662f\u5f62\u62101k\u7684\u5916\u90e8\u788e\u7247\u3002

\u5916\u90e8\u788e\u7247\uff1a\u56e0\u4e3a\u884c\u7a0b\u6301\u7eed\u5730\u88ab\u8f7d\u5165\u4e0e\u7f6e\u6362\uff0c\u4f7f\u5f97\u53ef\u7528\u7684\u8bb0\u5fc6\u4f53\u7a7a\u95f4\u88ab\u5206\u5272\u6210\u8bb8\u591a\u4e0d\u8fde\u7eed\u7684\u533a\u5757\u3002
\u867d\u7136\u8bb0\u5fc6\u4f53\u6240\u5269\u7a7a\u95f4\u603b\u548c\u8db3\u591f\u8ba9\u65b0\u884c\u7a0b\u6267\u884c\uff0c\u5374\u56e0\u4e3a\u7a7a\u95f4\u4e0d\u8fde\u7eed\uff0c\u5bfc\u81f4\u7a0b\u5f0f\u65e0\u6cd5\u8f7d\u5165\u6267\u884c\u3002
\u5185\u90e8\u788e\u7247\uff1a\u53d1\u751f\u5728\u4ee5\u56fa\u5b9a\u957f\u5ea6\u5206\u5272\u533a\u6765\u8fdb\u884c\u914d\u7f6e\u7684\u8bb0\u5fc6\u4f53\u4e2d\u5f53\u4e00\u4e2a\u7a0b\u5f0f\u8f7d\u5165\u5230\u56fa\u5b9a\u5927\u5c0f\u7684\u5206
\u5272\u533a\u65f6\uff0c\u5047\u5982\u7a0b\u5f0f\u5c0f\u4e8e\u5206\u5272\u533a\uff0c\u5219\u5269\u4f59\u7684\u7a7a\u95f4\u5c06\u65e0\u6cd5\u88ab\u4f7f\u7528\uff0c\u79f0\u4e3a\u5185\u90e8\u788e\u7247\u3002
\u5229\u7528\u805a\u96c6\u6216\u5206\u9875\u53ef\u4ee5\u6d88\u9664\u5916\u90e8\u788e\u7247\u3002

1.内部碎片:

当一个进程装入到固定大小的分区块(比如页)时,假如进程所需空间小于分区块,则分区块的剩余的空间将无法被系统使用,称为内部碎片。

2.外部碎片:

指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。

3.存储管理中都可能产生的碎片:

除了内部碎片和外部碎片,在“分页存储”中,可能产生“页内碎片”,页内碎片是由于进程的最后一页经常装不满一块而形成了不可利用的碎片。

扩展资料

在数据存储领域中,碎片(fragmentation)是指存储空间使用效率低下,结果导致功能、运行效率变低或二者兼而有之的现象。碎片化所造成的影响取决于具体的存储系统以及碎片化的种类。

大部分情况下,碎片化都会导致都会导致存储空间的浪费,此时“碎片”一词亦可指代闲置的空间本身。对于其他的一些系统来说(比如FAT文件系统),数据量一定的前提下,用于存储数据所占的存储空间是一定的,和碎片化的程度无关。

参考资料来源:百度百科-外部碎片



内部碎片_(在数据页内部)产生的碎片
外部碎片_(在数据页外部)产生的碎片
在这里,假设群集索引中的碎片会导致所有其他索引中产生碎片,因为群集索引(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
go

isql -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
go

isql -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
go

isql -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
go

isql -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应用的场合,随着数据的不断增大,系统变得越来越缓慢,并且经常出现死锁时,应该检查数据库的碎片,并且采用以上方法进行优化。

实际上,应该定期做数据库的碎片整理,保证数据库的物理存储经常处于最优状态,相对于增加硬件而言,这是一种更好的保持数据库性能的低成本的途径。

所谓“内部碎片”,是指系统已经分配给用户使用、用户自己没有用到的那部分存储空间;
所谓“外部碎片”,是指系统无法把它分配出去供用户使用的那部分存储空间。
对于教材而言,单一连续区存储管理、固定分区存储管理、分页式存储管理和请求页式存储管理都会出现内部碎片。只是前两种存储管理造成的内部碎片比较大,浪费较为严重;后两种页式存储管理,平均来说每个作业都会出现半页的内部碎片。教材中,只有可变分区存储管理会产生外部碎片。

  • 浠涔堟槸鍐呯鐗囧纰庣墖
    绛旓細鍐呯鐗囧嵆鍐呴儴纰庣墖锛屾槸宸茬粡琚垎閰嶅嚭鍘伙紙鑳芥槑纭寚鍑哄睘浜庡摢涓繘绋嬶級鍗翠笉鑳借鍒╃敤鐨勫唴瀛樼┖闂达紱鍐呴儴纰庣墖鏄浜庡尯鍩熷唴閮ㄦ垨椤甸潰鍐呴儴鐨勫瓨鍌ㄥ潡銆傚崰鏈夎繖浜涘尯鍩熸垨椤甸潰鐨勮繘绋嬪苟涓嶄娇鐢ㄨ繖涓瓨鍌ㄥ潡銆傝屽湪杩涚▼鍗犳湁杩欏潡瀛樺偍鍧楁椂锛岀郴缁熸棤娉曞埄鐢ㄥ畠銆傜洿鍒拌繘绋嬮噴鏀惧畠锛屾垨杩涚▼缁撴潫鏃讹紝绯荤粺鎵嶆湁鍙兘鍒╃敤杩欎釜瀛樺偍鍧楋紱澶栭儴纰庣墖鎸囩殑鏄...
  • 浠涔堟槸鍐呴儴纰庣墖?浠涔堟槸澶栭儴纰庣墖?鍚勭瀛樺偍绠$悊涓兘鍙兘浜х敓浣曠纰庣墖?
    绛旓細2.澶栭儴纰庣墖锛鎸囩殑鏄繕娌℃湁琚垎閰嶅嚭鍘伙紙涓嶅睘浜庝换浣曡繘绋嬶級锛屼絾鐢变簬澶皬浜嗘棤娉曞垎閰嶇粰鐢宠鍐呭瓨绌洪棿鐨勬柊杩涚▼鐨勫唴瀛樼┖闂插尯鍩銆3.瀛樺偍绠$悊涓兘鍙兘浜х敓鐨勭鐗囷細闄や簡鍐呴儴纰庣墖鍜屽閮ㄧ鐗囷紝鍦ㄢ滃垎椤靛瓨鍌ㄢ濅腑锛屽彲鑳戒骇鐢熲滈〉鍐呯鐗団濓紝椤靛唴纰庣墖鏄敱浜庤繘绋嬬殑鏈鍚庝竴椤电粡甯歌涓嶆弧涓鍧楄屽舰鎴愪簡涓嶅彲鍒╃敤鐨勭鐗囥
  • 鍐呴儴纰庣墖澶栭儴纰庣墖鍖哄埆
    绛旓細鍐呴儴纰庣墖灏辨槸宸茬粡琚垎閰嶅嚭鍘伙紝浣嗘槸鍏跺唴瀛樼┖闂村嵈涓嶈鍒╃敤銆傚唴閮ㄧ鐗囨槸澶勪簬鍖哄煙鍐呴儴鎴栬呴〉闈㈠唴閮ㄧ殑瀛樺偍鍧楋紝鍗犳湁杩欎簺鍖哄煙椤甸潰鐨勮繘绋嬪苟涓嶄細浣跨敤杩欎簺瀛樺偍鍧椼傝屽湪杩涚▼鍗犳湁杩欏潡瀛樺偍鍧楁椂锛岀郴缁熷皢鏃犳硶鍒╃敤瀹冿紝鐩村埌杩涚▼閲婃斁瀹冿紝鎴栬呰繘绋嬬粨鏉熸椂锛岀郴缁熸墠鏈夊彲鑳戒細鍒╃敤杩欎釜瀛樺偍鍧椼傚唴瀛樼鐗囨槸鍥犱负鍦ㄥ垎閰嶄竴涓唴瀛樺潡鍚庯紝浣...
  • 鍐呴儴纰庣墖鍜澶栭儴纰庣墖鏈浠涔鍖哄埆
    绛旓細1銆佷骇鐢熺殑浣嶇疆锛氬唴閮ㄧ鐗囨槸浣嶄簬涓涓搷浣滅郴缁熷垎閰嶇殑鐢ㄤ簬瑁呰浇杩涚▼鐨勫唴瀛樺尯鍩熸垨椤甸潰鍐呴儴鐨勫瓨鍌ㄥ潡锛岃屽閮ㄧ鐗囨槸浣嶄簬浠讳綍涓や釜宸插垎閰嶅尯鍩熸垨椤甸潰涔嬮棿鐨勭┖闂插瓨鍌ㄥ潡銆2銆佽兘鍚﹀埄鐢細鍐呴儴纰庣墖鏄凡缁忚鍒嗛厤鍑哄幓鐨勶紝浣嗙敱浜庢煇绉嶅師鍥犳棤娉曡鍒╃敤锛岃屽閮ㄧ鐗囧皻鏈鍒嗛厤锛屼絾鐢变簬澶皬鏃犳硶琚埄鐢ㄣ3銆佽В鍐虫柟妗堬細鍐呴儴纰庣墖鐨勮В鍐...
  • 鍐呴儴纰庣墖鍜澶栭儴纰庣墖鏈浠涔鍖哄埆
    绛旓細鑰屽閮ㄧ鐗囩殑浜х敓涓昏鏄敱浜庨绻佺殑鍐呭瓨鍒嗛厤鍜屽洖鏀舵搷浣滐紝瀵艰嚧鍑虹幇澶ч噺杩炵画涓斿皬鐨勫唴瀛樺潡澶规潅鍦ㄥ凡鍒嗛厤鐨勫唴瀛樺潡涓棿銆2銆佺鐗囧ぇ灏忥細鍐呴儴纰庣墖鐨勫ぇ灏忛氬父杈冨皬锛屽洜涓哄畠鏄敱浜庡唴瀛樺垎閰嶇畻娉曠殑闄愬埗鑰屼骇鐢熺殑銆傝屽閮ㄧ鐗囩殑澶у皬閫氬父杈冨ぇ锛屽洜涓哄畠鏄敱浜庨绻佺殑鍐呭瓨鍒嗛厤鍜屽洖鏀舵搷浣滆屼骇鐢熺殑銆3銆佺鐗囦綅缃細鍐呴儴纰庣墖閫氬父浣嶄簬宸...
  • 鍐呴儴纰庣墖鍜澶栭儴纰庣墖鐨勫尯鍒(鎿嶄綔绯荤粺涔嬪唴瀛樼鐞)
    绛旓細涓轰簡鏈夋晥鐨勫埄鐢ㄥ唴瀛,浣垮唴瀛樹骇鐢熸洿灏戠殑纰庣墖,瑕佸鍐呭瓨鍒嗛〉,鍐呭瓨浠ラ〉涓哄崟浣嶆潵浣跨敤,鏈鍚庝竴椤靛線寰瑁呬笉婊,浜庢槸褰㈡垚浜嗗唴閮ㄧ鐗銆備负浜嗗叡浜鍒嗘,鍦ㄦ鐨勬崲鍏ユ崲鍑烘椂褰㈡垚澶栭儴纰庣墖,姣斿5K鐨勬鎹㈠嚭鍚,鏈変竴涓4k鐨勬杩涙潵鏀惧埌鍘熸潵5k鐨勫湴鏂,浜庢槸褰㈡垚1k鐨勫閮ㄧ鐗囥 鏈洖绛旂敱缃戝弸鎺ㄨ崘 涓炬姤| 绛旀绾犻敊 | 璇勮(3) 58 8 _hjk...
  • 浠涔堟槸鍐呭瓨纰庣墖?鎬庝箞瑙e喅纰庣墖闂?
    绛旓細鍐呭瓨纰庣墖鍒嗕负锛鍐呴儴纰庣墖鍜屽閮ㄧ鐗囥傚唴閮ㄧ鐗囧氨鏄凡缁忚鍒嗛厤鍑哄幓锛堣兘鏄庣‘鎸囧嚭灞炰簬鍝釜杩涚▼锛夊嵈涓嶈兘琚埄鐢ㄧ殑鍐呭瓨绌洪棿锛涘閮ㄧ鐗囨寚鐨勬槸杩樻病鏈夎鍒嗛厤鍑哄幓锛堜笉灞炰簬浠讳綍杩涚▼锛夛紝浣嗙敱浜庡お灏忎簡鏃犳硶鍒嗛厤缁欑敵璇峰唴瀛樼┖闂寸殑鏂拌繘绋嬬殑鍐呭瓨绌洪棽鍖哄煙銆傚彧瑕佸熷姪涓鏉BScript鑴氭湰璇彞鍙互杞绘澗瀹炵幇鍐呭瓨纰庣墖鐨勬暣鐞嗐1銆佹墦寮鈥滆浜...
  • 纾佺洏纰庣墖澶栭儴纰庣墖鍜鍐呴儴纰庣墖鐨勪粙缁
    绛旓細鑰岀鐩樹笂鐨勫閮ㄧ鐗囷紙鍗冲钩鏃舵墍璇寸殑纾佺洏纰庣墖锛岀鐩樼鐗囨竻鐞嗗伐鍏峰彧鑳芥竻鐞嗙鐩樹笂鐨勫閮ㄧ鐗囷紝娓呴櫎涓嶄簡纾佺洏涓婄殑鍐呴儴纰庣墖锛岄櫎闈炴敼鍙樻枃浠剁郴缁熺殑鍒嗛厤鍗曚綅鍗崇皣鐨勫ぇ灏忥紝浣夸箣鏄竴涓枃浠跺ぇ灏忕殑鏁存暟鍊嶃傦級瀹為檯涓婃寚鐨勬槸涓涓枃浠跺崰鎹偅浜涚皣鏄笉杩炵画鐨勶紝灏辩浉褰撲簬鏂囦欢琚垎鍓插紑鏉ワ紝鍒嗗埆瀛樻斁鍦ㄧ浉浜掗棿鏂殑鍑犳绨囦笂銆傛枃浠惰鍒...
  • 澶у璁$畻鏈烘眰鍔,浠涔堟槸瀛樺偍纰庣墖?濡備綍瑙e喅杩欎釜闂?
    绛旓細纭洏涓婂垎涓哄嚑涓墖鍖猴紝姣斿A B C D 姣斿浣犳妸娓告垙鏀惧湪浜咥 QQ鏀惧湪浜咮 鐜板湪浣犳父鎴忎笉鎯崇帺浜嗭紝鍒犻櫎浜嗭紝閭d箞A灏辩┖浜嗭紝浣嗘槸濡傛灉浣犳湁鏂颁笢瑗挎斁杩涙潵锛屼粬涓嶆斁鍦ˋ锛岃屾槸缁х画寰涓嬶紝鏀惧湪C 杩欎箞鏉ョ殑璇濓紝A灏辨湁浜嗙鐩纰庣墖 纾佺洏纰庣墖璇寸櫧浜嗗氨鏄竴浜涘瀮鍦句笢瑗匡紝姣斿娌$敤鐨勬敞鍐岃〃锛岃瘉涔︼紝鏂囦欢澶 绾墜鎵 锛屾弧鎰...
  • 澶栭儴纰庣墖鍜鍐呴儴纰庣墖鐨勫尯鍒
    绛旓細涓轰簡鏈夋晥鐨勫埄鐢ㄥ唴瀛橈紝浣垮唴瀛樹骇鐢熸洿灏戠殑纰庣墖锛岃瀵瑰唴瀛樺垎椤碉紝鍐呭瓨浠ラ〉涓哄崟浣嶆潵浣跨敤锛屾渶鍚庝竴椤靛線寰瑁呬笉婊★紝浜庢槸褰㈡垚浜嗗唴閮ㄧ鐗銆備负浜嗗叡浜鍒嗘锛屽湪娈电殑鎹㈠叆鎹㈠嚭鏃跺舰鎴愬閮ㄧ鐗囷紝姣斿5K鐨勬鎹㈠嚭鍚庯紝鏈変竴涓4k鐨勬杩涙潵鏀惧埌鍘熸潵5k鐨勫湴鏂癸紝浜庢槸褰㈡垚1k鐨勫閮ㄧ鐗囥傘怲SD銆丮銆
  • 本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网