我应该以批量获取mysql数据,还是尽可能少地获取?

时间:2014-10-09 10:13:25

标签: mysql performance

我对使用MySQL时的正确方法不太确定。从一个大型网站开始,我曾经使用一个函数load_articles加载包含所有信息的文章。我加载了所有应该以某种方式显示的文章。

然而,通常只使用一些文章信息,例如只有标题,只有图像图标...所以我创建了面向对象的模型,其中Article使用MySQL在需要时使用{{1}来获取属性}和__get。这通常会导致更多的查询,但会减少从MySQL获取的数据量。

当然,理想的方法是缓冲所需的数据"然后发送一个查询。但如果这对我来说太复杂,我应该在哪里瞄准?

  1. 批量获取可能需要的所有数据并丢弃不必要的数据 - 减少查询数量
  2. 在生成页面时需要延迟加载各个属性 - 通过多次查询获取少量数据
  3. 如果第二个更好,我是否应该尽量不提取ArrayAccess,而是根据需要为个别属性选择多个?

1 个答案:

答案 0 :(得分:1)

首先,Answer totally depends on how your webpage is getting loaded& what are user requirements and what are your SLAs

假设您的网页上有5个元素,那么您的解决方案的行为如下,

  1. 获取批量数据并将其存储在本地并加载

    当您的用户需要一次查看所有数据或在用户端需要非常计算的东西时,这是一种很好的方法。在这种情况下,还只获取必需的属性。永远不要使用select * which is always worst。 传输数据时检查网络带宽,如果有许多图像或静态数据,请检查use CDN

  2. 首先获取基础数据,然后根据用户需求获取更多数据。

    这是一种很好的方法,当您的用户通常只想看到网页的第一部分时,或者他很乐意在1秒内看到屏幕上的至少第一部分。 慢慢地,当用户向下滚动并执行某些活动时,您可以加载/获取更多数据。 这样可以节省应用程序所需的内存量。服务器及其CPU周期处理批量数据。这种方法还通过非常快速地显示某些内容并继续加载来维护用户。

  3. 这一切都是针对页面加载SLA的。两种选择都适用于不同的条件(现在更优选使用第二种)

    为了减慢sql查询,您需要规范化数据库并在需要时使用适当的索引。使用最佳的sql查询来确保只获取所需的数据并提高效率。

    如果您的某些内容无法正常化并变得复杂,那么您可以查看nosql选项。'

    有效地应用这些技术将帮助您实现所需的性能 我希望我有点清楚你的困惑。