全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3093
推到 Plurk!
推到 Facebook!

Paradox 單機不分享,動態創建 TTable 只有 4000筆,第一次開機讀取居然要 4~8秒,太慢了不是嗎?

答題得分者是:GrandRURU
kenlee1109
初階會員


發表:20
回覆:40
積分:27
註冊:2006-08-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-05-11 15:45:28 IP:118.160.xxx.xxx 訂閱
單機不分享 Paradox table, 小弟是以檔案視之來存取資料. 讀取的方式類似像

BTable *table = new BTable(NULL);
table->DatabaseName = dbirectory;
table->TableName = "test.db";
table->Active = true;
table->First();
if(table->RecordCount){
do{
..........
StartDT = table->GetDBField("");
EndDT = table->GetDBField("");
...............
table->Next();
}while(table->Eof != true);
}
table->Active = false;
delete table;

其中, table->DatabaseName = dbirectory; 是此資料檔所在目錄
table->TableName = "test.db"; 是要開的資料庫名稱

這個資料庫有 Blob 欄位數個, 其中一個欄位資料長度可能 2000 以上的字元不等, 但小弟並沒有讀取這個欄位值, 這欄位是特別的功能才會讀取來用.

1. 現在一開機第一次將約 4000 筆全部讀入, 以 Win7, E8400 CPU, 4G ram 居然要等 4~8 秒才完成讀取, 第二次就是一閃就完成.
請問第一次為何那麼慢?

2: 另外請問小弟以這種指定資料檔目錄名稱的方式開啟, 用 TTable 開會不會太占資源效能, 能用更小的如 TDataSet 來直接開資料檔嗎? 要效能要以何種方式開最佳?

以下是小弟的 BDE 參數設定, BDE 5.02
if(reg->OpenKey("Software\\Borland\\Database Engine\\Settings\\System\\INIT", true)){
reg->WriteString("VERSION", "4.0");
reg->WriteString("LOCAL SHARE", "FALSE");
reg->WriteString("BLOCKSIZE", "32768");
reg->WriteString("MINBUFSIZE", "512");
reg->WriteString("MAXBUFSIZE", "8192");
reg->WriteString("LANGDRIVER", "taiwan");
reg->WriteString("MAXFILEHANDLES", "96");
reg->WriteString("SYSFLAGS", "0");
reg->WriteString("LOW MEMORY USAGE LIMIT", "64"); //64
reg->WriteString("AUTO ODBC", "FALSE");
reg->WriteString("DEFAULT DRIVER", "PARADOX");
reg->WriteString("MEMSIZE", "205");
reg->WriteString("SHAREDMEMSIZE", "4096");
reg->WriteString("SHAREDMEMLOCATION", "0x5BDE");
reg->WriteString("DATA REPOSITORY", "");
reg->WriteString("SQLQRYMODE", "");
reg->WriteString("MTS POOLING", "FALSE");
reg->WriteString("HANDLECASE BDE VERSION", "7.0");
reg->CloseKey();





GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-05-15 16:23:22 IP:59.120.xxx.xxx 未訂閱
的確是不建議TTable

但你還是可以先參考一下這篇:
心得分享 : Paradox 資料庫的極限

應該是可以再加快些

=====
哦?
剛剛才發現你的設定已經是極限了 (自爆)

那還是試試看以下兩種作法
1.使用TQuery 限制筆數
2.設定Paradox表格的Index,也可以再加快一些
編輯記錄
GrandRURU 重新編輯於 2012-05-15 02:25:25, 註解 無‧
GrandRURU 重新編輯於 2012-05-15 02:46:10, 註解 無‧
kenlee1109
初階會員


發表:20
回覆:40
積分:27
註冊:2006-08-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-05-16 03:26:11 IP:118.169.xxx.xxx 訂閱

===================引 用 GrandRURU 文 章===================
的確是不建議TTable

但你還是可以先參考一下這篇:
心得分享 : Paradox 資料庫的極限

應該是可以再加快些

=====
哦?
剛剛才發現你的設定已經是極限了 (自爆)

那還是試試看以下兩種作法
1.使用TQuery 限制筆數
2.設定Paradox表格的Index,也可以再加快一些
=======================================
其實預設值也可以, 一樣是7秒, .db 檔是 9M 而 MB 檔是 72M, 因 blob 有六欄存長度不一的字串, 猜想是 blob 造成的, 請問學長有沒有解法? blob size 在 reg 給 1000 一樣沒用, cachebolb ture or false 也沒差, cacheblobsize 設大設小也試過沒差, 懷疑是第一次開, mb 太大影響??? 且我的欄位有點像綜合查詢應用, 每個欄位都是 String 且都是 Key(我不用 date, int 這種資料型態, 全都是 String).............

BDE 5.02, all Paradox table, All String, 單機使用, 只把它當成檔案使用而已, 有沒有辦法變快.....



系統時間:2024-03-29 19:44:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!