在32位系統下,檔案最大為4g,而c-tree資料庫的每個表都是以單獨的檔案來儲存的,當檔案達到4g時如果再往該錶插入資料,c-tree會丟擲39號錯誤(the 4-byte data record position (or node position) address space has been exhausted)。那麼面對這個問題時該怎麼辦?
c-tree提供了一種將檔案分割成多個檔案的方式來解決這個問題。
首先,需要修改服務的配置檔案ctsrvr.cfg,在其中增加乙個配置項:
huge_to_seg_mb 2048#20
其中2048的單位為mb,表示單個檔案最大為2g;20表示最多20個檔案。此處需要注意的是, 乙個普通的表有乙個資料檔案,乙個索引檔案。這個配置同時適用於資料檔案和索引檔案,也就是資料檔案可以有20個2g的檔案,索引檔案也可以有20個2g的檔案。
其次,需要在建表的時候,指定特定的選項,如c-treedb c api函式ctdbcreatetable 或c++ api函式cttable::create中,指定的ctcreate_mode必須包含ctcreate_hugefile。
之後該錶的資料檔案會以.dat, .dat.001, .dat.002, ...方式增長,索引檔案會以.idx, .idx.001, .idx.002, ...的方式增長。
c-tree的文件中對上面兩點要求的描述是孤立的,實際上需要同時滿足這兩點才能解決大資料表的問題。我一開始就只修改了配置檔案,但怎麼試就是不起作用。後來才發現建表的api裡面還有乙個特定的引數選項用於此目的。
23 處理資料檔案
資料分析需求 每行內容需要生成以每行 首年月日為名稱的檔案,檔案內容寫入 0 後的所有 行內容 也包括 0 演算法分析 遍歷每一行,每行取頭14個字母 新建檔案,檔名為首14個字母,然後把第15字元後的所有字 符拷貝到檔案中 關閉檔案 fp open e data.log for line in f...
ORACLE資料庫資料檔案轉移方法
oracle資料庫資料檔案轉移方法 1 手動拷貝要轉移的資料資料檔案 d oracledata gwtable42.dbf 到新的位置 e oracledata gwtable42.dbf 2 把資料檔案所屬的表空間offline,在sqlplus裡執行如下命令 sqlplus alter tabl...
大資料檔案讀取方法
filepath 1.txt step 1024 1024 1m str r n start 0 i 1 count 0 do while i 1 echo count file get contents 讀取大檔案方法 param unknown patha 檔案路徑 param unknown ...