问题标签 [large-data-volumes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1031 浏览

mysql - MySQL:如何处理常规的大量插入/更新?

我有一张表格,可以在其中跟踪有关网站使用情况的各种统计信息。每周一次,我计划使用这些统计数据和其他表格中的信息来计算用于多个报告的各种关键指标。这是为了避免在每次访问报表时计算复杂数据。这些指标将存储在一个名为“指标”的单独表格中。

大约有。220 个国家的 50 个指标(即每个国家分别有 50 个指标)。鉴于这些数字是每周计算的,我得到了令人难以置信的数字:

50 x 220 = 每周 11,000 次插入/更新

我的指标表结构如下:

...我基本上会在每个国家/地区插入/更新 50 行不同“类型”的行。

我想问的是:我在这里完全走错了吗?将国家/地区设置为列而不是行(220 列...)可能会更好吗?或者也许是指标失去了一些灵活性?通常如何处理如此大量的插入/更新?

在此先感谢您的时间。

结论:看起来这很清楚,感谢所有的贡献。

0 投票
4 回答
6226 浏览

java - 使用大型数据结构时,避免 Java(eclipse) 中的“内存不足错误”?

好的,所以我正在编写一个程序,不幸的是,它需要使用一个巨大的数据结构来完成它的工作,但是它在初始化期间由于“内存不足错误”而失败。虽然我完全理解这意味着什么以及为什么它是一个问题,但我很难克服它,因为我的程序需要使用这个大型结构,而我不知道任何其他方式来存储它。

该程序首先索引我提供的大量文本文件。这工作正常。

然后它使用这个索引来初始化一个大的二维数组。该数组将有 n² 个条目,其中“n”是文本语料库中唯一单词的数量。对于我正在测试的相对较小的块(大约 60 个文件),它需要生成大约 30,000x30,000 个条目。一旦我在完整的预期语料库上运行它,这可能会更大。

每次索引后,它都会在初始化数据结构(稍后处理)时始终失败。

我做过的事情包括:

  • 修改我的代码以使用原语int[]而不是TreeMap
  • 消除冗余结构等...
  • 另外,我已经运行程序-Xmx2g以最大化我分配的内存

我相当有信心这不会是一个简单的代码行解决方案,但很可能需要一种非常新的方法。我正在寻找这种方法是什么,有什么想法吗?

谢谢,B。

0 投票
5 回答
3408 浏览

sql - RDBMS 的实际大小限制

我正在开发一个必须存储非常大的数据集和相关参考数据的项目。我从来没有遇到过需要这么大的表的项目。我已经证明,至少有一个开发环境无法在数据库层处理对应用层生成的视图的复杂查询(具有多个内部和外部连接的视图、分组、求和和对具有 9000 万行的表进行平均)所需的处理)。

我测试过的 RDBMS 是 AIX 上的 DB2。失败的开发环境加载了将在生产中处理的卷的 1/20。我确信生产硬件优于开发和登台硬件,但我只是不相信它能够应对庞大的数据量和查询的复杂性。

在开发环境失败之前,需要超过 5 分钟才能返回一个小数据集(数百行),该数据集是由针对大型表的复杂查询(许多连接、大量分组、求和和平均)生成的。

我的直觉是数据库架构必须改变,以便视图当前提供的聚合作为非高峰批处理的一部分执行。

现在我的问题。声称有过这种事情经历的人(我没有)向我保证,我的恐惧是没有根据的。他们是吗?现代 RDBMS(SQL Server 2008、Oracle、DB2)能否应对我所描述的体积和复杂性(给定适当数量的硬件),或者我们是否处于像 Google 的 BigTable 这样的技术领域?

我希望从那些实际上不得不在非理论层面上使用这种卷的人那里得到答案。

数据的性质是金融交易(日期、金额、地理位置、业务),因此几乎所有数据类型都被表示。所有的参考数据都是标准化的,因此是多个连接。

0 投票
1 回答
90 浏览

perl - 克隆和大型结构处理的问题

我的 Perl 脚本有我不理解的奇怪行为。我正在处理存储为哈希数组的大型结构,该数组在处理时会增长。问题是当我将结构存储在硬盘上时,它的最大容量约为 8mb,但在处理时它需要大约 130mb 的内存。为什么差别这么大?

处理的主要流程如下所示:

0 投票
3 回答
136 浏览

php - 大型维护php脚本。如何在脚本执行时打印调试字符串?

我有一个非常大的 php 维护脚本(基本上它为内部存档重新创建缩略图),需要 10 到 20 分钟才能完成,我注意到 php 仅在整个脚本完成解析后才显示“回声”。有没有办法显示如下消息:

而剧本还在做他的事?

非常感谢

0 投票
5 回答
3432 浏览

sql - 如何快速从数据库加载 100 万条记录?

现在我们有一个 1.000.000 的 firebird 数据库,必须在 ALL 加载到 RAM 内存后对其进行处理。要获得所有这些,我们必须使用 (select * first 1000 ...) 提取数据 8 小时。解决方案是什么?

0 投票
1 回答
4343 浏览

python - 如何为具有大型数据集的 python 多处理选择块大小

我正在尝试使用 python 在可以使用http://docs.python.org/library/multiprocessing高度并行化的任务上获得一些性能。

在查看他们的库时,他们说对非常长的迭代使用块大小。现在,我的可迭代对象并不长,它包含的一个字典很大:~100000 个条目,元组作为键,numpy 数组作为值。

我将如何设置块大小来处理这个问题以及如何快速传输这些数据?

谢谢你。

0 投票
7 回答
20346 浏览

java - 在 SQL 中将大量记录插入表中的最快方法

问题是,我们有大量记录(超过一百万)要从 Java 应用程序插入到单个表中。记录是由 Java 代码创建的,它不是从另一个表移动的,因此 INSERT/SELECT 将无济于事。

目前,我的瓶颈是 INSERT 语句。我正在使用 PreparedStatement 来加快进程,但在普通服务器上每秒无法获得超过 50 条记录。这张表一点也不复杂,上面也没有定义任何索引。

这个过程需要的时间太长,时间长了就会出问题。

我该怎么做才能获得最大速度(每秒插入)?

数据库:MS SQL 2008。应用程序:基于 Java,使用 Microsoft JDBC 驱动程序。

0 投票
3 回答
8665 浏览

sql - 在数百万行表上执行聚合函数

我在使用数百万行表时遇到了一些严重的性能问题,我觉得我应该能够相当快地获得结果。这是我所拥有的,我如何查询它,以及它需要多长时间:

  • 我正在运行 SQL Server 2008 Standard,因此分区目前不是一个选项

  • 我正在尝试汇总过去 30 天内特定帐户的所有库存的所有视图。

  • 所有视图都存储在下表中:

  • 该表有 132,000,000 条记录,超过 4 个演出。

  • 表中 10 行的样本:

  • 我在 LogInvSearches_Daily 上有以下索引:
  • 我只需要从特定帐户 ID 的库存中提取库存。我也有一个关于库存的索引。

我正在使用以下查询来聚合数据并为我提供前 5 条记录。此查询当前需要 24 秒才能返回 5 行:

我尝试使用 CTE 首先获取行并聚合它们,但这并没有更快地运行,并且给了我基本相同的执行计划。

因此,鉴于我在执行计划中获得了良好的 Index Seeks,我该怎么做才能让它运行得更快?

更新:

这是没有 DENSE_RANK() 的相同查询运行,它需要完全相同的 24 秒才能运行,并为我提供相同的基本查询计划:

谢谢,

0 投票
12 回答
86677 浏览

java - 使用 Hibernate 的 ScrollableResults 慢慢读取 9000 万条记录

我只需要使用 Hibernate 读取 MySQL 数据库中表中的每一行并基于它编写一个文件。但是有 9000 万行,而且非常大。因此,以下内容似乎是合适的:

问题是上面将尝试将所有 9000 万行加载到 RAM 中,然后再进入 while 循环......这会用 OutOfMemoryError: Java heap space exceptions 杀死我的内存:(。

所以我猜 ScrollableResults 不是我想要的?处理这个问题的正确方法是什么?我不介意这个 while 循环是否需要几天时间(我不希望这样)。

我想处理这个问题的唯一其他方法是使用 setFirstResult 和 setMaxResults 来遍历结果,并且只使用常规的 Hibernate 结果而不是 ScrollableResults。感觉好像它效率低下,并且当我在第 89 百万行调用 setFirstResult 时将开始花费非常长的时间......

更新: setFirstResult/setMaxResults 不起作用,结果需要很长时间才能达到我担心的偏移量。这里一定有解决办法!这不是一个非常标准的程序吗?我愿意放弃 Hibernate 并使用 JDBC 或任何它需要的东西。

更新2:我想出的解决方案可以正常工作,但不是很好,基本上是以下形式:

由于我还有其他条件,即使全部在索引中,它仍然没有我希望的那么快......所以仍然开放其他建议..