长待机后Firebase数据库高延迟

时间:2017-06-08 17:11:26

标签: firebase firebase-realtime-database

我目前正在非生产Firebase应用上测试Firebase,我是唯一一个可以使用的应用。

当我在最后 24小时期间没有任何查询后尝试查询数据库以检索数据时,查询大约需要 8秒。查询完成后,下一个查询将花费正常的时间(约100毫秒)。

这不是关于缓存查询,通过"下一个查询"我的意思是新的查询不一样。

重现它:

  • 创建一个名为users的数据库节点,用户子节点是用户数据(名字,姓氏,年龄,性别等)
  • 向此节点添加500,000个用户
  • 通过UID获取用户并测量时间。 (大约需要100毫秒)
  • 等24小时(我不知道确切的时间,但我确定大约24小时)
  • 通过其UID获取任何用户并测量时间。 (大约需要8秒)
  • 通过其UID获取任何用户并测量时间。 (大约需要100毫秒)

我想知道这是否是Firebase实时数据库的已知问题?

2 个答案:

答案 0 :(得分:0)

Firebase将最近使用的数据保存在其内部缓存中。几分钟后清除此缓存。

但确切的数字取决于您加载的数据量以及加载数据的方式。如果没有看到显示如何重现这些数字的具体设置,那么真的没有人能说出来。

答案 1 :(得分:0)

我达到了Firebase支持,他们能够重新创建问题并面临大约6秒的等待时间。以下是调查后的答案:

  

看起来这是预期的行为。实时数据库查询通过在内存中构建索引来工作,这需要与该位置的节点数成线性关系。一旦构建了索引,就会很快非常,但初始构建可能需要一些时间来构建,特别是对于大型位置。

     

如果您希望索引保留在数据库的内存中,您应该让监听器始终监听此查询。

基本上,由于索引大型数据库,数据库需要很长时间来处理查询。

可以通过在数据库上保留一个监听器或每隔几个小时查询一次数据库来解决问题。

在生产中,您不太可能遇到此问题,因为用户一直在访问数据库,但如果您的数据库不是一直访问的,并且您不希望用户体验等待很长时间,你应该利用讨论的解决方案。