東華大學計算機學院 研究生 數據庫實驗1 - 下載本文

數據庫系統實現

數據庫系統實現

實驗報告

實驗名稱:實驗1:Two Phase, Multiway Merge-Sort

姓名:王國林(2131524) 指導老師:王洪亞 日期:2013年10月20日

一、 實驗目的:

通過merge-sort算法的實現,掌握外存算法所基于的I/O模型與內存

數據庫系統實現

算法基于的RAM模型的區別;理解不同的磁盤訪問優化方法是如何提高數據訪問性能的。

二、 實驗內容:

生成一個具有10,000,000個記錄的文本文件,其中每個記錄由100個字節組成。實驗只考慮記錄的一個屬性A,假定A為整數類型。記錄在block上封裝時,采用non-spanned方式,即塊上小于一個記錄的空間不使用。Block的大小可在自己的操作系統上查看,xp一般為4096 bytes。在內存分配50M字節的空間用于外部merge-sort。要求設計和實現程序完成下列功能:

1.生成文本文件,其中屬性A的值隨機產生。

2.按照ppt中的方法對文本文件中的記錄,按照屬性A進行排序,其中在第二階段的排序中每個子列表使用一個block大小的緩沖區緩沖數據。

3.按照教材cylinder-based buffers(1M bytes)的方法,修改第二階段的算法。

4.比較兩種方法的時間性能,如果有更大的內存空間,算法性能還能提高多少?

三、 實驗分析:

一個具有

10,000,000

個記錄的文本文件共計

50MB,50MB/4KB=50*1024

10,000,000*100B=1000MB,而內存只有

KB/4KB=12800塊,每塊可以存放4*1024B/100B=40個記錄,每塊剩余96KB,內存一共可以存放12800*40=512000個記錄,一共有10,000,000個記錄。所以要進行10,000,000/512000=19.53次,即20次排序,每次排序的記錄數為10,000,000/20=500,000個記錄。

因此此次實驗需要將文本文件分成20個子文件。分別對子文件分別進行內部排序。最后對20個排好序的子文件進行歸并排序,完成排序。

四、 程序的設計思路:

數據庫系統實現

1. 生成一個具有10,000,000個記錄的文本文件data.txt,其中每個記

錄由100個字節組成,其中只有一個整數類型屬性A,剩余字節用0填充。程序生成一個4個字節之內隨機整數作為每條記錄的屬性,剩余字節用0填充。記錄寫入data.txt文件中。

2. 根據實驗分析,將data.txt文件分為20個子文件,并且按照文件

中每個記錄的屬性對各個子文件進行內部排序,最終形成20個有序的子文件data1.txt,data2,txt,…data20.txt。

3. 對20個有序的子文件進行歸并排序,最終形成一個有序的結果文件

result.txt。

五、 程序流程圖:

FileGenerate:

開始否記錄數小于10,000,000?是生成一個隨機數結束隨機數寫入記錄中為該記錄填充0直到達到100字節記錄數+1

數據庫系統實現

開始data.txt已經讀完?是結束否子文件個數+1從data.txt中讀一個記錄到recordTemp對該子文件數組進行內部排序記錄放入一個子文件數組中把該子文件數組寫入到子文件中子文件數組中記錄數等于500000?是新建一個子文件數組否

數據庫系統實現

開始每個文件讀1個記錄進入歸并數組中結果文件中的記錄條數小于10000000條記錄否結束是在當前歸并數組中選出最小元素寫入結果文件result.txt中結果文件中的記錄條數+1結果文件中的記錄條數小于500000條否該文件在歸并數組中的相應位置置為最大值是從對應的子文件中再選出一條記錄放入歸并數組中

六、 實驗結果及分析:

1. 生成一個具有10,000,000個記錄的文本文件data.txt。





天津时时彩开奖号码表 河北11选5 日本女优a片快播 007足篮比分网 安徽25选5 合肥小姐妓女 足球比分网即时比分网 02489足球直播 快乐10分开奖查询 喷潮 痉挛抽搐无码磁力 pk10开奖结果 兰州按摩实拍 qvod日本av女优 华东15选5 热血羽毛球 韩国棒球比分怎么看 日本sm虐片