目前我正在构建相当大的Web系统,我需要强大的SQL数据库解决方案。我选择了Mysql而不是Postgres,因为有些任务需要是只读的(MyISAM引擎),而其他的则是大量写入(InnoDB)。只有Mysql或mysql + sqlite或mysql +自己的解决方案
我对此只读功能有疑问。它必须非常快速。用户必须得到答案的时间少于一秒。 假设我们有一个名为“object
”的索引良好的表格,其行数不超过1000万行,另一个名为“element
”的行大约有150百万行。 我们也有一个名为“element_object
”包含的信息从连接表“element
”对象与表“object
”(亿万行)
所以,我们要做的表上“element
”分区和表“element_object
“并且具有8192个表”element_hash_n{0..8191}a
“和表”element_object_hash_n{0..8191}_m{0..2}
“的24576个表。
用户的问题的答案将是一个2步搜索:从表元素的
- 查找ID“element_hash_n”
- 做主要SQL SELECT对表“对象”,并与表加入“element_object ..hash_n_m”过滤与搜寻(来自第一步)ID
我想知道第一步结果: 什么会更好:
- 店(全部)超过32K表中的MySQL
- 创建一个SQLite数据库和存储有8192台的第一步目的
- 创造8192个不同的sqlite的文件(数据库)
- 在文件系统中创建8192个文件,并自己的二进制解决方案来查找ID
我很抱歉我的英语。它不是我的母语。
为什么你认为有表十万结束只有3桌更好吗? – 2011-12-23 19:17:55
我认为分区是更好的超过3表,因为表是不是可用的RAM大得多。当然有一个问题应该是多少桌子。 – 2011-12-23 19:28:51
为什么你认为数据库必须同时在内存中保存整个表(或者 - 也许更相关 - 一个整体索引)?这将是... ...的限制嘛 – 2011-12-23 21:28:09