代码之家  ›  专栏  ›  技术社区  ›  Mazatec

允许PHP解析大文件比从MySQL数据库调用数据快吗?

  •  3
  • Mazatec  · 技术社区  · 15 年前

    所以。我在MySQL数据库中有一个数据表,例如:

    • 艺术家传记

    比如说:100位艺术家。

    管理员修改 使用内容管理系统,系统查询数据库,并将数据的序列化PHP数组保存为服务器上的文件。

    在前端,当加载页面而不是查询数据库时,页面只包括 文件(使用输出缓冲)并由此对象生成HTML页面布局。

    这是个好主意吗?这会比每次页面加载时都有数百个用户查询数据库更快吗?

    作为这个问题的扩展,如果我开始对数据进行分页,例如将MYSQL result对象的限制设置为10行,那么作为PHP数组访问整个表并将其分成10个组(根据查询字符串回显相关部分)会慢一些吗?

    7 回复  |  直到 15 年前
        1
  •  5
  •   NikiC    15 年前

    可能会慢一些。将其存储在文件系统上需要对 即使你只需要一小部分数据。

    快速的 ! 如果它们不是,那么您将丢失一个索引;)

        2
  •  3
  •   webbiedave    15 年前

    这个 系统查询数据库并保存 服务器上的文件。

    如果你要这么做,你应该走九码 缓存生成的HTML

    甚至可以使用此方法缓存分页的HTML。

        3
  •  1
  •   Alex Jose    15 年前

    我不确定文件解析和mysql查询执行的速度差异。由于在管理员更改列表之前,您的内容是静态的,因此可以创建HTML页面布局并将其存储为用户可用的HTML文件。它肯定会减少服务器负载,因为页面不需要任何解析或sql查询执行。

    如果使用分页,则不需要从mysql加载完整结果,可以使用 LIMIT 关键字。

        4
  •  1
  •   Robert    15 年前

    我不能给你一个特定于PHP的答案,但我建议不要序列化数据,因为数据库是用来处理大量数据的。我建议您将数据存储在数据库中,因为您可能希望稍后将其用于其他事情,如生成需要聚合数据的报告。如果没有mysql这样的数据库引擎,这样的练习将是禁止的。

    最后一个性能说明是IIS缓存html输出,我认为apache也缓存html输出,尽管Im没有100%缓存html输出。

        5
  •  1
  •   Davis Peixoto    15 年前

    我想你应该缓存这些文件,而不是创建一个要读取的文件。

    查询有成本。过滤文件内容并不一定比查询数据库快(数据越多,效率越低)。

    另一件要提的是,对于一个数据库来说,100行几乎什么都不是。真正地。如果是10000+你就可以开始担心性能了。100行对于任何现代数据库来说都是小菜一碟。

    正如我所说的,你可以为每次更新“编译”那些静态文件,因此这只需要几秒钟或更少的时间,这样做的好处是提供直接访问,这是检索信息的最快方式(这里不讨论内存,因为内存更快,但需要更复杂的解决方案)。

        6
  •  0
  •   Jon Snyder    15 年前

    如果你只说100张唱片的话,我觉得这两种方式都没什么区别。实际上,您所做的只是缓存一个MySql查询。如果您希望它更快,可以使用APC将查询缓存在内存中。更快的方法是将结果的每一页缓存到内存中的单独对象中。

        7
  •  0
  •   Daff    15 年前

    这种速度的提高可能是诱人的,但我认为这不值得创建和解析PHP文件,甚至可能比简单的数据库查询还要慢。另外,你也放弃了很多灵活性(你必须实现你想在数据上做出的任何类型的查询)。减少数据库负载的常用方法是使用缓存系统,如 Memcached