【问题标题】:Is there a perfomance gain on the language chosen and DB?选择的语言和数据库是否有性能提升?
【发布时间】:2009-10-12 20:07:42
【问题描述】:

我们目前的系统使用 PHP 和 Microsoft SQL Server。

我正在尝试确定使用 PHP 和 MySQL 是否会提高性能?

更改到这个平台需要一些努力,所以我希望尽可能多地了解。为了确定正确的选择,我应该问自己一些问题吗?

谢谢大家

更多信息

  • 1 亿条记录定期处理(每月)
  • PHP + MS SQL Server 在同一台机器上运行
  • Windows 环境

澄清

我最初希望这种交换是一个神奇的解决方案,显然不是!

为了保持这个线程有用,我们是否可以专注于切换到 MySQL 或任何其他数据库系统会对经过微调且无能为力的整体应用程序产生什么影响!

【问题讨论】:

    标签: php mysql sql-server database


    【解决方案1】:

    您可能希望首先分析您的应用程序,并确定在数据库中花费了多少时间,以及每个查询花费了多少时间。

    那么更容易回答,因为您可以说应用程序在数据库中花费了 3%,其中 27% 用于选择,其余的是涉及触发器的插入。

    另外,MySQL 将在哪个操作系统上运行?

    它是否在与 PHP 服务器不同的计算机上?

    您当前的架构是什么样的?

    如果你看到你的 webserver 和 db server 都在同一台计算机上,然后你为 MySQL 将它们分开,你得到了性能提升,这很可能是由于单个 cpu现在不必在您的第一台计算机上执行双重任务。

    PHP 的哪个版本?会改吗?

    您当前使用的是 mssql 函数、odbc 函数还是 pdo?

    【讨论】:

    • 首先,我确信问题出在数据库端——但不确定到底在哪里。该系统处理数以亿计的记录,并且大多数语句都是更新的。我们正在研究索引,但在我们开始这个过程之前,谈谈我们的平台可能是个好主意。我觉得使用 PHP + MS SQL Server 很奇怪??如果有任何性能提升(多少),找到它真的很棒!
    • MS SQL Server 比 mysql 更适合某些需求,这取决于您需要什么。您可能希望首先优化数据库,因此,如果您需要更多索引,请添加它们。但是,首先,从分析开始。然后,一次一个地改进,看看有没有改进,因为你会为索引之类的东西付出代价。比如插入会比较长,但是如果你主要是更新,where子句是索引,那么会更快。我喜欢在优化时知道数字,因此我可以证明更改带来了改进。
    • 我绝对同意改变事物然后进行分析。这是要做的事情,还有很大的空间可以进行简单的改进。我刚才想知道如果要更改 Db 系统,性能是否会改变。我认为 PHP 在 MySQL 上的表现会比 MS SQL Server 更好。
    【解决方案2】:

    在大多数情况下,我不会出于性能原因考虑更换数据库后端,除非我确定其他所有内容都已用尽。

    RDBMS 是复杂的动物。在考虑将它们切换出去之前,请仔细查看您当前的数据库。更好的是——请一位有 SQLServer 经验的专家来做这件事。配置不当的数据库无处不在。

    您可能会看到性能提升切换,或者您可能会受到打击。在您知道当前数据库已正确调整之前,这一切都只是猜测。

    正如 James Black 刚刚回答的那样,提高性能的正确方法是分析您的应用程序,并找出它在哪里花费时间。

    【讨论】:

    • +1。老实说,重写架构和/或重写慢查询很可能会带来比切换到 MySQL 更大的性能提升
    • 感谢弗兰克的评论 - 我相信这可能是我们的情况,但我希望 MySQL 和 PHP 能带来一些魔力!但显然它没有那么容易。
    【解决方案3】:

    在数据库方面检查的最重要的事情是正确使用索引。使用 EXPLAIN PLAN 检查您的查询,看看他们是否正在执行 TABLE SCAN。如果是,请添加索引以提高性能。

    我非常怀疑将 SQL Server 换出并换入 MySQL 是否会产生任何影响。如果就这么简单,并且 MySQL 比 SQL Server 具有如此全面的性能优势,那么 SQL Server 的市场份额将在一夜之间下降到零,直到差异得到纠正。有了互联网,就无法隐藏这种差异。

    对整个应用进行概要分析的建议非常好。您可以在等待时检查您的查询。

    【讨论】:

    • 好主意,这肯定会完成。
    【解决方案4】:

    除了已经说过的话,我认为值得一提的是,MySQL 在这方面并不局限于单一的一组特性——有几种不同的存储引擎可以与 MySQL 一起使用,每一种都有不同的集合的性能特征。带有 MyISAM 的 MySQL 与带有 InnodDB 的 MySQL 有很大的不同,而带有 Infobright 的 MySQL 与任何一个都有很大的不同(当然,还有其他的)。

    【讨论】:

    • 你说得对,我想这个问题应该针对一个 MySQL 引擎,但我对此了解得足够多。
    【解决方案5】:

    如果您有一个存在性能问题的大型数据库,您首先需要聘请一位可以对其进行性能调整的数据库专业人员。如果您没有专长于数据库开发和性能调优的员工,那么转换到新后端可能会产生新问题,而且不太可能解决旧问题。

    如果设计和维护数据库的人知道自己在做什么,SQl Server 可以轻松处理 TB 级数据库。

    我要指出的是,除了 SQL Server 之外,什么都不能在 SQL Server 机器上运行,尤其是在您期望高性能的情况下。仅此声明就使我认为您可能会遇到一个严重不足的系统来完成您要求它执行的操作。我永远不会考虑在与我们的数据库相同的服务器上运行我们的应用程序。

    【讨论】:

    • 感谢您提供信息丰富的回复。虽然我们在一台机器上运行所有东西,但这不会给我们带来问题,因为我们的应用程序实际上是 5 个 php 脚本,它们所做的只是协调查询并提供前端,就应用程序层而言,它确实是最小的。
    猜你喜欢
    • 1970-01-01
    • 2013-11-22
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多