删除 mysql 中的行会减少 CPU 的使用率吗?

Will removing rows in mysql decrease CPU usage?

我有一个 mysql 数据库,其中包含大约 420 万行特定的 table 兴趣。数据主要由 ID、纬度、经度以及一些其他元数据组成。

因为实际上只有很小一部分数据(最新的)是相关的;大多数数据实际上只是为了记录。它的大小高达 1.7gb,最近我一直在观察 mysql CPU 使用率飙升至 400%。

不言而喻,清除未使用的数据是个好主意,但如果它不应该影响性能,那么我暂时宁愿保留它并调查更紧迫的问题(比如这个)。

我通读了 MySQL high CPU usage [closed] 并提出了一些很好的建议,但在我们的生产数据库上测试太多之前。我很好奇,在我看来,一些明显的解决方案是否确实是一个答案。

我记得读过,使用 InnoDB 删除行不一定会提高性能,但找不到位置。也许有人可以确认这是不是真的。

这里是 SHOW CREATE TABLE item:

CREATE TABLE `item` (
  `encounter_id` varchar(50) NOT NULL,
  `spawnpoint_id` varchar(255) NOT NULL,
  `item_id` int(11) NOT NULL,
  `latitude` double NOT NULL,
  `longitude` double NOT NULL,
  `disappear_time` datetime NOT NULL,
  PRIMARY KEY (`encounter_id`),
  KEY `item_spawnpoint_id` (`spawnpoint_id`),
  KEY `item_item_id` (`item_id`),
  KEY `item_disappear_time` (`disappear_time`),
  KEY `item_latitude_longitude` (`latitude`,`longitude`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

我可能 运行 的一个查询示例是:

SELECT * FROM item WHERE latitude > 38 AND latitude < 37

您可以采取一些措施来提高性能。删除一堆行不一定会加快整体 mysql 性能(无论如何都不会引起注意)。您可以尝试的一些事情是:

  1. 删除未使用的索引
  2. 您可以为您的 VM 添加更多内存(托管 MySql 服务器的地方)
  3. 使用 SSD 而不是 HDD

我建议您阅读以下网站,其中有很多对您有帮助的提示:

http://www.tocker.ca/2013/10/24/improving-the-performance-of-large-tables-in-mysql.html