【问题标题】:Is it safe to query my database for every page load?在每次页面加载时查询我的数据库是否安全?
【发布时间】:2018-08-07 08:05:47
【问题描述】:

意味着我网站中的每个页面都从数据库中查询某些内容。

查询本身非常小,加载时间并不明显,但我想知道是否可以为每个页面都这样做,因为我不太了解从数据库查询的工作原理和是否多次执行,在我的情况下,每次页面加载都会显着影响任何事情。

【问题讨论】:

  • 一般来说,重要的是您期望有多少并发请求/查询以及您有多少资源可供使用(计算能力)。如果您不期望交通繁忙,那您可以。如果您预计流量会很大,您会发现查询数据库可能是瓶颈。您可以使用负载测试来了解您的软件可以处理多少。
  • 我不知道这是否回答了您的问题,但请考虑如果应用程序显示第 1 页(共 2 页)会发生什么,然后当用户查看另一个会话更改数据时,用户请求第 2 页,共 2 页。现在,如果您在开始时缓存了全部内容,则可能会避免不一致 - 但您不会显示最新数据,因此这些缓存结果可能无效。所以这取决于...

标签: mysql sql database oracle web


【解决方案1】:

与所有事情一样,答案是视情况而定。 :-)

您访问的大多数网站都会在每次页面加载时从数据库中查询某些内容。如果查询设计得当,他们只会查找他们需要的数据,并避免扫描大型数据库。您可能希望我的演示文稿 How to Design Indexes, Really (video) 对此有所帮助。

另一种策略是在 RAM 中使用快速缓存来存储经常需要的数据。 RAM 比磁盘驱动器快数千倍。您可能想熟悉一下Numbers Everyone Should Know。这些数字只是示例,但其目的是让程序员思考这样一个事实:在使用 RAM、磁盘、网络和 CPU 时,移动数据具有不同的成本。

P.S.:请不要相信你不擅长电脑是因为你是女性。 每个人一开始都是新手,无论他们的性别或背景如何。只有通过实践和学习,我们才能学会这些东西。我建议看Hidden Figures,这是为 NASA 开创数学和编程的女性的故事。

另一位著名的女性是Margaret Hamilton,她实际上发明了“软件工程”这一职业。

【讨论】:

    【解决方案2】:

    是的,您可以在每次页面加载时查询数据库。

    想想 Facebook 等网站。当您访问该站点时,它需要知道您是谁 - 它从数据库中获取。它需要知道它将向您显示的所有状态更新——它从数据库中获取。当您点击新闻提要的底部时,您可以阅读更多内容 - 它从数据库中获取。

    【讨论】:

      【解决方案3】:

      这很正常。大多数 Web 应用程序必须为每次页面加载(通常是多次)查询数据库,因为大部分页面内容都来自数据库。

      如果您关心性能,请考虑一下:每个页面的查询是否不同?还是一遍又一遍地加载相同的数据?如果它一直在查询相同的内容(例如当前用户的姓名),您可以通过将数据存储在应用程序的会话状态中来提高性能。但如果不同(比如用户有多少条未读消息),您需要每次都运行查询。

      【讨论】:

        【解决方案4】:

        想象一下,当您访问一个具有“whois online”或消息系统等功能的网站时,当您点击另一个页面时,该网站需要更新数据库,以便跟踪您在该网站上的位置。如果您收到一条私人消息,则可以在下一页单击访问,因为在发送消息时数据库已经更新。诀窍是仅运行查询以执行当时所需的任务。例如,如果您要在数据库中查找用户名,如果您搜索整个数据库,它的运行速度会慢很多,因为它需要搜索整个数据库。如果您按特定列进行搜索,它会更快,如果您在查询中使用诸如 LIMIT 之类的限制,它会更快。

        【讨论】:

          猜你喜欢
          • 2011-04-13
          • 1970-01-01
          • 1970-01-01
          • 2011-06-12
          • 2012-08-25
          • 1970-01-01
          • 1970-01-01
          • 2014-04-18
          • 2012-04-21
          相关资源
          最近更新 更多