Previous Entry Share Next Entry
point, polygon
1
white_thesis wrote in ru_mysql
попробовал spatial ext

1) Один элемент POINT из пары 4хбайтовых целых увеличивает размер файла данных таблицы в среднем на 13 байт на 1 запись
`loc` point not null
update tbl0 set loc=point(lat, lng)

2) скорость построения индекса по этому элементу как-то очень быстро падает с ростом базы.
1М записей индексируются за несколько минут
а вот 112М записей заметно дольше
mysql> alter table mini add spatial key (loc);
Query OK, 113780093 rows affected (1 day 18 hours 48 min 24.56 sec)
Records: 113780093 Duplicates: 0 Warnings: 0

3) индекс получается ужасно большой по объему
myD = 12 Gb
myI = 8 Gb

4) поиск "все точки в указанной области координат" по таблице с 1М строк выполняется очень быстро, милисекунды
тот же поиск на полной таблице 112М строк занимает в среднем 9.9 секунды

В общем - интереснейшая штука, но в узкой области. Отлично для всяких сложных выборок типа "пересекающихся областей сложной формы", если объем данных не слишком большой.

  • 1
Не знаю как это проверить.
Буфер для индекса был 1 гиг.
Судя по мониторингу системных процессов по занавес процедуры mysqld что-то записывал со скоростью в несколько от десятков до сотни кб/сек, читал до десятка кб/сек и практически не нагружал процессор, но последние минуты скорость записи начала быстро расти до десятка мб/сек
Т.е. процесс индексации упирался не в дисковый вв и не в выч.мощность.

  • 1
?

Log in