我们正在使用 AWS Aurora/MySQL 引擎版本5.7.mysql_aurora.2.09.0
,并且在一个包含约 10,000,000 行的表上有一个空间索引:
CREATE TABLE `foo` (
...
`lat` decimal(10,6) DEFAULT NULL,
`lng` decimal(10,6) DEFAULT NULL,
...
`geo_polyline` linestring DEFAULT NULL,
...
`geo_location` point GENERATED ALWAYS AS (point(`lng`,`lat`)) STORED NOT NULL,
...
SPATIAL KEY `geo_location_index` (`geo_location`),
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
当我们进行这样的查询时:
SELECT COUNT(*) from `foo`
where
st_intersects(st_geomfromtext('POLYGON ((16.2 48.1, 16.4 48.1, 16.4 48.2, 16.2 48.2, 16.2 48.1))'), geo_polyline)
and
st_contains(st_geomfromtext('POLYGON ((16.2 48.1, 16.4 48.1, 16.4 48.2, 16.2 48.2, 16.2 48.1))'), geo_location);
服务器崩溃。这种情况是可重复的:每次都会发生。
还有其他人经历过类似的事情吗?有人有什么解决方法吗?