VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

大家使用SPT的時候...都是用什麼資料庫呢

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
gmtmold



註冊時間: 2004-03-18
文章: 16


第 1 樓

發表發表於: 星期四 三月 18, 2004 2:32 pm    文章主題: 大家使用SPT的時候...都是用什麼資料庫呢 引言回覆

我是一個MIS人員...公司的系統是用Fox Pro 6.0寫的.也有一段很長的時間了.因近來資料庫資料越來越多.讀取速度越來越慢.所以想要改用spt的方式.試過spt感覺得速度還是很慢.所以想問問是不是Fox pro 本身的資料庫真的不適合拿來當後端資料庫(一定要用ms sql 嗎).還是有什麼訣竅我不知道的...還請各位狐友不賃指教..謝謝
公司有大概40部跑fox pro的電腦
fox pro是6.0版的
資料庫是用fox PRo的資料庫
用戶端裝win2000
早期是使用檔案伺服器的方式來丟資料的
Question
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 2 樓

發表發表於: 星期四 三月 18, 2004 4:35 pm    文章主題: 引言回覆

這樣講太空泛了,
您應該先說明您目前筆數多少,SERVER等硬體狀況,
程式作法如何?如何嘗試SPT?

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
gmtmold



註冊時間: 2004-03-18
文章: 16


第 3 樓

發表發表於: 星期四 三月 18, 2004 5:39 pm    文章主題: 引言回覆

資料總筆數大概有200萬筆以上
table有兩百多個
主機硬體狀況CPU : xeon2.4G X2
RAM : 2G
HD : SCSI READ 5 目前裝四顆36g硬碟
其他的應該不用了吧
程式寫法
我先在本機建立FOX PRO的 ODBC 名稱為 Fox Pro 6.0
nsqlconnect =SQLSTRINGCONNECT('DSN=Fox Pro 6.0;UID=;PWD=;SourceDB=\\Gmt-server1\public_data\sale.db c;SourceType=DBC;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;')

=SQLSETPROP(nsqlconnect , 'batchmode' , .F.)
=SQLSETPROP(nsqlconnect , 'asynchronous' , .T.)
=SQLEXEC(nsqlconnect , "Select *........."emp")
因為我的select 裡面 有用四個Left Join 不同表格.
查詢結果資料筆數大概5000筆...需要20秒
請告訴我怎樣座才能讓速度便快
回頂端
檢視會員個人資料 發送私人訊息
elleryq



註冊時間: 2007-06-21
文章: 768


第 4 樓

發表發表於: 星期五 三月 19, 2004 9:22 am    文章主題: 引言回覆

建立適當的 index ~~
另外我記得有一個函數可以測試目前的索引是否為最佳化
但我忘記名稱了~~

我是建議貴公司可以開始先行規劃未來的發展,並換套大型一點的資料庫,如 mssql, oracle, firebird...等等的資料庫會比較好~~

以這種方式, \\Gmt-server1\public_data\sale.dbc, 去連結
會受限到 NetBEUI 協定的極限~
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 5 樓

發表發表於: 星期五 三月 19, 2004 10:04 am    文章主題: 引言回覆

基本上以使用DBC來說,最佳化的方向是
HELP 中[Programmer's Guide] [Optimizing Applications] 這章,
如果有進步空間,也僅於此,
如果用完了這篇所述的方法,
的確就是到了VFP 自己資料庫引擎的極限.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
gmtmold



註冊時間: 2004-03-18
文章: 16


第 6 樓

發表發表於: 星期五 三月 19, 2004 1:35 pm    文章主題: 引言回覆

目前小弟最大的問題就是.....如果我把這個程式拿到server端去跑的話.只要一秒就ok了.但是如果在client端透過ODBC跑的話.卻要20秒.我搞不懂這個spt的速度為什麼會差那麼多.我們也有試著用asp去查同樣的資料.速度也差不多2秒(跟在server端的速度差不多).索引最佳化也有做.如果透過本地的ODBC去連結的話.這樣子的跑法是不是也和file server一樣.還是把全部資料送到client端再做sql呢
誠徵是否有狐友願意幫我們解決這個問題.公司可以付工資
或是有人有程式範例可以給我參考的..
拜託了.........
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 7 樓

發表發表於: 星期五 三月 19, 2004 2:34 pm    文章主題: 引言回覆

好複雜..... 先說明我大概猜到問題所在,但我沒能力解決

server 與 client 執行的差別就在 odbc 處理 result set (cursor) 的速度,
client用以odbc連接dbc,實際上資料處理還是 client 的機器在作,
而不是server 的機器去作,
所以我猜應該效能應該與直接以file server形式開dbc的效能相當.
差別是odbc vfp driver 與 vfp 何者較快.

一般spt是用在sql server(不管哪一種)上,
資料處理是sql server作,再把result set 傳給 odbc,
odbc再直接建立 result set , vfp 接收後作成自己的cursor.

asp 查同樣的資料也是一樣,
因為是由server odbc vfp driver處理資料,傳給client,
所以速度與server 使用 vfp 程式處理差不多.

如果要我給一個改善方向,
我會說以類似web service的方式處理資料,
讓後端處理資料,把result set 傳給client,
不過這樣系統架構的修改會很大.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
gmtmold



註冊時間: 2004-03-18
文章: 16


第 8 樓

發表發表於: 星期五 三月 19, 2004 3:15 pm    文章主題: 引言回覆

感謝樓上的狐友.....
很高興終於有人可以知道我的問題所在了...
那如你所說的改為後端處理...
那做法又是如何呢...改為後端是不是遠端資料庫一定就不能用vfp的資料庫了...
如果是這樣的話..那真的是大工程了...3Q

****期待是愉快的****
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 9 樓

發表發表於: 星期六 三月 20, 2004 10:47 pm    文章主題: 引言回覆

比您想像中困難很多.

1.換成 真正 SQL Server的架構,當然就不能用VFP 的DBC,但是程式的變化較小

2.撰寫後端SERVER 的VFP COM 程式,處理前端要求的資料.
需要 VFP 7.0 的 XMLtoCURSOR(),CURSORtoXML(),作格式交換,這還只是查詢而已,如果用到資料異動,就需要 XMLUPDATEGRAM(),VFP 6.0 沒有這些函式,只好使用 http://www.west-wind.com/ 所提供的免費物件,效果"接近".但是好像要自己處理異動更新.
可以到 BOE副站 http://shhuachen.vicp.net/boe/ 查閱有關 COM,WEB SERVER,XML等相關技術資訊.

也許還有其他方法,不管什麼方法應該都是很大工程,我相信.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
john59



註冊時間: 2004-02-29
文章: 51
來自: taiwan

第 10 樓

發表發表於: 星期日 三月 21, 2004 6:05 pm    文章主題: 引言回覆

公司的mrp我本來用vfp的sql語法來運作,在單機或主機時沒感覺速度慢,但一上網運作的速度馬上down到龜速,後來改用fxopro傳統語法來執行速度馬上恢復正常,我個人感覺index似乎對sql語法無效,我們公司的bom有50萬筆左右,但列出一個model的bom幾十到上百筆,也不過數秒鐘,如果用sql最少要幾十秒甚至有時還會當掉,這是我的一點小經驗.因此vfp我基本上不用sql
回頂端
檢視會員個人資料 發送私人訊息
an1060



註冊時間: 2004-02-29
文章: 48
來自: 高雄

第 11 樓

發表發表於: 星期一 三月 22, 2004 8:25 am    文章主題: 引言回覆

我來解釋一下VFP與MS-SQL同為後端之差別,若有錯誤之處,請高手指正:

MS-SQL本身有一隻管理程式在專門處理前端提出之需求,不論前端一次下達之
SQL語法有如何複雜,動員到多少TABLE,一律是處理成結果(你每次下達命
令,所要求之結果)後再傳遞至前端之電腦,以TABLE方式回到CLIENT.
網路上只傳回結果,及你下達之命令.所以MS_SQL語法功力越高,耗用網路資源就越小,但想對的SERVER耗用的記憶體就越大.

VFP就不一樣了,他沒有管理程式在管理,在後端依然是以FILE SERVER方式
很單純的將你一次要求的TABLE,全部回傳至前端,交由前端處理成結果後,
再將檔案關閉。
網路上只傳回的是你需要用到的TABLE檔,及你下達之命令.
SERVER不耗用記憶體,但會很忙,忙在傳送資料.
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 12 樓

發表發表於: 星期一 三月 22, 2004 8:35 am    文章主題: 引言回覆

覺得自己做的SQL太慢而不用SQL,是有這麼一點因噎廢食,
[Programmer's Guide] [Optimizing Applications]提到了如何SQL最佳化,
一個沒有最佳化的SQL 命令,不管用在哪裡都是沒有效率的,
而實際上也不是每次都能符合最佳化條件,需要scan table時,
基本上就是比硬體速度而已.

引言回覆:

一上網運作的速度馬上down到龜速,後來改用fxopro傳統語法來執行速度馬上恢復正常


原因似乎不單純是sql 的問題,
其實也隱含了網路環境及 vfp 建cursor ,處理cursor的速度問題,
實在不應過於武斷.
不過能抓老鼠的就是好貓,
方法也沒什麼好或不好.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙


syntech 在 星期一 三月 22, 2004 8:37 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
gmtmold



註冊時間: 2004-03-18
文章: 16


第 13 樓

發表發表於: 星期一 三月 22, 2004 8:36 am    文章主題: 引言回覆

嗯嗯....
感謝各位狐友的解答...
那我會好好的考慮...
是不是要改用mssql....
太感動了.....謝謝
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 14 樓

發表發表於: 星期一 三月 22, 2004 11:20 am    文章主題: 引言回覆

引言回覆:

很單純的將你一次要求的TABLE,全部回傳至前端,交由前端處理成結果後,
再將檔案關閉。


如果仔細看看john59網友的內容就發現這裡需要多解釋一點,
如果不使用sql 命令 產生cursor,以傳統方式處理資料,
其實是直接開檔案,移動的是"檔案指標",
所以不會一次通通傳到client,會隨著處理進度慢慢傳遞,
這是從dbase時代就留下來的情況.

但是sql 情況不同,基本上會和您說的一樣,
雖會隨最佳化情況不同,來源資料傳送量或多或少,
大部分還是會變成scan table,傳送整個table作處理(其實若spt的話,還有同步處理與非同步處理的差別),
result cursor 依 config.fpw 設定,
隨資料處理進度產生在所指定位置,
預設是產生在client,可是一樣可產生在sever端,
所以 sql 命令基本上都是耗費不少資源的做法,
祇是方便而已.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
john59



註冊時間: 2004-02-29
文章: 51
來自: taiwan

第 15 樓

發表發表於: 星期一 三月 22, 2004 12:38 pm    文章主題: 引言回覆

基本上syntech兄說的沒錯,以下提出小弟實際作法供參考

*SQL 作法
select * from md where model=mod into tabl c:\mdtemp
========================================
*傳統FXOPRO作法
SELE MD
SEEK MOD
if .NOT. EOF()
COPY TO C:\MDTEMP WHIL MODEL=MOD
ELSE
?CHR(7)
messagebox("對不起找不到您要的資料")
ENDI
====================================
以上兩者都同樣產生MDTEMP 的 cursor檔
但速度上差別非常大尤其是資料庫越大的情況
用INDEX SEEK 的方式幾乎是即時的
因此我才會說如果單純只用VFP沒用其他如MS-SQL
似乎沒必要使用SQL語法運作當然這只是個人的經驗
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作