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

Evgeniy
30.01.2018
19:11:48

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

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

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

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

Аггей
30.01.2018
19:37:34

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

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

Evgeniy
30.01.2018
19:38:02

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

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

Google

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

Аггей
30.01.2018
19:41:41

Evgeniy
30.01.2018
19:41:43

Darafei
30.01.2018
19:42:11

Аггей
30.01.2018
19:42:36
Я по той по которой фильтрация имел ввиду
Она будет читаться index only

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

Аггей
30.01.2018
19:43:47

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

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

Аггей
30.01.2018
19:51:26

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

Darafei
30.01.2018
19:52:47
это совсем не то же самое
в explain аналайз значит, что надо выполнить запрос и посчитать, сколько чего выполнялось, а в вакууме - взять табличку и построить по ней гистограммы

Александр
30.01.2018
19:53:55

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

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

Сергей
30.01.2018
19:58:42

Anton
30.01.2018
19:59:25

Darafei
30.01.2018
19:59:51

Сергей
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
Да хоть в чат киньте - я думаю он сжатый - копейки