对于我们的应用程序,我们保留大量数据,这些数据由三个整数列(源,类型和时间)索引。 加载大量数据可能需要一些时间,我们已经实施了各种措施来减少为更大的查询搜索和加载的数据量,例如为不需要高分辨率的查询存储更大的粒度(时间-明智的)。

在我们的备份存档中搜索数据时,数据存储在bzip压缩文本文件中,但结构基本相同,我注意到通过grep解压缩stdout并通过grep将其解压缩到磁盘和grep的速度要快得多文件。 实际上,对于未压缩的文件(即将文件折扣到磁盘上)来说,无人管道甚至要快得多。

这让我想知道磁盘I / O的性能影响实际上是否比我想象的要重得多。 所以这是我的问题:

例如,而不是拥有此表

CREATE TABLE data ( `source` INT, `type` INT, `timestamp` INT, `value` DOUBLE);

我会

CREATE TABLE quickdata ( `source` INT, `type` INT, `day` INT, `dayvalues` BLOB );

对于quickdata中的每一行,数据大约有100-300行,并且在解压缩和解码blob字段期间动态搜索所需的时间戳。

你能理解这个吗? 我应该调查哪些参数? 可以附加什么字符串? 存在哪些DB功能(任何DBMS)以实现类似的效果?

===============>>#1 票数:4 已采纳

这让我想知道磁盘I / O的性能影响实际上是否比我想象的要重得多。

当然。 如果你必须转到磁盘,性能命中比内存大许多个数量级。 这让我想起了经典的吉姆格雷论文, 分布式计算经济学

计算经济学正在改变。 今天(1)一个数据库访问,(2)十个字节的网络流量,(3)100,000个指令,(4)10个字节的磁盘存储,以及(5)一个兆字节的磁盘带宽之间存在粗略的价格平价。 这对于如何构建互联网规模的分布式计算具有影响:一个将计算尽可能接近数据,以避免昂贵的网络流量。

那么问题是,你有多少数据,你能承受多少内存?

如果数据库变得非常庞大 - 就像没有人能够承受这么多内存,即使在20年内 - 你需要聪明的分布式数据库系统,如谷歌的BigTableHadoop

===============>>#2 票数:0

我在Python上使用数据库时发现了类似的发现:访问磁盘的成本非常非常高。 事实证明,要求整个数据块并在python中迭代它比创建七个更窄的查询要快得多(即接近两个数量级)。 (每天有一个数据)

当我获得每小时数据时,它会进一步爆炸。 24x7很多查询很多!

  ask by Hanno Fietz translate from so

未解决问题?本站智能推荐:

1回复

两个PostgreSQL索引中哪个更有效?

我有以下PostgreSQL模式: 它的主要用例是典型的生产者/消费者方案。 不同的用户可以在特定用户的特定框中将项目插入数据库中,并且每个用户都可以检索到发给她/他的框中最上面的(这意味着最旧的)项目。 它或多或少地模仿了数据库级别的队列功能。 更准确地说,最常见的操作如下:
1回复

键入时如何提高搜索性能?

我正在尝试在您键入功能时实现搜索(例如默认电子邮件应用程序中的搜索功能)-我有一个包含50个项目的列表框-每个项目都绑定到具有字符串字段的类对象上……我希望搜索并显示在其字符串字段之一中的搜索框中具有文本的项目-这是用户输入文本框时的尝试...尝试了几种方法-> 1 >>
3回复

在mysql数据库中,哪种保存权限的方法更有效?

我想同时保存单个用户和用户组的权限。 在我的mysql数据库中,我有一个权限表,其中存储了权限名称和权限ID。 我有一个用户表,其中存储了用户名,密码等,其中还包含一个ID,并且我有一个组表,其中存储了组名和组ID。 现在最有效的选择是什么? 要制作2个表,一个表包含用户权限,另一个
2回复

哪个查询更有效? (PostgreSQL的)

我有一张桌子,上面有很多记录(百万)。 当“ .._ ups”值之一设置为0时,我需要检查该记录的所有其他“ ups”类型是否也均为0,然后将其删除。 发生这种情况是因为用户可以取消其特定类型的“ ups”,但不能取消其他类型的“ ups”。 如果他们取消每种类型的“上”,我想删除该记录。
5回复

这些查询中哪个更有效?

这些查询中哪个更有效?
3回复

Android App更有效地转到数据库或将集合保存在内存中

我建立了我的第一个android应用。 我有一组显示的列表。 我想知道手机的内存容量是否较小,这是一种更好的设计方法,可以使数据库每次都进入我的列表,或者将其保留在内存中吗? 我确实需要频繁地对列表进行重新排序,因此只需按已排序的顺序将它们从数据库中取出,这将非常快。
1回复

导入大量数据并有效搜索

我当前正在编写一个包含两个CSV的程序-一个包含数据库密钥(以及其他与当前问题无关的信息),另一个是资产清单。 该程序从第一个CSV检查数据库密钥,查询在线数据库以检索资产密钥,然后从第二个CSV获取资产状态。 (这是解决愚蠢的API问题的解决方法。) 我的问题是,虽然要迭代的CSV相对较短-通
1回复

如何有效搜索潜在的大型数据库?

这更多的是讨论。 我们有一个多租户的系统,它将具有可以包含数百万行的表。 我们的用户界面允许用户使用许多不同的搜索条件对这些表执行搜索-因此他们可以将这些条件进行任意组合。 为数据库中的所有这些搜索列建立索引或将完整表加载到内存中然后进行过滤是不切实际的。 有人可以为解决这个
2回复

有没有办法使此SQL更有效?

请考虑以下表格: 部 雇员 编写查询以返回总人数为4或更多的那些部门的雇员的empname和deptname列。 记录应按姓氏的字母顺序返回 这是我的看法: 您将如何改进?
2回复

查询表或视图更有效?

我仍在努力围绕视图的确切工作方式以及何时最好使用视图与直接查询表进行比较。 这是我的情况: 所有基础数​​据都驻留在一个表中,该表存储了三个月的数据 该表包括四列:“ TagName”,“ Alarm”,“ Timestamp”和“ Value”; 标记了“ TagName