【问题标题】:Performance issue on permissions table权限表的性能问题
【发布时间】:2015-09-08 14:32:24
【问题描述】:

我正在开发一个 ECM 软件,其中一组用户对文件夹具有权限。当文件夹树更大时,它可以在数据库中生成很多行,比如 30k 或更多。

权限表结构如下

group_folder_roles

  • id_group
  • id_folder
  • id_role

主要问题是当我必须加载所有具有构建用户文件夹树权限的文件夹时。

还有更好的方法吗?

更新

我在我的代码上做错了,没有意识到。我不知道我怎么没有注意到这一点。

后来我正确测量了响应时间,大约是 300 毫秒,发现问题是实体框架查询、转换为 JSON 和传输的总和。

我修复了使用 ADO 并简化了返回 JSON 的传输过程,如下所示:

{
   "folder" : 0,
   "roles"  : '0,1,2,3,4,5,6'
}

为了做得更好,我压缩了结果。

【问题讨论】:

  • 如果没有关于您的表和查询以及 RDBMS 是什么的更具体信息,无法回答。

标签: sql database database-design database-schema


【解决方案1】:

如果 30k 行给您带来性能问题,您需要了解原因。你可能做错了什么。在我使用过的数据库中很难遇到性能问题,直到你得到几十万行,听起来你比这小一个数量级。以下是您需要研究的几件事:

  1. 您的 rdbms 是否支持递归查询,无论是通过 Oracle 类型的 CONNECT BY 方法还是使用更标准的 WITH RECURSIVE 公用表表达式?这将有助于更好地利用索引和管理结果。
  2. 您可以查看权限是否最好使用规范化设计进行建模,或者 ACL 数组是否会表现得更好。这取决于 RDBMS
  3. 与上面的 #2 密切相关的是索引如何在您的特定 rdbms 上工作。他们有多大帮助?您可以做些什么来更多地利用它们?

【讨论】:

  • 谢谢,我已经解决了。你是对的,我的代码和查询有一些问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-02
  • 2019-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
相关资源
最近更新 更多