2011-06-02 97 views
0

我是MySQl的新手。請原諒一些錯誤的術語。我有一個關於在MySQL中索引和分割表的問題。我正在使用Web服務器。有3個非常大的表格經常被查詢。表格及其字段如下:MySQL提高性能大表

對齊方式:ali_id,chain1_id,chain2_id .....; Seed:seed_id,ali_id,.....;片段:seed_id .......

種子包含給定對齊的一個或多個記錄。片段包含一個或多個種子記錄。

的表的大小是對齊 - 8.3GB,種子 - 26GB和碎片 - 127GB

這些表具有非常大的指標:對齊具有用於chain1_id,chain2_id,ali_id,(chain1_id和chain2_id)指數和( chain2_id和chain1_id)。因此索引文件本身的大小是27G,大約是對齊表的3倍大小。

這是否合適?

此外,由於表大小變得非常大,服務器不斷崩潰。把桌子拆分成更小的桌子是不錯的主意。我很困惑,因爲我不確定多個select語句是否也會降低服務器的速度。

謝謝。

Regards, Amit。

表已經有人創建else.I猜他們分別爲:

create Table Alignment (
ali_id int(11) PRIMARY KEY, 
chain_id1 int(11), 
chain_id2 int(11), 
param_id smallint(6), 
date datetime); 

create Table Seed(
seed_id int(11), 
Ne smallint(5), 
rmsd float, 
ali_id int(11), 
identics smallint(6)); 

* Seed has 5 more fields, all are smallint(6) 

create table Fragment (
start1 smallint(6), 
start2 smallint(6), 
len smallint(6), 
seed_id bigint(20)); 

有查詢需要很長的時間是:

select a.chain_id2, s.Ne, s.rmsd, s.zN, s.ali_id, s.identics, s.positives, s.nFrg, s.cMatch, s.cont1, s.cont2, s.bMatch, s.back1, s.back2, s.seed_id 

from Alignment AS a, Chain AS c, Seed AS s 

WHERE (a.chain_id1 = c.chain_id) and a.ali_id = s.ali_id and c.pdb_chain = "$pdb_here" and s.zN > $ZLIM; 

命中數可能有所不同100- 2000

它運行在Linux機器上的apache服務器上,帶有4 GB RAM的Intel Quad Core @ 2.5 GHz。

+1

可能是有益的,和一些典型(慢)查詢。也是你的服務器規格。 – 2011-06-02 02:12:26

+0

您可以發佈「CREATE TABLE Alignment」的輸出和Seed和Fragment嗎?你的查詢是什麼樣的?一般返回多少行? – 2011-06-02 02:15:13

+0

請編輯您的問題並在此處添加此額外信息。這是太難以閱讀的評論;) – 2011-06-02 02:58:17

回答

0

我可能假設你的db還沒有被優化。在MySQL中,你可以重建索引,你可以優化表,你可以執行一些表維護語句[1]

[1] http://dev.mysql.com/doc/refman/5.1/en /table-maintenance-sql.html

下一步,看到您的數據可能呈指數級增長。
看看http://www.mysql.com/products/cluster/,看看你是否也可以爲此做好準備。

+1

當優化一個表時,它只會解決像刪除開銷這樣的問題。這不是一種優化數據庫的整體方法。 – 2011-06-02 02:18:55

+0

這不是。但是在最初階段,我建議作者通過這些命令來「優化」/「清理」。同時,我們/或作者需要仔細檢查表格以進一步扣除或正常化。僅僅基於這個問題,幾乎沒有人能夠判斷放緩是來自查詢還是表結構本身。 – 2011-06-02 03:17:48

0

不要擔心表格的大小。它應該不會導致任何問題,如果你確保索引正確設置。另外,您要確保任何冗餘信息都存儲在單獨的數據庫中。您可以通過JOIN查詢輕鬆檢索它。

如果你的服務器一直崩潰,它要麼不能處理負載(數據庫很大,我認爲你也有相當多的訪問者的負載),或者你可能有一些硬件問題(如故障硬盤, 例如)。另外,您的查詢可能需要進行一些優化。緩慢的查詢可能會導致您的表被鎖定的時間延長,暫停新的查詢....以及以下任何情況都不好。

1

分區表將是明顯的地方開始,如果你向我們展示你的「創建表」報表