在mysql中删除行会降低CPU使用率吗?

时间:2016-09-16 04:32:37

标签: mysql innodb

我在一个特定的感兴趣的表中有一个大约4.2米行的mysql数据库。数据主要包括和id,纬度,经度以及一些其他元数据。

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

毫无疑问,清理未使用的数据是一个好主意,但如果它不会影响性能,那么暂时我更愿意保留它并调查更紧迫的问题(就像这个)。

我通过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

1 个答案:

答案 0 :(得分:0)

您可以采取一些措施来改善效果。删除一堆行不一定会加快你的整体mysql性能(无论如何都没有明显的意义)。你可以尝试的一些事情是:

  1. 删除未使用的索引
  2. 您可以为VM(托管MySql服务器的位置)添加更多内存
  3. 使用SSD代替HDD
  4. 我建议您阅读以下网站,它有很多可以帮助您的提示:

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