gpt4 book ai didi

php - 有没有办法弄清楚为什么我的生产 mysql 这么慢?

转载 作者:可可西里 更新时间:2023-11-01 08:35:17 26 4
gpt4 key购买 nike

我有一个 php 文件,它解析一个 txt 文件并将数据写入 Mysql 表。 xml 文件相当大,超过 600 万行。我是在家里的电脑上做的,整个过程花了大约六个小时。现在,我正尝试在我增强的专用服务器(32GB 内存)上做完全相同的事情,12 小时后,它几乎只完成了 10% 的记录。

不知道是不是连上了,前几天我也通过phpmyadmin导入了一个很大的sql文件,我觉得用的时间比应该的长很多。

可能是什么问题?

TIA!

最佳答案

除非您进行概要分析和诸如 EXPLAIN 查询之类的操作,否则很难说。

不过,有一些可能性值得研究:

  • 大量索引:如果您正在执行 INSERTS,那么与您正在插入的表关联的每个索引都需要更新。如果有很多索引,那么单个插入可以触发大量写入。您可以通过在开始之前删除索引并在之后恢复它们来解决这个问题
  • MyISAM 与 InnoDB:前者往往更快,因为它牺牲了一些特性来换取速度。写入 InnoDB 表往往会更慢。注意:我只是指出这是应用程序运行速度变慢的潜在原因,我不建议您将 InnoDB 表更改为 MyISAM!
  • 无事务:如果使用 InnoDB,您可以通过在事务内执行批量操作来加速它们。如果您不使用事务,那么您执行的每个 INSERT 都会有一个隐式事务。
  • PHP 机器和 SQL 服务器之间的连接:在测试中,您可能在同一个机器上同时运行 PHP 和 SQL 服务器。您可能一直在通过命名管道或 TCP/IP 连接(开销更大)进行连接,但无论哪种情况,带宽实际上都是无限的。如果 SQL 服务器与运行 PHP 脚本的机器不是同一台机器,那么它将被限制为两者之间连接中存在的任何带宽。
  • 并发用户数:在任何给定时间,您都是测试 SQL 数据库的唯一用户。实时系统可能并且将会有任意数量的额外用户连接并在给定时间运行查询。这会占用脚本的时间,增加其运行时间。您应该在晚上运行大型 SQL 作业,以免给其他用户带来不便,同时也让他们不会影响您的性能。还有其他原因,但上述原因值得首先调查。

当然,问题可能出在 PHP 方面,您无法确定它出在数据库中,直到您调查到底是哪里变慢了以及为什么变慢。

关于php - 有没有办法弄清楚为什么我的生产 mysql 这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14889646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com