2010-03-09 75 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