Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

MySQL: оптимизация конструкции between

MySQL *
Оптимизация явно не является коньком MySQL сервера. Цель данной статьи объяснить разработчикам, которые плотно не работают с базами данных и иногда не понимают, по какой причине запрос, который успешно отрабатывает в других СУБД, в MySQL безбожно тормозит, каким образом оптимизируется конструкция between в MySQL.
MySQL использует rule based оптимизатор. Зачатки cost based оптимизации в нем конечно присутствуют, но не в должной мере, в какой их хотелось бы видеть. По этой причине часто мощности получаемых после применения фильтров множеств вычисляются неверно. Это приводит к ошибкам оптимизатора и выбору неверного плана выполнения. При чем полученные between оптимизации невозможно изменить явным указанием: индексов для выполнения запроса и порядка соединения таблиц.
смотрим далее
Всего голосов 49: ↑48 и ↓1 +47
Просмотры 21K
Комментарии 49

Индексируем небо

Программирование *Геоинформационные сервисы *
image
Потребность в пространственном поиске возникает довольно часто. Равно как и в пространственном JOIN’е — нахождении пересечения двух наборов пространственных объектов. Далеко не всегда хочется привлекать тяжелую артиллерию. Что ж, попробуем придумать способ решить проблему “малой кровью, могучим ударом”.
Читать дальше →
Всего голосов 26: ↑26 и ↓0 +26
Просмотры 10K
Комментарии 11

Прикручиваем пространственный индекс к ничего не подозревающей OpenSource СУБД

Поисковые технологии *Data Mining *
image
Мне всегда нравилось, когда заголовок однозначно говорит о том, что будет дальше, например, «Техасская резня бензопилой». Поэтому под катом мы действительно будем добавлять пространственный поиск к СУБД, в которой его изначально не было.
Читать дальше →
Всего голосов 39: ↑38 и ↓1 +37
Просмотры 17K
Комментарии 15

Прикручиваем Web Map сервис к ничего не подозревающей OpenSource СУБД

Разработка веб-сайтов *Геоинформационные сервисы *
image
В прошлый раз мы конструировали пространственный индекс, а сейчас просто воспользуемся этим навыком, чтобы сделать живой (не статический) картографический сервис с web интерфейсом и производительностью, скажем, миллион запросов в день на совершенно обычном «железе».
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 5.5K
Комментарии 3

Рисуем карту одним select'ом или о пользе многотабличных индексов

Программирование *Геоинформационные сервисы *
image
Данная статья написана в продолжение серии, повествующей о прототипировании простого и производительного динамического web map сервера. Ранее рассказывалось о том, как в нем устроены пространственные индексы, а так же о том, как можно просто так вот взять и нарисовать пространственный слой. Сейчас мы сделаем это чуть изящнее.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 7K
Комментарии 0

Использование квадродеревьев при расчёте пробок 2ГИС

Блог компании 2ГИС Геоинформационные сервисы *
Даже не являясь навигатором, 2ГИС собирает и показывает информацию о пробках. Во-первых, это необходимо для построения оптимальных маршрутов, а во-вторых — такие данные очень нужны пользователям в больших городах.

В 2ГИС сервис пробок появился в сентябре 2011 года и сегодня работает в пяти городах (Новосибирск, Санкт-Петербург, Красноярск, Уфа, Казань). В планах на ближайшее будущее — запустить пробки во всех городах-миллионниках.

Под катом история про то, с какими проблемами мы столкнулись и как их решили.

Читать дальше →
Всего голосов 56: ↑53 и ↓3 +50
Просмотры 21K
Комментарии 20

О трехмерном Z-order замолвите слово

Блог компании 2ГИС Программирование *Алгоритмы *C *Геоинформационные сервисы *

«Давным-давно, кажется, в прошлую пятницу» автору попалась на глаза статья, в которой сравниваются разные популярные методы индексации небесных объектов. По причине неровного дыхания к этой теме пришлось разбираться в тонкостях и делать выводы.

Вы спросите: «Кому вообще интересны эти небесные объекты?» и даже: «Ну и при чём здесь 2ГИС?» и будете отчасти правы. Ведь методы пространственного индексирования являются универсальной ценностью.

Обычно, имея дело с геоданными, мы работаем с локальной проекцией на плоскость и тем самым отмахиваемся от искажений. В масштабах планеты это сделать труднее — начинают выпирать астрономические проблемы.
Что касается объёмов данных, уже сейчас в OSM более 4 млрд точек и 300 млн дорог. Это соизмеримо с масштабами, характерными для звёздных объектов. Да и помимо всего прочего, звёздные атласы — отличный стенд для разработки и отладки пространственных алгоритмов.

Обещанные тонкости и выводы под катом.
Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Просмотры 7.6K
Комментарии 4

Про Z-оrder и R-дерево

PostgreSQL *Алгоритмы *C *Геоинформационные сервисы *
image

Индекс на основе Z-order кривой в сравнении с R-деревом имеет массу преимуществ, он:

  • реализован как обычное B-дерево, а мы знаем что
  • страницы B-дерева имеют лучшую заполняемость, кроме того,
  • Z-ключи сами по себе более компактны
  • B-дерево имеет естественный порядок обхода, в отличие от R-дерева
  • B-дерево быстрее строится
  • B-дерево лучше сбалансировано
  • B-дерево понятнее, не зависит от эвристики расщепления/слияния страниц
  • B-дерево не деградирует при постоянных изменениях
  • ...

Впрочем, у индексов на основе Z-order есть и недостаток — сравнительно низкая производительность :). Под катом мы попробуем разобраться с чем связан этот недостаток и можно ли что-то с этим сделать.
Читать дальше →
Всего голосов 35: ↑34 и ↓1 +33
Просмотры 12K
Комментарии 10

Z-order vs R-tree, продолжение

PostgreSQL *Алгоритмы *C *Геоинформационные сервисы *

В прошлый раз мы пришли к выводу, что для эффективной работы пространственного индекса на основе Z-order необходимо сделать 2 вещи:

  • эффективный алгоритм получения подинтервалов
  • низкоуровневую работу с B-деревом

Вот именно этим мы и займёмся под катом.
Читать дальше →
Всего голосов 26: ↑26 и ↓0 +26
Просмотры 7.7K
Комментарии 9

Z-order vs R-tree, оптимизация и 3D

PostgreSQL *Алгоритмы *C *Геоинформационные сервисы *

Ранее (1, 2) мы обосновали и продемонстрировали возможность существования
пространственного индекса, обладающего всеми плюсами обычного B-Tree — индекса и
не уступающего по производительности индексу на основе R-Tree.
Под катом обобщение алгоритма на трёхмерное пространство, оптимизации и бенчмарки.
Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Просмотры 5.9K
Комментарии 0

Z-order в 8D

Open source *PostgreSQL *Алгоритмы *C *

Индексы на основе самоподобных заметающих кривых пригодны не только для организации поиска пространственных данных. Они работоспособны и на разнородных данных, положенных на целочисленную решетку.

Под катом мы займёмся проверкой возможности применения Z-кривой для реализации 8-мерного индекса с прицелом на куб OLAP.
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 3.8K
Комментарии 0

Проекции? Hет, спасибо

Open source *PostgreSQL *Алгоритмы *C *Геоинформационные сервисы *

Под катом будет небольшая заметка о применении пространственного индекса
на основе zcurve для индексации точечных данных, расположенных на сфере. А так же bencmark-и для PostgreSQL и сравнение с таким же (но совсем другим)
индексом на R-дереве.
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 5.3K
Комментарии 2

Про интервальные индексы

Open source *PostgreSQL *Алгоритмы *C *


Под катом будем разбираться нужен ли для индексации интервалов специальный индекс, как быть с многомерными интервалами, правда ли что с 2-мерным прямоугольником можно обращаться как с 4-мерной точкой и т.д. Всё это на примере PostgreSQL.
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 4.9K
Комментарии 0

Кривая Гильберта vs Z-order

Open source *PostgreSQL *Алгоритмы *C *Геоинформационные сервисы *

Неоднократно доводилось слышать мнение, что из всех заметающих кривых. именно кривая Гильберта наиболее перспективна для пространственной индексации. Мотивируется это тем, что она не содержит разрывов и потому в некотором смысле “хорошо устроена”. Так ли это на самом деле и при чем здесь пространственная индексация, разберёмся под катом.
Читать дальше →
Всего голосов 30: ↑29 и ↓1 +28
Просмотры 14K
Комментарии 20

Гильберт, Лебег … и пустота

Поисковые технологии *Анализ и проектирование систем *Data Mining *Алгоритмы *

Под катом исследуется вопрос, как должен быть устроен хороший алгоритм многомерной индексации. На удивление, вариантов не так уж и много.
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 4.5K
Комментарии 2