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

請問一個db有100個tables與10個db各有10個tables的問題

尚未結案
mmcho
一般會員


發表:7
回覆:9
積分:3
註冊:2002-04-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-19 16:41:42 IP:61.222.xxx.xxx 未訂閱
請問一下 一個db有100個tables與10個db各有10個tables 在同一個server跑 效能有差嗎??差多少 因為1個db只要1個connection 10個db就要10connection 所以1個db是一定比較快的 為何分5個db是因為假使資料量大 以後可以5個db分5台server跑 這樣應該會比較快吧 前提是sql語法已很好且有建index之下 又當一個db中的table資料很多 再不換機器之下..大家都如何做阿..分table嗎?? 謝謝..一下子提那麼多問題
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-19 22:10:11 IP:61.221.xxx.xxx 未訂閱
基本上這和 database 的種類有很大的關係. 可以先說明一下使用的 database 種類嗎?    至於效能差異還得要看是什麼性質的資料庫使用方法, 如大量 insert, 異動次數頻繁, 會使用 transaction, 多人使用, client/server 或是 multi-tier 的使用等, 都會有影響的. 但會有多大的影響, 很難說. 還是得實際測試才知道. 尤其是在一般的 pc 上跑就更難說了. 一般的資料庫數據大多是在 server 的機器上跑, 其 cpu 及 os 的差異性又很大, 所以說不準的...    不過就你最後一個問題來回答一下. 一個 db 中的 table 資料很多指的是單一 table 資料筆數多嗎? 一般的解法有兩種, 看欄位的多寡和查詢異動對應欄位的個數來定. 欄位多的話, 可以依性質來拆成兩個(或多個), 依什麼性質呢, 就是同類及同查詢條件, 如何拆, 其實沒有一定的方式, 作法如下. 原來的 table 中有 82 個欄位, 其中有兩個欄位為 primary key, 假設如下: tableOri PK1, PK2, COLA1, COLA2, ....., COLA30, COLB1, COLB2, COLB3, ..... , COLB50 可以拆為 tableA PK1, PK2, COLA1, COLA2, ....., COLA30 及 tableB PK1, PK2, COLB1, COLB2, COLB3, ..... , COLB50 這可以使 table 的 size 變小, 但是效能是否會提高很難說, 仍要看資料庫實際的狀況, 但可以將常用的欄位放在其中的 tableA, 不常用的放 tableB, 這是一種分類法, 因為使用時常用 tableA, tableA 的 size 變小後, 原則上效能會變快, 但只是原則上. 至於第二種分法就比較難進行了, 若上面的方法是屬縱向切割, 則這是一種將資料橫向切割的方式, 以主鍵值或是時間來進行分割, 如訂單編號小於 2000000 的放一個, 大於 2000000 的放另一個, 但程式改寫查詢的幅度很大, 尤其是在全 table 搜尋時, 例如要查 金額 小於 200 的就必須用 union 來查了. 上面的說明並非絕對, 效能也不見得會因此而提升, 甚至會更差也不一定, 還是得看實際上的查詢, 異動及使用的狀況來評估的.
mmcho
一般會員


發表:7
回覆:9
積分:3
註冊:2002-04-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-20 10:29:20 IP:61.222.xxx.xxx 未訂閱
謝謝您精闢的回答 現在使用的是SQLSERVER2000資料庫.. 資料庫有近10個DB各10個TABLES以類別方式建立 並假使將來各DB有各自的SERVER機器運作 所以想請問是建1個DB100TABLES好還是建10個DB各有10個TABLES 因為好像每開啟一個DB就會消耗一些資源 所以只開啟一個DB100TABLES比開啟10個DB各10個TABLES好吧 又因為程式因有較多的DB所以需要有更多的CONNECTION 這些也會佔更多的資源.. 那這種情形在ORACLE之下也會有這樣的問題嗎 是否一個SERVER有2個以上的資料庫會比較吃資源嗎 是否需要將2個資料庫合一 如果有差資源..差很多嗎 SQLSERVER與ORICLE之間也是盡量只建立一個DB為原則嗎? 公司現在是只有CLIENT SERVER架構 謝謝
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-22 10:20:02 IP:211.76.xxx.xxx 未訂閱
若是 MSSQL 的話, 就弟所知的狀況是這樣的.  每個資料庫會有自己的主檔和log檔. 所以原則上開多個資料庫的速度會變快. 這是就檔案存取的原理而言. 但是必須是在 storage 的存取能力範圍之內. 若是已超出 storage 的存取效能本身對一個資料庫就已滿載的話, 那開多個也是沒有意義的.    至於 client 開多個 database 確實會佔用多個資料庫伺服器的資源沒錯. 但其實在 client 可以只開一個 database 去跨資料庫伺服器的資料庫來進行存取資料的, 當然必須要有權限才行. 在跨資料庫存取時, 資源也就不會多佔了. 就不會有多個資料庫 client 端要起多個 database 的問題了. 至於怎麼看, 可以參考 master 資料庫下的 sysprocesses table 的資料就知道了. mssql 的 on-line help 中查一下 sysprocesses 就可以獲得相當豐富的資料.    至於 oracle 弟比較不熟, 但還有在 os 不同時應該也會有不同的狀況. 還要請其他有經驗的前輩指點一下.     資料庫伺服器的效能調校不是在這裡簡單說明就可以的. 還得根據實際的環境及硬體設備都會有絕對的關係. 
mmcho
一般會員


發表:7
回覆:9
積分:3
註冊:2002-04-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-23 11:46:52 IP:61.222.xxx.xxx 未訂閱
資料庫的調教與效能的因素真的很多 真的需要深入研究..而要研究的地方真的很多 謝謝您寶貴的知識..
系統時間:2024-06-27 0:16:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!