The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Для PostgreSQL представлена реализация условных индексов"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от opennews on 25-Июн-15, 18:13 
Представлен (http://www.postgresql.org/about/news/1593/) первый релиз расширения HypoPG (https://github.com/dalibo/hypopg) с реализацией условных (hypothetical) индексов для PostgreSQL. Суть условного индекса в том, что он отсутствует на диске и создаётся мгновенно в момент использования, не создавая дополнительную нагрузку на ввод/вывод и не отнимая время на создание индекса и его сопровождение. Одним из назначений условных индексов является предварительная оценка выбранного метода индексирования до фактического создания полноценного индекса. Например, можно создать условный индекс и при помощи вызова EXPLAIN проверить применяется ли он для тех или иных запросов.

URL: http://www.postgresql.org/about/news/1593/
Новость: http://www.opennet.ru/opennews/art.shtml?num=42500

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от ъ on 25-Июн-15, 18:13 
Не скажу за полезность этого решения, но вот как за шаблон кода для создания виртуальных сущностей внутри виртуального бакэнда спасибо. Жаль, что почти весь код был _скопирован_ (именно скопирован, а не импортирован или включен через заголовки) из исходников самого постгрескюэль...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Для PostgreSQL представлена реализация условных индексов"  –1 +/
Сообщение от edo (ok) on 25-Июн-15, 18:29 
грязный хак какой-то
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Для PostgreSQL представлена реализация условных индексов"  +1 +/
Сообщение от rshadow (ok) on 25-Июн-15, 18:33 
То есть он умеет только EXPLAIN без ANALYZE...

Похоже на попытку использовать какой то костыль вместо того чтобы включить мозги.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от Crazy Alex (ok) on 25-Июн-15, 19:14 
Если есть возможность использовать машинно-реализуеамый костыль вместо мозгов - надо её использовать. Такой костыль может использоваться самой машиной, мозги - только в комплекте с живым человеком.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

11. "Для PostgreSQL представлена реализация условных индексов"  +2 +/
Сообщение от rob pike on 25-Июн-15, 21:46 
Ну так какой смысл-то в использовании этого конкретного костыля? Наплодить автоматически 100500 индексов, чтоб insert потом застрелился от безнадеги?

Ладно бы опции CONCURRENTLY у CREATE INDEX не было, так ведь есть же.

Нужен индекс - сделай. Не нужен - не сделай. Нужен, сделал, не используется планировщиком - подкрути статистику (http://www.depesz.com/2013/05/30/explaining-the-unexplainabl.../)

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

12. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от Crazy Alex (ok) on 25-Июн-15, 22:32 
Почему 100500? Наплодить столько, сколько позволено настройками. Например, для ORM - милое дело, пожалуй, будет. Супер-производительности, может, и не будет - но зато автоматом. Ну и вообще это правильное направление, примерно как компиляторы в своё время хуже, чем люди, ассемблерный код генерили, а теперь - человек в состоянии посостязаться только на небольших кусках, и далеко не всякий.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от rob pike on 25-Июн-15, 23:41 
Ну вот только для ORM разве что. Получится, правда, всё равно как всегда - ANALYZE никто делать не будет, статистику крутить не будет, половина индексов будут медленнее seqscan-а. Зато можно написать "наш ORM умеет ого-го, приходить в сознание с ним вообще необязательно". Потом всё равно звать DBA со стороны и платить $200 в час чтоб как-то заворочалось.

С ассемблером всё осталось ровно так же, потому что замок эволюционирует не медленней ключа.
Во-первых, современный Haswell - он уже сильно умнее Сишного компилятора во многих местах (если не сказать "во всех"), причём недетерминированность проявляется и в этом - то есть оптимизация превращается в угадайку - кто угадал насколько тупого кода ему надо в этом конкретном месте с этими конкретными данными, чтобы он сказал "ага! я знаю этот паттерн!" и оптимизировал, тот и молодец. Что в подавляющем большинстве случаев выражается в практичности подхода "всё что мы можем осмысленно сделать - это добиться того чтобы этот чанк кода помещался в кэш" (ну и выложить данные, этому коду нужные максимально ровным и непрерывным слоем, но это просто). То есть сдуваем пыль со старой книжки про ассемблер.
Во-вторых, оптимизация нынче начинается со слова SIMD, и тут состояние имеющейся машинерии примерно как у Си-компиляторов в 1985 году, и если надо быстро - ручками, всё ручками. https://deplinenoise.files.wordpress.com/2015/03/gdc2015_afr...

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от Crazy Alex (ok) on 26-Июн-15, 00:11 
Получится так, как будет в инструкции к ORM. Да, с какого-то момента - звать DBA. Но если этот момент отодвинуть - это значит, что для определённого процента проектов он не наступит вообще никогда.

А в ассемблере - слабо представляю ручное раскидывание параметров и переменных по регистрам на сколько-нибудь большом объёме кода. SIMD - это там, где надо обрабатывать большие однородные массивы, а этого, как, ни странно, не так уж много. А где обычный код - с кучей веток исполнения, небольшими функциями, тремя-четырьмя уровнями индирекшна - там как раз компилятору раздолье, а людям делать нечего. О PGA и прочих JIT-оптимизациях я и не говорю. Когда начинается многопоточность со всеми memory barriers и прочим - тем более невелика радость.

По поводу ссылки - у игроделов все SIMD и ассемблеры закончатся ровно там, где начнётся AI. Не только потому, что его в половине случаев вообще на скриптах пишут, но и потому, что там обычно вагон условий и сравнительно мало молотилок чисел.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

14. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от rob pike on 26-Июн-15, 00:01 
> Похоже на попытку использовать какой то костыль вместо того чтобы включить мозги

Примерно 99% развития IT в этом и заключается.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

18. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от uze on 26-Июн-15, 09:36 
EXTERMINATE
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

4. "Для PostgreSQL представлена реализация условных индексов"  –2 +/
Сообщение от manster (ok) on 25-Июн-15, 19:06 
не прошло и четверти века после создания sx driver-ов
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от Аноним (??) on 25-Июн-15, 20:26 
Virtual Index in Memory, ваш КЭП.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от None (??) on 26-Июн-15, 01:06 
следующий шаг - сделать так, чтоб analyze говорил, где ему не хватает индексов и материализованных вьюшек для создания оптимального запроса
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

19. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от близняшко on 26-Июн-15, 11:25 
в других субд есть такая методика, capture missing index/statistics.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

20. "Для PostgreSQL представлена реализация условных индексов"  +1 +/
Сообщение от rob pike on 26-Июн-15, 11:36 
И приделать ему телепатию чтобы он знал что такое оптимальный запрос для наших конкретных условий.

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

17. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от Аноним (??) on 26-Июн-15, 02:24 
Да лучше бы пакеты запилили
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

21. "Для PostgreSQL представлена реализация условных индексов"  +/
Сообщение от orgkhnargh (ok) on 26-Июн-15, 17:11 
Чуть не перепутал с partial index.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру