我正在开发一个用户提供参数的 Web 应用程序,这些参数用于从多达 2000 万行的数据库中生成前 1000 项的列表。我需要一次所有前 1000 项,并且从用户的角度来看,我需要或多或少立即发生此排名。
目前,我正在使用带有用户定义函数的 MySQL 对数据进行评分和排名,然后 PHP 从那里获取它。在 1M 行的数据库上进行测试,这大约需要 8 秒,但我需要大约 2 秒的性能,即使对于高达 20M 行的数据库也是如此。最好,这个数字应该更低,这样可以保证多达 50 个同时用户的良好吞吐量。
我对任何可以尽可能高效地处理这些数据的软件的任何进程持开放态度,无论它是否是 MySQL。以下是该过程的特征和约束:
- 与评分过程相关的每一行的数据约为每项 50 个字节。
- 对数据库的插入和更新可以忽略不计。
- 每个分数都独立于其他分数,因此可以并行计算分数。
- 由于参数和参数值较多,无法预先计算分数。
- 该方法应该适用于多个同时用户
- 就服务器数量而言,这需要的计算资源越少越好。
谢谢