相关疑难解决方法(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万
查看次数

6000万条目,从某个月中选择条目.如何优化数据库?

我有一个拥有6000万条目的数据库.

每个条目包含:

  • ID
  • DataSourceID的
  • 一些数据
  • 约会时间

  1. 我需要选择某个月的参赛作品.每个月包含大约200万条目.

     select * 
       from Entries 
      where time between "2010-04-01 00:00:00" and "2010-05-01 00:00:00"
    
    Run Code Online (Sandbox Code Playgroud)

    (查询大约需要1.5分钟)

  2. 我还想从给定的DataSourceID中选择某个月的数据.(大约需要20秒)

大约有50-100个不同的DataSourceID.

有没有办法让这更快?我有什么选择?如何优化此数据库/查询?


编辑:有约.每秒60-100次插入!

mysql sql query-optimization

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

为提供大量数据的查询提供最佳MySQL设置?

我是一名科学家,我使用MySQL作为数值模拟结果的存储空间.通常我有一组通过我的实验和控制集获得的数据.这两个数据集存储在一个表中.一个指示器字段告诉我记录是来自实验还是来自控制集.该表通常有大约1亿条记录.5000万次实验和5000万次对照.

当我对数据进行后期处理时,我的典型任务包括首先发出以下两个查询:

select b0,t0 from results_1mregr_c_ew_f where RC='E' and df>60  /// getting experiments data 
Run Code Online (Sandbox Code Playgroud)

select b0,t0 from results_1mregr_c_ew_f where RC='C' and df>60 /// getting controls data
Run Code Online (Sandbox Code Playgroud)

我在RC上有一个多列索引,df.这些查询需要花费大量时间,查询大部分时间都会花费"发送数据"

我在8核MacPro上使用12GB RAM运行它.我是这台机器的单个用户,这个任务是主要任务,因此我可以将所有RAM专用于MySQL.所有表都是MyISAM(我可以转换它们,如果这会增加我的查询速度).

我很感激有关如何加快这些查询的任何建议.我应该更改一些设置,索引,查询....

在每个查询中,我希望能够获得大约5000万条记录. 请注意,由于管理原因,将表拆分为两个表,其中一个包含实验,另一个包含控制观察.

这是输出:

explain select b0, t0 from results_1mregr_c_ew_f  where RC="C" and df>60
+----+-----------+---------------------+-----+-------------+---+-------+----+-------+-----------+
| id |select_type|table                |type |possible_keys|key|key_len|ref |rows   |Extra      |
+----+-----------+---------------------+-----+-------------+---+-------+----+-------+-----------+
|  1 |SIMPLE     |results_1mregr_c_ew_f|range|ff           |ff |11     |NULL|6251121|Using where|
+----+-----------+---------------------+-----+-------------+---+-------+----+-------+-----------+
Run Code Online (Sandbox Code Playgroud)

以下是来自的输出:

show indexes from results_1mregr_c_ew_f;
+-----------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table                 | Non_unique | Key_name | Seq_in_index | Column_name | …
Run Code Online (Sandbox Code Playgroud)

mysql performance

7
推荐指数
1
解决办法
7341
查看次数

标签 统计

mysql ×3

cassandra ×1

nosql ×1

performance ×1

php ×1

query-optimization ×1

sql ×1