【问题标题】:Why are MySQL queries slow on one device but not on another?为什么 MySQL 查询在一台设备上很慢,而在另一台设备上却没有?
【发布时间】:2017-12-08 14:01:05
【问题描述】:

我正在创建一个基于文本的 RPG,主要只使用 PHP 和 MySQL。我在笔记本电脑上遇到了一些缓慢的查询,但这些相同的查询在我的 PC 上要快得多,我的笔记本电脑有点旧。以下是两者的规格和查询示例,以及我使用的内容。


电脑:
->显卡:英伟达 GeForce 1060 3GB
->处理器:锐龙 3 1300x 3.5GhZ 10MB 缓存
->内存:8GB DDR4 2400MHz
->固态硬盘:256GB
//不确定这些是否重要
->数据库服务器版本:10.1.26-MariaDB
->阿帕奇:2.4.27
->数据库客户端版本:libmysql - mysqlnd 5.0.12-dev - 20150407
笔记本电脑:
->显卡:Intel HD 3000
->处理器:Intel Pentium 2020M 2.4GHz 2MB 缓存
->内存:4GB DDR3
->硬盘:512G​​B

这是一个查询示例:

UPDATE data SET posx = $posX, posy = $posY, last_action = '.time().', current_stamina = $newStamina WHERE id = $id

在我的 PC 上进行此类查询的平均时间是:0.004 秒,但在我的笔记本电脑上执行相同的查询需要 0.4 到 0.1 秒。平均而言,它在 0.2 秒内执行。对于单个简单查询,我认为这非常慢。我认为这可能是因为缺少索引,所以我为 ID 添加了索引,仍然是相同的结果。

我不太关心我的笔记本电脑的性能,但我担心的是,如果我在笔记本电脑上遇到如此慢的查询,当我将游戏放在在线服务器上时,我是否应该期待同样的慢查询? (我还没有)

问题是我笔记本电脑上的其他查询速度很快(例如从数据库读取或连接)。

我知道这是非常具体的事情,所以我很感激任何信息。

谢谢你,

赫克托

【问题讨论】:

  • 简短回答.. 将数据写入磁盘时,SSD 比 HHD 快得多.. 因此,如果您希望服务器也能快速写入,您应该搜索使用 SSD 的虚拟主机..
  • 坦率地说,您没有已经在 ID 上建立索引这一事实令人担忧,因此我几乎会质疑您设置的所有其他部分。
  • 好吧,据我所知,primary_key (ID) 是被声明为主键的索引,所以我认为这不是原因。
  • 在MySQL中,PK一个索引,它是UNIQUE。添加INDEX(id) 是一种浪费。

标签: mysql performance


【解决方案1】:

这可能有很多因素。首先,您的笔记本电脑内存较少,如果 mariadb 在 PC 和笔记本电脑上配置相同,例如使用超过 4GB 的内存,这可能很重要。这可能会导致问题。然后,如前所述,您的 PC 上可能有 SSD,但笔记本电脑上有硬盘。然后可能有很多常驻应用程序在您的笔记本电脑上运行,这会降低 mysql 的速度。尝试比较两台设备上 mysql 的配置,查看两台设备上运行了多少进程,查看笔记本电脑上的 IO 次数。
您很可能不必担心将您的应用程序放到网上并且查询速度很慢 - 这些服务器配置良好,绝对简单的更新不应该成为问题。

【讨论】:

    猜你喜欢
    • 2019-12-31
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    相关资源
    最近更新 更多