删除 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 性能(无论如何都不会引起注意)。您可以尝试的一些事情是:
- 删除未使用的索引
- 您可以为您的 VM 添加更多内存(托管 MySql 服务器的地方)
- 使用 SSD 而不是 HDD
我建议您阅读以下网站,其中有很多对您有帮助的提示:
http://www.tocker.ca/2013/10/24/improving-the-performance-of-large-tables-in-mysql.html
我有一个 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 性能(无论如何都不会引起注意)。您可以尝试的一些事情是:
- 删除未使用的索引
- 您可以为您的 VM 添加更多内存(托管 MySql 服务器的地方)
- 使用 SSD 而不是 HDD
我建议您阅读以下网站,其中有很多对您有帮助的提示:
http://www.tocker.ca/2013/10/24/improving-the-performance-of-large-tables-in-mysql.html