@pgsql

Страница 655 из 1062
Аггей
30.01.2018
19:11:41
Индекс имеет смысл в нескольких случаях - даже если вы выбирает все записи из таблицы - но не все поля - планировщик может взять индекс построенный по всем фильтруемым и выбираемым полям - так называемый index only scan. А вот если хотя бы одно выбираемое поле не попадает в индекс - начинает играть роль селективность. И субъективно - если выбирается хотя бы 30-40% записей - выгоднее seq scan

Evgeniy
30.01.2018
19:11:48
На четырех страницах ничего планировать не надо, их надо просто прочитать, если кост строки не запредельный
я не знаю деталей планера, но ты уверен что там есть катоф вида «не ищем дальше если и кост этого ниже XXX»?

Darafei
30.01.2018
19:12:19
катоф "не инлайним, если кост больше ХХХ" я точно видел

Anton
30.01.2018
19:13:15
я просто хочу получить скорость выше мыскуля... :)

Google
Evgeniy
30.01.2018
19:14:01
а, ну сек скан против индекса считает кол-во записей, кол-во страничек и их расположение и умножает на косты и все

Сергей
30.01.2018
19:14:33
Anton
30.01.2018
19:14:52
что то вы пессимисты какие то :)

Сергей
30.01.2018
19:14:56
Лiл

Evgeniy
30.01.2018
19:15:44
что то вы пессимисты какие то :)
абсолютная скорость на одном запросе в выборе базы стоит месте на шестом

Anton
30.01.2018
19:16:26
скорее дело в весах на параметрах

Evgeniy
30.01.2018
19:16:53
к слову мускуль 8.0 вообще огонь я вижу всё меньше и меньше причин юзать постгрес

Darafei
30.01.2018
19:17:30
@Casus_Improvisus покажи explain (analyze, verbose, buffers) запроса с seq scan и без него

особенно интересно посмотреть в buffers

Anton
30.01.2018
19:17:57
сейчас без покажу

Darafei
30.01.2018
19:18:25
buffers не вижу

Google
Anton
30.01.2018
19:18:50
без секскан: https://pastebin.com/NcgHg9Ha

buffers — это где?

Darafei
30.01.2018
19:20:14
explain (analyze, verbose, buffers)

первая строчка синтаксиса в https://www.postgresql.org/docs/10/static/sql-explain.html

Evgeniy
30.01.2018
19:21:50
а если время планирования вычесть, то получается 3.6мс небось даже быстрее мускуле будет лол

Let Eat
30.01.2018
19:21:54
ну простейшая программа даёт что на массиве больше 3 элементов быстрее дерево/хеш, чем последовательный скан
Парни из redis все hashmap хранят как список, пока не дорастет до 256 (кажется) элементов и это работа с памятью. С диском наверно все 2048 прочитать проще подряд, тем более придефолтных read ahead

Anton
30.01.2018
19:24:42
https://pastebin.com/VyKbLRMn https://pastebin.com/YjrEkj0j

Darafei
30.01.2018
19:26:26
Index scan: Buffers: shared hit=231 Seq scan: Buffers: shared hit=212

ты читаешь лишних (231-212)*8=152 килобайта при индексскане

Anton
30.01.2018
19:27:29
копейки

Darafei
30.01.2018
19:27:31
я не понимаю, почему это должно быть быстрее

оно может занимать, например, столько же, если у тебя страничка процессора больше, чем эта разница

потому что читаешь ты всё равно из памяти

Anton
30.01.2018
19:29:49
я не понимаю, почему это должно быть быстрее
всё в памяти. речь не только об объёме данных но и о работе с ними

Darafei
30.01.2018
19:30:34
о какой работе, memcmp поделать?

Evgeniy
30.01.2018
19:30:44
всё в памяти. речь не только об объёме данных но и о работе с ними
я не понимаю о чем мы тут сремся, но есть такое понятие как point chaising

Anton
30.01.2018
19:31:06
попробовал заменить все text на CHAR(XX) как они в оригинальной мыскл дб. стало ещё медленнее

Evgeniy
30.01.2018
19:31:20
ггг

Darafei
30.01.2018
19:32:10
лучший вариант - написать это на ассемблере

если не получается, на си

Google
Anton
30.01.2018
19:32:45
тестовая программа на перле, что вобщем с учётом реализации и так на си

Darafei
30.01.2018
19:32:48
потом результат переписать в план постгреса

а потом план постгреса переписать в sql

всегда так делаю, когда надо, чтобы быстро работало

но если тебя не устраивает время работы sql-запроса в 4мс, ты что-то катастрофически косячишь в архитектуре

Anton
30.01.2018
19:35:24
ладно, суть вопроса: https://dev.mysql.com/doc/index-other.html world database — загружаю в мыскл. то же самое в пг (10). сравниваю скорость выполнения запроса (есть в пастебине)

мыскл даёт 500+ запросов в секунду, пг даёт 400+ в секунду

Darafei
30.01.2018
19:37:03
а зачем тебе 500 запросов джоина страны к городу к языку в секунду?

Anton
30.01.2018
19:37:13
но если тебя не устраивает время работы sql-запроса в 4мс, ты что-то катастрофически косячишь в архитектуре
в данном случае всё абстрактно. но на практике я бы хотел чтобы всё исполнялось на за Х мс, а вообще мгновенно

Darafei
30.01.2018
19:37:25
у тебя в школе метрология была? :)

Anton
30.01.2018
19:37:42
метрология? впервые такое слово слышу

Taras ?
30.01.2018
19:37:43
постгрес зато не падает как мускуль, как парень который только учится ходить))

Anton
30.01.2018
19:38:02
Какие индексы в мыскуле?
там внутри всё есть. но в пг я те же самые создал

постгрес зато не падает как мускуль, как парень который только учится ходить))
у пг масса плюсов. но вот тут я ожидал что он не уступит

Darafei
30.01.2018
19:39:33
мне кажется, всех людей, говорящих "хочу, чтобы вообще мгновенно", надо отправлять на бесконечно закольцованный курс универской метрологии, пока у них не отобьётся желание абстрактного перфекционизма

Anton
30.01.2018
19:40:14
собственно, я пришёл с вопоросом можно ли ускорить пг, чтобы было не хуже мыскуля. а получаю "тебе это не нужно". странные вы.

Аггей
30.01.2018
19:40:34
у пг масса плюсов. но вот тут я ожидал что он не уступит
Если мне память не изменяет - mysql может использовать несколько индексов по 1 таблице в 1 запросе. Давайте план из мыскуля.

Darafei
30.01.2018
19:40:35
да, денормализуй таблицу

Google
Darafei
30.01.2018
19:41:35
по денормализованной с индексом по language должно быть шустрее

Аггей
30.01.2018
19:41:41
да, денормализуй таблицу
Зачем - пусть покрывающий индекс бахнет. Или частичный под этот конкретный запрос

Darafei
30.01.2018
19:42:11
Зачем - пусть покрывающий индекс бахнет. Или частичный под этот конкретный запрос
нельзя сделать покрывающий индекс по нескольким таблицам

Аггей
30.01.2018
19:42:36
Я по той по которой фильтрация имел ввиду

Она будет читаться index only

Darafei
30.01.2018
19:43:30
index only отдельная боль

Darafei
30.01.2018
19:44:15
на статичных и append-only таблицах часто внезапно оказывается, что вакуум никогда не пришёл и visibility map не заморожена

я про это ещё на pgconf расскажу

Аггей
30.01.2018
19:45:39
Я бы все же поглядел на план из мыскуля

И послушал бы @alexey_kopytov , по поводу того как используются индексы в mysql

Александр
30.01.2018
19:49:06
мыскл даёт 500+ запросов в секунду, пг даёт 400+ в секунду
ты после заливки базы делал vacuum analyze? На основе статистики пг оптимизирует план запроса

Alexey
30.01.2018
19:50:00
omg, это же Казус! #unix.ru форева!

Александр
30.01.2018
19:52:31
Это не то же самое вроде

Darafei
30.01.2018
19:52:47
это совсем не то же самое

в explain аналайз значит, что надо выполнить запрос и посчитать, сколько чего выполнялось, а в вакууме - взять табличку и построить по ней гистограммы

Google
Anton
30.01.2018
19:54:03
А дамп бд можно?
я же дал линк. ещё раз: http://downloads.mysql.com/docs/world.sql.zip

Александр
30.01.2018
19:55:30
Недавно сам тестил скорость после апгрейда с 9.6 на 10 - пока не выполнил vacuum (abalyze) full, статистика не заполнилась и 10 выполняла запросы медленнее, не смотря на gather

Аггей
30.01.2018
19:57:37
я же дал линк. ещё раз: http://downloads.mysql.com/docs/world.sql.zip
Дамп вашей pg базы. Нет желания приводить типы

Anton
30.01.2018
19:58:23
ну, кстати, есть ещё одна разница — в мыскуль базе кодировка латин1, а у пг ютф8, мне пришлось конвертировать исходник

Anton
30.01.2018
19:59:25
Дамп вашей pg базы. Нет желания приводить типы
сорец меняется, сейчас вот снова буду с типами экспериментировать

Darafei
30.01.2018
19:59:51
и шо делать? руками дергать?
while true; do psql -c "vacuum;"; sleep 30; done также известный, как веловакуум

Сергей
30.01.2018
20:00:26
а если таблица append-only то вакуум в принципе почти бесплатный?

Darafei
30.01.2018
20:00:37
если на ней нет индексов

(а на ней есть, потому что тебе нужен index only scan)

а скан по индексу всегда полный

патч про это есть в -hackers

Anton
30.01.2018
20:01:18
да, замена чар на варчар ускоряет запрос

Darafei
30.01.2018
20:01:38
@Casus_Improvisus text collate c

Anton
30.01.2018
20:04:21
ладно, товарищи учёные, я так и не понял что делать с подземным стуком

Alexey
30.01.2018
20:05:14
prepared statement-ами ходи! они в пг вполовину ускоряют запрос, а в мускуле процентов на 20

Аггей
30.01.2018
20:07:14
И план из мускуля

Anton
30.01.2018
20:07:24
куда залить?

Аггей
30.01.2018
20:07:55
Да хоть в чат киньте - я думаю он сжатый - копейки

Страница 655 из 1062