2010-03-09 71 views
1

我工作的數據庫與MySQL 5.0開源項目 它被用來在特定的語言存儲句子和他們的翻譯其他語言有與MySQL合併表的限制嗎?

我曾經有一大桌「句子」和「sentences_translations」 (用於加入句子到句子)表,但我們現在有近一百萬個條目,這開始有點慢,而且,大多數請求都是使用「where lang =」

所以我決定了按語言創建表 sentences_LANGUAGECODE

and sentences_translation_LANGSOURCE_LANGTARG ET

,並創建這樣 sentences_ENG_OTHERS該合併的合併表sentences_ENG_ARA sentences_ENG_DEU等等 當我們想在一個英語句子 sentences_OTHERS_ENG 的所有語言翻譯,當我們想只的英文翻譯有些句子

我創建了一個腳本來創建所有這些表(它們是圍繞31種語言等等60餘合併表),我測試過,那這工作使用採取的160ms現在採取真正偉大的請求只有30 :) ,但我發現,15日使用後我所有的合併表有「NULL」作爲類型的存儲引擎的而不是MRG_MYISAM,如果刪除一個,那麼我可以創建一個其他的,每次創建之間使用FLUSH表也允許我創建更多合併表

所以這是mysql的限制嗎?我們可以覆蓋它嗎?

謝謝您的回答

回答

0

(感謝馬丁告訴我的方式)

在Linux上,你必須編輯您的/etc/security/limits.conf像這樣

* hard nofile 4096 

線在下次重新啓動這將是確定 要使它直接停止服務器

ulimit -n 4096 (or more , as root) 

,並直接重新啓動服務器

我不知道怎麼樣窗口尚未

1

在這個線程從MySQL合併存儲引擎的論壇,它似乎是成千上萬的表可以合併合併表。有些人不得不跑出來的文件句柄的問題,但這又經過幾百表合併了,我想這取決於你使用的是什麼操作系統也通常只遇到 - 也許Windows有下限。

MySQL Forum for MERGE storage engine

就個人而言,我會避免合併引擎,如果在所有可能的。我在2002年開始使用它,並且被許多MySQL版本中的大量錯誤所困擾。我得到的印象是合併引擎不是MySQL的一個優先事項,也許不是很好的測試。分區在5.1似乎更多的其他功能,但是對於你的應用程序,我很奇怪,你有隻有一百萬行的性能問題。您的索引效率如何?

+0

我會仔細閱讀 我在Debian MySQL 5.0中運行,因爲它是我的主機提供的一個,我已經性能比較問題,我做了以下 我需要翻譯和翻譯翻譯,因爲翻譯並不是翻譯,所以請求有點大,只是直接翻譯是非常快的。 此外,服務器並非真正強大(開源項目:p) 我會仔細閱讀您的鏈接 – sysko 2010-03-09 22:26:56

+0

如何發佈您的查詢的「解釋」?它可能只是想調整一下。 – Martin 2010-03-09 23:10:30

+0

http://pastebin.com/xbVVPTsW(對於請求) 的解釋請給出以下內容 http://pastebin.com/w4Pypwdq(這兩個都太長,直接粘貼在這裏) 非常感謝您的關注 – sysko 2010-03-10 09:32:26