有一个大的数据库,1,000,000,000行,称为线程(这些线程实际存在,我不是因为我喜欢它而使事情变得更难).线程中只有一些东西,以加快速度:(int id,string hash,int replycount,int dateline(timestamp),int forumid,string title)
查询:
select * from thread where forumid = 100 and replycount > 1 order by dateline desc limit 10000, 100
由于存在1G的记录,因此查询速度非常慢.所以我想,让我们在尽可能多的论坛(类别)中将这1G记录分开!这几乎是完美的.有很多表我搜索的记录较少,而且速度真快.查询现在变为:
select * from thread_{forum_id} where replycount > 1 order by dateline desc limit 10000, 100
99%的论坛(类别)真的更快,因为大多数论坛只有少数主题(100k-1M).但是因为有一些大约有10M的记录,一些查询仍然会变慢(0.1/.2秒,对我的应用来说太多了!我已经在使用索引!).
我不知道如何使用MySQL改进这一点.有办法吗?
对于这个项目,我将使用10台服务器(12GB内存,4x7200rpm硬盘,软件raid 10,四核)
这个想法是简单地在服务器之间拆分数据库,但是上面解释的问题仍然没有得到解决.
如果我在这10台服务器上安装cassandra(通过假设我找到时间让它按预期工作)我应该假设性能提升吗?
我该怎么办?继续使用MySQL与多台机器上的分布式数据库或构建一个cassandra集群?
我被要求发布索引是什么,这里是:
mysql> show index in thread;
PRIMARY id
forumid
dateline
replycount
Run Code Online (Sandbox Code Playgroud)
选择说明:
mysql> explain SELECT * FROM thread WHERE forumid = 655 AND visible = 1 AND open …
Run Code Online (Sandbox Code Playgroud)