Database 快速处理大量数据

Database 快速处理大量数据,database,search,parallel-processing,large-data,Database,Search,Parallel Processing,Large Data,我正在开发一个web应用程序,其中用户提供参数,这些参数用于从多达2000万行的数据库中生成前1000项的列表。我需要一次完成所有前1000个项目,并且我需要从用户的角度来看,这个排名或多或少是瞬间发生的 目前,我正在使用一个带有用户定义函数的MySQL对数据进行评分和排序,然后PHP从中获取数据。在1百万行的数据库上进行测试,这大约需要8秒,但我需要2秒左右的性能,即使对于多达2000万行的数据库也是如此。优选地,这个数字应该更低,以便保证高达50个同时用户的良好吞吐量 我愿意使用任何能够尽可

我正在开发一个web应用程序,其中用户提供参数,这些参数用于从多达2000万行的数据库中生成前1000项的列表。我需要一次完成所有前1000个项目,并且我需要从用户的角度来看,这个排名或多或少是瞬间发生的

目前,我正在使用一个带有用户定义函数的MySQL对数据进行评分和排序,然后PHP从中获取数据。在1百万行的数据库上进行测试,这大约需要8秒,但我需要2秒左右的性能,即使对于多达2000万行的数据库也是如此。优选地,这个数字应该更低,以便保证高达50个同时用户的良好吞吐量

我愿意使用任何能够尽可能高效地处理这些数据的软件处理任何进程,无论它是否是MySQL。以下是该过程的特点和限制:

与评分过程相关的每行数据约为每个项目50字节。 对数据库的插入和更新可以忽略不计。 每个分数独立于其他分数,所以可以并行计算分数。 由于大量参数和参数值,因此无法预先计算分数。 对于多个同时使用的用户,该方法应具有良好的可扩展性 就服务器数量而言,这需要的计算资源越少越好。

谢谢

< P>一种可行的方法是将所有数据加载到后面的1GB RAM中,并在C++语言中执行MySQL以外的评分和排序。这应该比MySQL更快


对于这种方法,评分必须相对简单,因为您的要求每行只剩下十分之一微秒用于评分和排名,而无需并行化或优化。

如果您可以发布您有问题的查询,可以提供帮助

虽然这里有一些东西。 确保已在数据库上创建索引。
确保使用优化的查询并使用连接而不是内部查询。

对于这类问题,如果您已经完成了所有明显的软件优化,但我们不知道,因为您没有提到任何有关软件方法的内容,那么您应该尝试一些严肃的硬件优化。最大限度地利用SQL Server上的内存,并尽可能将表放入内存中。将SSD用于表/索引存储,以便快速反序列化。如果您是群集的,请将网络速度调到最高可行的网络速度。

根据您的标准,提高性能的可能性将取决于您是否可以使用输入标准预筛选需要计算分数的行数。也就是说,如果用户提供的参数之一自动取消了大部分行的资格,那么首先应用该过滤将提高性能。如果没有一个参数具有这种特性,那么您可能需要更多的硬件或更高性能的数据库。

您处理的是什么类型的数据?你的评分算法是什么?你在执行任何连接吗?这基本上是一个大的全选,所以没有太多的优化。评分算法基本上是一大堆数学运算,所以这看起来像是一种“去做”的方法。几天前,我几乎得出了这个结论,但很高兴看到外界的意见证实了这一点,因为这需要做大量的工作才能做到。接下来,我需要研究如何在缓存性能、矢量化等方面优化此策略。