首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当添加两个或更多权限条件时,Hasura查询变得指数级地变慢

。Hasura是一个开源的GraphQL引擎,用于构建实时应用程序。它提供了强大的权限系统,可以通过定义权限条件来限制对数据的访问。

当我们在Hasura中添加多个权限条件时,每个条件都需要进行计算和验证。这意味着每个权限条件都会增加查询的复杂性和执行时间。当权限条件增加到两个或更多时,查询的执行时间会呈指数级增长,导致查询变得非常缓慢。

为了解决这个问题,我们可以考虑以下几点:

  1. 优化权限条件:仔细审查每个权限条件,确保它们是必要的。如果可能的话,尽量减少权限条件的数量,以减少查询的复杂性。
  2. 使用索引:在数据库中创建适当的索引,以加快查询的执行速度。索引可以帮助数据库快速定位符合权限条件的数据。
  3. 缓存查询结果:如果查询的结果不经常变化,可以考虑使用缓存来存储查询结果。这样可以避免每次查询都重新计算权限条件。
  4. 分批处理数据:如果查询的数据量非常大,可以考虑将数据分批处理,以减少每次查询的负载。可以使用分页或者其他分割数据的方法来实现。
  5. 使用Hasura性能优化工具:Hasura提供了一些性能优化工具,可以帮助我们分析和优化查询的性能。可以使用这些工具来定位性能瓶颈,并采取相应的优化措施。

总结起来,当添加两个或更多权限条件时,Hasura查询变得指数级地变慢。为了解决这个问题,我们可以优化权限条件、使用索引、缓存查询结果、分批处理数据,并使用Hasura性能优化工具来提升查询的执行速度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用Go重写:项目性能提升5倍,内存减少40%

其目的是能够利用云存储服务,同时也利用 hasura 的功能,如它的 graphql API、权限、行动、预设等。...使用了 k6 并设计了以下测试: 测试开始,它会在前 10 秒内将 workers 的数量从 1 增加到 TARGET 然后再运行 60 秒才结束。...另一个重要的指标是响应时间,Hasura Storage 提供了两个数据:最小响应时间,开源告诉我们系统未承受压力的响应时间;以及 P95,开源告诉我们大多数用户的响应时间最多是多少(包括系统处于压力之下...“这是一项重大改进,可以让我们在不增加整体基础设施费用的情况下为更多用户和流量提供服务。”...Hasura Storage 方面表示,他们决定重写服务是为了提高性能指标;而在对两个服务进行并列基准测试后,他们也可以有底气的宣称成功显着改善了所有指标。

30830

用Go重写Node.js服务:项目性能提升5倍,内存减少40%

其目的是能够利用云存储服务,同时也利用 hasura 的功能,如它的 graphql API、权限、行动、预设等。...使用了 k6 并设计了以下测试: 测试开始,它会在前 10 秒内将 workers 的数量从 1 增加到 TARGET 然后再运行 60 秒才结束。...图片 另一个重要的指标是响应时间,Hasura Storage 提供了两个数据:最小响应时间,开源告诉我们系统未承受压力的响应时间;以及 P95,开源告诉我们大多数用户的响应时间最多是多少...(包括系统处于压力之下)。...图片 Hasura Storage 方面表示,他们决定重写服务是为了提高性能指标;而在对两个服务进行并列基准测试后,他们也可以有底气的宣称成功显着改善了所有指标。

4.1K10

我们在未来会怎样构建Web应用程序?

不管怎样,它们通常是与客户端非常紧密耦合的。为什么我们不能直接将数据库暴露给客户端呢?  F. 权限 好吧,我们不这样做的原因是我们需要确保权限正确设置。例如,你应该只能看到你好友的帖子。...理想情况下,我们应该有一些非常接近数据库的东西,确保任何数据访问都通过权限检查。像 Postgres 这样的数据库有行安全性,但这很快就会变得很麻烦。...它提供了对权限的支持,从而消除了对端点的需求。 K 问题也可以从中大大获益:我认为它的原型制作速度表现还是市面上最出色的。你只需从index.html开始就行了! 但它也有两个问题: 第一,查询能力。...虽然你可以做查询,但你要自己负责正则化并处理数据。这意味着它不能自动进行乐观更新,不能做响应式查询等。他们的权限模型也很像 Firebase,因为它遵循了 Postgres 的行安全性。...Supabase 以牺牲更多客户端支持为代价为你提供了更好的查询能力。Hasura 以牺牲原型制作速度为代价,为你提供了更强大的订阅和更强大的本地状态。

10K30

设计数据网格以控制数据蔓延

服务 提供数据通常使用查询语言 API 进行。 查询语言是一种通用的、高度灵活的、高表达性的语言,它在一个操作中表示临时数据请求的全部意图。...细心的读者会注意到这两个列表中都出现了 GraphQL;稍后会对此进行更多说明。 将数据网格变为现实 三种技术应运而生,使数据网格成为现实:数据目录、API 网关和分布式查询引擎。...它们以更复杂的执行模型为基础,在 Atlan 和 OpenMetadata 等数据目录的简单直通 SQL 之上添加了跨数据库连接、谓词下推和相对高效的查询处理。...两个领先的选择,Hasura 和 Apollo Router,可以很好协同工作,但是只有 Hasura 才能真正为使用 GraphQL 调整现有数据源做好准备。...许多人正在认识到它在机器学习、分析数据密集型应用中的效用,所有这些都成为当今数据生态系统中竞争的必备条件

9310

激荡二十年:HTTP API 的变迁

GraphQL 的理想情况一直没有很好达成,因为服务端不可能为一个多层随意嵌套的查询去准备数据。...同时 GraphQL 还有其他很多设计上考虑不周的问题,其中最让人诟病的是,对 HTTP 协议的无视,也就导致整个 HTTP 生态和 GraphQL 工作很别扭,还有查询 n+1 的问题(data...2020:我的第三次 API 工具的探索 如果说 goldrin 是一个被外部环境倒逼出来的急中生智,quenya,则更多像是我在无拘无束的条件下,把我之前做过的诸多系统回溯一下,集大成的找乐子项目。...前面提到的 GraphQL 令人诟病的 n+1 的问题,在 Hasura 面前都不是是个事,因为引发 n+1 问题的嵌套查询,翻译成 SQL 就是一个 INNER JOIN,于是 n+1 问题就这么被悄无声息解决了...我们欣喜看到,postgREST 和 Hasura 这样的项目,在努力往这个方向发展。

1.7K30

日活3kw下,如何应对实际业务场景中SQL过慢的优化挑战?

在执行计划中,看到key字段有值且type为index,很多人错误认为这表示查询已经利用了索引。...通过优化查询条件添加索引、限制返回字段等方式,可以改善这个查询的性能,使其执行更加高效。 为什么互联网公司都不建议使用多表join?...在实际应用中,如果有两个表进行JOIN操作,复杂度最高可以达到O(n^2),而对于三个表则是O(n^3),随着表的数量和数据量的增加,JOIN操作的效率会呈指数下降。...情况五:表中数据量太大 单个表中的数据量超过1000万条,通常会导致查询效率下降,即使使用了索引也可能变得比较缓慢。在这种情况下,单纯建立索引并不能完全解决问题。...多个并发请求争夺共享资源,会导致锁等待,进而增加执行时间,使SQL变慢。这种情况也会类似于CPU被打满的问题。

11210

MySQL深分页,limit 100000,10 优化

文章目录一、limit深分页为什么会变慢二、优化方案2.1 通过子查询优化(覆盖索引)回顾B+树结构覆盖索引把条件转移到主键索引树2.2 INNER JOIN 延迟关联2.3 标签记录法(要求id是有序的...)2.4 使用between...and...我们日常做分页需求,一般会用limit实现,但是偏移量特别大的时候,查询效率就变得低下。...(每一条select语句都会从1遍历至当前位置,若跳转到第10000页,则会遍历100000条记录)执行计划如下:SQL变慢原因有两个:limit语句会先扫描offset+n行,然后再丢弃掉前offset...limit 100000,10 扫描更多的行数,也意味着回表更多的次数。...—— 发起一个索引覆盖查询,在explain的extra列可以看到using index的信息 可以看到Extra中的Using index,表明我们成功使用了覆盖索引 把条件转移到主键索引树如果我们把查询条件

23510

业界时评 | Twitter如何使用Redis提高可伸缩性

针对度量值与灵活样式这两种场景,都需要更多空间。为提高空间的有效性,就需要具有分层的键空间。 根据业务需要,Twitter为Redis增加了两种数据结构:Hybrid List与BTree。...例如数据量巨大,ziplist在添加删除元素的性能方面表现得不如人意;而linklist由于为每个key提供了两个指针,就可以更加高效添加删除元素,遗憾的是,多余的指针又会带来空间的浪费。...在Redis中,处理二键(Secondary Key)域(Secondary Field)的方式是使用hash map。之所以要存储排序后的数据,就是为了更好执行区间查询。...如果二名称无法排序,且数据量较大查询就变成了线性的,效率较低。BTree正是为了解决此问题,它借鉴了BTree的伯克利算法,在分级key的区间查询方面具有更好的性能。...如果存在多个分区,其中一个变慢,则整个查询也会变慢。 明确的配置对于运维非常重要。Twitter使用Mesos作为Job Scheduler,对CPU、内存等资源的管理与监控有助于更好的运维。

1.1K60

2020年AWS,Microsoft和Google应进行的云收购

通过适当的添加,这些提供商可以为他们的客户增加可观的利益,并使自己能够更有利衡量其竞争对手。此外,有成长中的高科技公司具有出色的领导才能,可以做出这些改进。...而且,由于构建这些服务的团队都是相对独立的,因此即使他们已经精通该平台的另一部分,他们使用新的AWS工具,用户通常也面临着重大的学习曲线。 亚马逊已经做出了一些努力来解决这个问题。...这包括使其用户数据库更多成为真实的数据存储,功能齐全的Web控制台,该控制台支持编辑以及简单,全面的社交登录以及安全性声明标记语言集成。...IT团队不可避免必须在其前面运行本地代理,并且他们需要在数据进入Elasticsearch对数据进行处理-更不用说围绕水平扩展的麻烦了。...Google在添加服务在竞争中拥有巨大的早期优势,但是在2014年使用Firebase的人今天可能不会注意到除了增加功能之外的很大差异。

6.5K20

P问题、NP问题、NPC问题

也就是说,对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。...不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数复杂度;数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n...总结来说,多项式复杂度的比指数复杂度的算法要好很多。...到这里我们注意到NPC问题是有两个条件的:      →首先,它得是一个NP问题;      →然后,所有的NP问题都可以约化到它。      证明一个问题是 NPC问题也很简单。...我们可以就此直观地理解,NPC问题目前没有多项式的有效算法,只能用指数甚至阶乘复杂度的搜索。

1.9K60

实战!聊聊如何解决MySQL深分页问题

我们日常做分页需求,一般会用limit实现,但是偏移量特别大的时候,查询效率就变得低下。本文将分4个方案,讨论如何优化MySQL百万数据的深分页问题,并附上最近优化生产慢SQL的实战案例。...SQL的执行流程 执行计划如下: SQL变慢原因有两个: limit语句会先扫描offset+n行,然后再丢弃掉前offset行,返回后n行数据。...limit 100000,10 扫描更多的行数,也意味着回表更多的次数。 通过子查询优化 因为以上的SQL,回表了100010次,实际上,我们只需要10条数据,也就是我们只需要10次回表其实就够了。...因为二索引叶子节点是有主键ID的,所以我们直接根据update_time来查主键ID即可,同时我们把 limit 100000的条件,也转移到子查询,完整SQL如下: select id,name,balance...,只需要0.034秒 执行计划如下: 查询思路就是,先通过idx_update_time二索引树查询到满足条件的主键ID,再与原表通过主键ID内连接,这样后面直接走了主键索引了,同时也减少了回表。

1.6K20

精选MySQL面试题(附刷题小程序)

table_priv权限表: 记录数据表的操作权限。 columns_priv权限表: 记录数据列的操作权限。 host权限表: 配合db权限表对给定主机上数据库操作权限作更细致的控制。...对视图内容的更新(添加,删除和修改)直接影响基本表。 视图来自多个基本表,不允许添加和删除数据。 7.5 视图的优点有那些? 查询简单化。视图能简化用户的操作 数据安全性。...因为一个表的数据量很大,会由于使用频率低的字段的存在而变慢。 增加中间表对于需要经常联合查询的表,可以建立中间表以提高查询效率。...水平拆分是指数据表行的拆分,表的行数超过200万行,就会变慢,这时可以把一张的表的数据拆成多张表来存放。...排序字段就是分片字段的时候,我们通过分片规则可以比较容易定位到指定的分片,而排序字段非分片字段的时候,情况就会变得比较复杂了。

71730

大表优化的常见手段

MySQL 单表记录数过大,数据库的 CRUD 性能会明显下降,一些常见的优化措施如下: 限定范围: 务必禁止不带任何限制数据范围条件查询语句,比如:当用户在查询订单历史的时候,可以控制在一个月的范围内...例如,用户表中既有用户的登录信息,又有用户的基本信息,可以将用户表拆分成两个单独的表,甚至放到单独的库做分库。简单来说,垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表。 如下图所示: ?...垂直分区 垂直拆分的优点: 可以使行数据变小,在查询减少读取的 Block 数,减少 I/O 次数。此外,垂直分区可以简化表的结构,易于维护。...此外,垂直分区会让事务变得更加复杂; 水平分区: 保持数据表结构不变,通过某种策略存储数据分片。这样每一片数据就分散到不同的表或者库中,达到了分布式的目的。 水平拆分可以支撑非常大的数据量。...水平拆分是指数据表行的拆分,表的行数超过200万行,就会变慢,这时可以把一张的表的数据拆成多张表来存放。

69300

团队交付的速度变慢了,我该怎么办?

是什么导致团队在发展过程中放慢脚步 通常情况下,团队迅速扩大规模,例如随着对公司投资和技术团队的增长,交付速度通常会开始变慢。我相信有很多原因导致团队在快速发展的环境中慢下来。...最后,有时候这只是一个感知优先问题。快速扩张的公司的管理者通常习惯于事无巨细了解正在发生的事情,因为在这些公司规模还很小的时候,这很容易做到。...我们相信 8 个人的团队既具备取得成功所需的技能,同时又不会让人感觉团队变得迟钝。一个团队让人感觉到迟钝,你就会发现,每天的站会变得无聊,参与度下降,保持沟通也变得困难。...我所看到的是,需要考虑技术债务战略性技术工作优先但却不清楚这些工作的价值,会出现更多一致性方面的问题。...这也是人们加入离开团队以及团队动态发生变化时应该重新审视的东西。我介绍了更多关于 定义和使用团队章程) 的方法,如果你想了解更多,可以了解一下它们。

40120

关于 MySQL 的知识点与面试常见问题都在这里

这里的查询条件包括查询本身、当前要查询的数据库、客户端协议版本号等一些可能影响结果的信息。因此任何两个查询在任何字符上的不同都会导致缓存不命中。...next-key lock Next-locking keying为了解决Phantom Problem幻读问题 查询的索引含有唯一属性,将next-key lock降级为record key Gap...将参数innodb_locks_unsafe_for_binlog设置为1 ⑦大表优化 MySQL单表记录数过大,数据库的CRUD性能会明显下降,一些常见的优化措施如下: 限定数据的范围: 务必禁止不带任何限制数据范围条件查询语句...例如,用户表中既有用户的登录信息又有用户的基本信息,可以将用户表拆分成两个单独的表,甚至放到单独的库做分库。 简单来说垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表。...水平拆分是指数据表行的拆分,表的行数超过200万行,就会变慢,这时可以把一张的表的数据拆成多张表来存放。

61530

实战!聊聊如何解决MySQL深分页问题

(求个星标置顶) 我们日常做分页需求,一般会用limit实现,但是偏移量特别大的时候,查询效率就变得低下。...SQL的执行流程 执行计划如下: SQL变慢原因有两个: limit语句会先扫描offset+n行,然后再丢弃掉前offset行,返回后n行数据。...limit 100000,10 扫描更多的行数,也意味着回表更多的次数。 通过子查询优化 因为以上的SQL,回表了100010次,实际上,我们只需要10条数据,也就是我们只需要10次回表其实就够了。...因为二索引叶子节点是有主键ID的,所以我们直接根据update_time来查主键ID即可,同时我们把 limit 100000的条件,也转移到子查询,完整SQL如下: select id,name,balance...,只需要0.034秒 执行计划如下: 查询思路就是,先通过idx_update_time二索引树查询到满足条件的主键ID,再与原表通过主键ID内连接,这样后面直接走了主键索引了,同时也减少了回表。

10.4K71

通达OA工作流-流程设计

实现自动跳转,需要满足以下条件: 1)【经办权限】按【角色】【部门】授权,此【角色】【部门】中无人员, 自动选择下一步骤。...如果指定了条件公式,则按照条件公式所给出的关系来判断。 转入条件指数据满足转入条件,才可以转入本步骤,合理设定转入条件,可有效控制流程的走向。...转出条件指数据满足转出条件,才可以转出本步骤,用于对表单数据进行校验。比如,在一个费用审批流程中,金额字段要求必须填写,那么可以设置转出条件金额不为空,才允许转交下一步骤。...2.2.3.6 触发器 所谓触发器,即流程达到某一条件所执行的程序相关操作的动作。 触发节点:即在流程进行何种操作产生触发的动作。...修改模式和追加模式两个都选择的 时候,就是既可以增加又可以修改。 字段权限设置:是针对列表控件某列值进行单独控制。可以对某列对数据设置保 密只读。

2.7K30

数据库大表优化

MySQL 单表记录数过大,数据库的 CRUD 性能会明显下降,一些常见的优化措施如下: 1. 限定数据的范围 务必禁止不带任何限制数据范围条件查询语句。...例如,用户表中既有用户的登录信息又有用户的基本信息,可以将用户表拆分成两个单独的表,甚至放到单独的库做分库。 简单来说,垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表。...数据库垂直分区 垂直拆分的优点: 可以使得列数据变小,在查询减少读取的 Block 数,减少 I/O 次数。...此外,垂直分区会让事务变得更加复杂 4. 水平分区 保持数据表结构不变,通过某种策略存储数据分片。这样每一片数据分散到不同的表或者库中,达到了分布式的目的。 水平拆分可以支撑非常大的数据量。...水平拆分是指数据表行的拆分,表的行数超过 200 万行,就会变慢,这时可以把一张的表的数据拆成多张表来存放。

1.4K40

最佳实践:TiDB 业务读变慢分析处理

作者:李文杰 网易游戏计费 TiDB 负责人在使用运维管理 TiDB 的过程中,大家几乎都遇到过 SQL 变慢的问题,尤其是查询相关的读变慢问题。...本文针对读 TiDB 集群的场景,总结业务 SQL 在查询突然变慢的分析和排查思路,旨在沉淀经验、共享与社区。一....○ 也就是说,一个大查询它越慢,它的优先就会不断调低,优先不断调低其执行的时间可能会更久。所以,尽可能减少大查询事务。...同样,这个是一个兜底的排查思路,适用范围较广、通用性较强,但是排查起来要花费更多的时间和精力,也要求管理员对数据库本身的运行原理有一定的掌握。上面的排查步骤还是很复杂的,对用户很不友好。...总结● 了解 TiDB 的读过程,有助于我们掌握数据库的底层执行原理,遇到问题可以快速定位和分析原因,也能引导我们更好使用数据库,发挥其最好的性能。

25020

面试必备!91 道 MySQL 面试题(含答案)

对视图内容的更新(添加,删除和修改)直接影响基本表。 视图来自多个基本表,不允许添加和删除数据。 视图的操作包括创建视图,查看视图,删除视图和修改视图。 3. 视图的使用场景有哪些?...因为一个表的数据量很大,会由于使用频率低的字段的存在而变慢。 增加中间表 对于需要经常联合查询的表,可以建立中间表以提高查询效率。...MySQL单表记录数过大,数据库的CRUD性能会明显下降,一些常见的优化措施如下: 限定数据的范围:务必禁止不带任何限制数据范围条件查询语句。...水平拆分是指数据表行的拆分,表的行数超过200万行,就会变慢,这时可以把一张的表的数据拆成多张表来存放。...跨分片的排序分页 般来讲,分页需要按照指定字段进行排序。排序字段就是分片字段的时候,我们通过分片规则可以比较容易定位到指定的分片,而排序字段非分片字段的时候,情况就会变得比较复杂了。

88321
领券