相关疑难解决方法(0)

MySQL和NoSQL:帮我选择合适的

有一个大的数据库,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)

php mysql cassandra nosql

40
推荐指数
2
解决办法
2万
查看次数

任何在InnoDB上实现全文搜索的方法

我有一个非常简单的查询:

SELECT ... WHERE row LIKE '%some%' OR row LIKE '%search%' OR  row LIKE '%string%'
Run Code Online (Sandbox Code Playgroud)

要搜索some search string,但正如您所看到的,它会单独搜索每个字符串,这对性能也不利.

有没有办法在InnoDB表上使用LIKE重新创建类似全文的搜索.当然,我知道我可以使用像Sphinx这样的东西来实现这个目标,但我正在寻找一个纯粹的MySQL解决方案.

mysql sql full-text-search

2
推荐指数
1
解决办法
1942
查看次数

标签 统计

mysql ×2

cassandra ×1

full-text-search ×1

nosql ×1

php ×1

sql ×1