首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一次查询所有设置是否更有效,还是在需要设置时进行查询?

问一次查询所有设置是否更有效,还是在需要设置时进行查询?
EN

Software Engineering用户
提问于 2011-07-15 08:58:34
回答 2查看 576关注 0票数 1

对于我的博客脚本,我设置了一个用户组和权限系统。每个用户都被分配给一个用户组,而我有一长串权限设置。两者都存储在MySQL数据库中。

目前,我对每个页面执行大约10个权限查询,用于各种内容管理功能。再加上另外20多个关于一般博客使用的查询,查询的数量正在增加。

在脚本开始时执行一个查询,将所有权限设置检索到数组中,然后让所有函数比较数组中的值,而不是检查数据库,这样会更有效吗?

EN

回答 2

Software Engineering用户

发布于 2011-07-15 09:03:54

是的,1查询比X更有效。

您是否考虑过进一步减少查询,只在登录时这样做并将权限存储在会话中?

票数 7
EN

Software Engineering用户

发布于 2011-07-20 18:56:37

基于@Jonno在这里说的话:一次查询所有设置是否更有效,还是在需要设置时进行查询?

原来的Q是这样的:

对于我的博客脚本,我设置了一个用户组和权限系统。每个用户都被分配给一个用户组,而我有一长串权限设置。两者都存储在MySQL数据库中。目前,我对每个页面执行大约10个权限查询,用于各种内容管理功能。再加上另外20多个关于一般博客使用的查询,查询的数量正在增加。我想知道在脚本开头执行1次查询是否更有效,以便将所有权限设置添加到数组中,然后让所有函数比较数组中的值,而不是检查数据库。意见?

那事实和问题呢?

  • 事实:1查询比x查询更少。(减少时间消耗,减少处理等)
  • 事实:没有侧写,你只是在猜测。我不是靠猜测来编程的。
  • 问:你有没有检查过这样做有多密集?

我可以回答最后一个问题。它是“不,我没有”,我知道这一点,因为如果你有,你会来到这里,“我如何使这个架构更快”。(程序员似乎不喜欢的一件事是,“但你没有先试一试!?!!”)所以在将来要记住这一点。)

如果您和大多数人一样,实际上是通过另一层内容来运行查询,这需要很长的时间(在cpu时间内)才能真正返回结果,并且希望它花费更少的时间。您可以尝试几种方法,例如手动编写查询代码,这将有所帮助,但会减少您已经使用的中间层的帮助。

但在琼诺的回答中,我建议你这样做。为权限创建API。当您更新一个权限时,您将通过这个API执行此操作,API将检查该用户的当前会话,并在找到时进行更新,然后更新数据库。它还跟踪任何如此更改的设置,并在遇到错误时撤消所有操作。Yay事务状态。当然,这种天真的方式只是试图更新和忽略任何错误。

所以我们要用伪码来实现,好吗?

代码语言:javascript
复制
class sessionByUser{
  User user

  UpdateValue(key,value){
    foreach(session in Sessions){
      if (session.user == user)
        session.key = value
    }
    db.updateUserKey(key,value) //what you were doing before
  }
}

您可以看到,我们需要立即实现crud操作的其余部分,但这为用户会话值的实时更新提供了基础。

就像我说的,这完全是伪代码,但是如果你不每次都回到数据库的话,这就是它的方法。FWIW:微软ASP.NET用户数据库每次都会返回到数据库,以检查是否有任何更新。我的系统没有明显的负荷。

此外,此设置也适用于其他全局值。假设您希望拥有一个全局对象存储,用于跟踪其他服务的API键之类的东西,您可以使用这种自定义的概念,即拥有一个带有访问器方法的全局单例。

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

https://softwareengineering.stackexchange.com/questions/93072

复制
相关文章

相似问题

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