我在一个特定的感兴趣的表中有一个大约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
答案 0 :(得分:0)
您可以采取一些措施来改善效果。删除一堆行不一定会加快你的整体mysql性能(无论如何都没有明显的意义)。你可以尝试的一些事情是:
我建议您阅读以下网站,它有很多可以帮助您的提示:
http://www.tocker.ca/2013/10/24/improving-the-performance-of-large-tables-in-mysql.html