【问题标题】:PHP in MYSQL db execute statement really slowMYSQL db中的PHP执行语句真的很慢
【发布时间】:2019-08-16 03:43:03
【问题描述】:

我正在为一家在 MYSQL 中显示数据库信息的公司建立一个 php 网站,但有时加载该信息需要大约 20 秒,而且它只是随机发生的。正常工作时,大约需要 0.005 秒。

数据库位于公司内网的本地虚拟服务器中,但我通过 dyndns.info:port 访问它。 慢的时候,如果你多次重载,网站就一直慢,突然快加载的时候,一直在快速重载,等等。

try {
        $conection= new PDO("mysql:host=domain.dyndns.info; port=0000; dbname= db", user, pass);
        return $conection;
    } catch (PDOException $e) {
    }


执行语句中的代码很慢:


$statement = $conexion->prepare("SELECT table1.col1, table2.col2, table2.col3, table2.col4, table2.col5 FROM table1 LEFT JOIN table2 ON table1.col6 = table2.col6 LEFT JOIN table 3 ON table1.col1 = table3.col1 LIMIT 10 ");
$start_timer = microtime(true);
$statement->execute();

$piezas = $statement->fetchAll();


$end_timer = microtime(true);

查询有三个左连接,table1 有 50,000 行,table2 有 20,000 行,table3 有 80,000 行,所以我认为这可能是一个问题,但它并不能解释为什么有时网站加载速度很快。

另一个可能的问题可能是虚拟服务器,但我不确定这是否解释了查询的随机缓慢。

任何想法可能是实际问题?或任何可以帮助我的测试工具?

【问题讨论】:

  • 除了性能之外,公开的数据库 (dyndns) 存在安全风险,需要得到很好的保护。您的网络服务器没有在 Intranet 上运行并为网站提供服务的任何原因(也需要保护,但不那么容易受到攻击)?
  • 实际上,我想知道以这种方式创建网站可能存在哪些风险。原因是我对所有事情都还知之甚少。感谢您的评论,我会寻找更好的方式连接到我的数据库。

标签: php mysql sql ms-access


【解决方案1】:

问题是查询,所以我在数据库中加载了一个视图,并在我的查询中使用它而不是长查询。

$statement = $conexion->prepare("SELECT * FROM view LIMIT 10");

就是这样。谢谢大家的回答。

【讨论】:

    【解决方案2】:

    您的查询速度很慢?

    对查询运行 EXPLAIN 并对其进行分析。

    【讨论】:

      【解决方案3】:

      确保你有正确的索引

      table1 col1, col6 
      table2 col6 
      table3 col1 
      

      最终会冗余

      table2 co6, col2,col3,col4,col5
      

      【讨论】:

        【解决方案4】:

        如果有时加载速度很快,我会说这是因为缓存,具有大量行和一堆连接的表执行速度会很慢,我的建议是实现 memcached 或 redis 之类的东西并缓存这样的大查询。它将帮助您的网站更快地加载,并且您可以根据需要控制缓存。

        【讨论】:

        • 索引优先。服务器调优第二。第三个缓存。
        • query-cache最有可能使慢查询在大多数情况下变得更快,但是一个正确的索引查询不应该需要缓存这么少的数据。
        猜你喜欢
        • 2011-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-14
        • 2022-11-11
        • 2015-08-26
        • 1970-01-01
        相关资源
        最近更新 更多