【发布时间】:2011-09-30 15:56:50
【问题描述】:
我正在开发一个用户提供参数的 Web 应用程序,这些参数用于从多达 2000 万行的数据库中生成前 1000 项的列表。我需要一次所有前 1000 项,并且从用户的角度来看,我希望这个排名或多或少是瞬间发生的。
目前,我正在使用带有用户定义函数的 MySQL 对数据进行评分和排名,然后 PHP 从那里获取它。在 1M 行的数据库上进行测试,这大约需要 8 秒,但我需要大约 2 秒的性能,即使对于高达 20M 行的数据库也是如此。最好,这个数字应该更低,这样可以保证最多 50 个并发用户的良好吞吐量。
我对任何可以尽可能高效地处理这些数据的软件的进程持开放态度,无论是不是 MySQL。以下是该流程的特点和限制:
- 与评分过程相关的每行数据约为每项 50 个字节。
- 对数据库的插入和更新可以忽略不计。
- 每个分数都独立于其他分数,因此可以并行计算分数。
- 由于参数和参数值较多,无法预先计算分数。
- 该方法应该可以很好地适应多个同时使用的用户
- 就服务器数量而言,这需要的计算资源越少越好。
谢谢
【问题讨论】:
-
您正在处理什么样的数据(整数、字符串等?)?你的评分算法是什么?您是否正在执行任何联接?
标签: database search parallel-processing large-data