首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在每10秒(短时间内)插入数据的表上进行无索引的快速数据检索

在每10秒(短时间内)插入数据的表上进行无索引的快速数据检索
EN

Stack Overflow用户
提问于 2020-09-04 14:03:47
回答 1查看 199关注 0票数 2

我从一个有20K行的表中从第三方源中获取数据,在那里无法更改表的填充方式。

在第三方上,表如下所示

  1. 新数据每15秒大约有7K行
  2. 在任何给定时间,只有最后三个时间戳可用,rest数据将被删除。
  3. 表中没有索引,在那里。由于不可避免的原因,这两种方法都不能被请求,而且插入速度可能很慢。

我知道以下几点

  1. 当数据插入时,行锁和层次结构上的其他锁正在被采取。
  2. 没有锁的select问题仍然存在。
  3. 当数据在临时表中与我们一起在本地时,当我们加入表时,在取取时没有任何其他表的联接。
  4. 当数据插入在第三方停止时,数据在100 is到122 is之间。
  5. 当服务启动时,它需要3到5秒。

如有任何帮助/建议/方法,我们将事先表示感谢。

EN

回答 1

Stack Overflow用户

发布于 2020-09-04 14:35:50

以下是一个相当高端的解决方案。基于你所说的,我相信它会起作用,但是会有很多细节需要解决。

简单地说:表分区。

  • 在此表上设置分区方案
  • 根据我最近读到的一个文章,这可以用未索引的堆来完成。
  • 数据每15秒加载一次?然后分区需要基于这15秒的间隔。

对于给定的数据广播(即每15秒一次):

  • 创建“下一步”分区
  • 加载数据
  • 将新分区(新数据)切换到主表中。
  • 切换最老的分区(一次只显示三个时间段的数据,对吗?)
  • 删除“退役”分区

虽然有潜在的效率和效力,但这将是非常混乱的。我看到的最大问题是,如果他们不能添加一个简单的索引,我看不出他们怎么可能设置表分区。

另一个类似的技巧是设置分区视图,实质上是“滚动您自己的分区”。这应该是这样的:

  • 有一组结构相同的表
  • 创建视图联合ALLing表
  • 在dataload上,创建一个新表,将数据加载到该表中,然后更改视图以包含该最新表并删除最老的表。

这可能会出现比分区解决方案更糟糕的锁定/阻塞问题,尽管这在很大程度上取决于您的读取活动有多重。当然,这比仅仅添加一个指数要混乱得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63742696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档