172 похожих чатов

Подскажите плз, на 4 млрд записей запрос select * from

"Entries" where "Login" LIKE 'something%' выполнялся 32 минуты (поле Login проиндексировано), какие есть способы его ускорить? При этом точное значение ищется за 50-100мс

25 ответов

25 просмотров

Покажите explain analyze

Лучше покажите что положено для того, чтобы помогать в таких случаях. ;) 1. Полную версию PosgreSQL ("SELECT version();"). 2. Запрос и план — именно EXPLAIN (ANALYZE, BUFFERS) 3. \d+ таблицы Всё текстом, конечно (можно на paste site). В данном случае сначала можно просто EXPLAIN, остальное обязательно.

Lycanthrope- Автор вопроса
Yaroslav Schekin
Лучше покажите что положено для того, чтобы помога...

Что такое \d+? Ок, запустил explain, видимо ещё 30+ минут :)

Lycanthrope
Что такое \d+? Ок, запустил explain, видимо ещё 30...

Метакоманда в psql. Ну и пока можно просто EXPLAIN, опять-таки.

Lycanthrope- Автор вопроса
Yaroslav Schekin
Метакоманда в psql. Ну и пока можно просто EXPLAIN...

PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit Gather (cost=1000.00..61233670.30 rows=401943 width=48) Workers Planned: 2 " -> Parallel Seq Scan on ""LeakEntries"" (cost=0.00..61192476.00 rows=167476 width=48)" " Filter: ((""Login"")::text ~~ 'Execute error%'::text)" JIT: Functions: 2 " Options: Inlining true, Optimization true, Expressions true, Deforming true"

Lycanthrope
PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_6...

Видно, что индекс не используется. Давайте \d+. ;) И с такой версией PostgreSQL можно (лучше) сразу показывать EXPLAIN (ANALYZE, BUFFERS, SETTINGS /*, VERBOSE*/) SELECT ...

Lycanthrope
PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_6...

select * from pg_stats where tablename='Entries' and attname='Login'; select name,setting from pg_settings where name~'cost';

Lycanthrope- Автор вопроса
Lycanthrope
PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_6...

Что-то не могу запустить psql (я юзаю докер контейнер): # psql psql: error: FATAL: role "root" does not exist

Lycanthrope- Автор вопроса
Guzya
select * from pg_stats where tablename='Entries' a...

autovacuum_vacuum_cost_delay,2 autovacuum_vacuum_cost_limit,-1 cpu_index_tuple_cost,0.005 cpu_operator_cost,0.0025 cpu_tuple_cost,0.01 jit_above_cost,100000 jit_inline_above_cost,500000 jit_optimize_above_cost,500000 parallel_setup_cost,1000 parallel_tuple_cost,0.1 random_page_cost,4 seq_page_cost,1 vacuum_cost_delay,0 vacuum_cost_limit,200 vacuum_cost_page_dirty,20 vacuum_cost_page_hit,1 vacuum_cost_page_miss,10

Lycanthrope
Что-то не могу запустить psql (я юзаю докер контей...

Ну так root и не является пользователем в postgres (не должен, по крайней мере). Вы заходите под тем пользователем, который используется приложением.

Lycanthrope
autovacuum_vacuum_cost_delay,2 autovacuum_vacuum_c...

Похоже на стандартные настройки... вообще, tuning почти наверняка следует заняться.

Lycanthrope- Автор вопроса
Yaroslav Schekin
Видно, что индекс не используется. Давайте \d+. ;)...

разобрался, нужно было создать роль. https://pastebin.com/raw/PhhT2d3E

Lycanthrope
разобрался, нужно было создать роль. https://paste...

Так, а encoding / collation у этой базы какой (можно посмотреть с помощью \l)?

Lycanthrope
UTF8 | en_US.utf8

Неподходящий у Вас индекс для этого запроса, в таком случае. Нужен с varchar_pattern_ops, см. https://www.postgresql.org/docs/current/indexes-opclass.html

Lycanthrope
разобрался, нужно было создать роль. https://paste...

Не уверен, что b-tree умеет like обрабатывать. Нашел такую тему https://www.sql.ru/forum/1053727/pomogite-sostavit-indeks-dlya-zaprosov-vida-like-text

Lycanthrope- Автор вопроса
Yaroslav Schekin
Неподходящий у Вас индекс для этого запроса, в так...

Такой? CREATE INDEX some_index ON my_table (Login varchar_pattern_ops);

Lycanthrope- Автор вопроса
Yaroslav Schekin
Да, примерно так.

Спасибо. А вообще, мб я не ту СУБД выбрал и мне нужно какую-нибудь key-value базу брать? (ещё нюанс в том, что пары key-value должны быть уникальными, в sql я могу просто запросом лишнее поудалять, а в key-value как-то сложно всё это)

Lycanthrope
Спасибо. А вообще, мб я не ту СУБД выбрал и мне ну...

Да не за что. Вообще, можно C locale сразу использовать для таких полей (кому какое дело, как именно сортируются Login-ы в результатах запросов? ;) ). > А вообще, мб я не ту СУБД выбрал и мне нужно какую-нибудь key-value базу брать? Это уж Вам виднее, какие требования. IMNSHO, нужны Вам реляционка + ACID + SQL — берите PostgreSQL, а если нет — не берите. ;)

Lycanthrope- Автор вопроса
b s
> LeakEntries ух негодник

действительно, не хочу платить бабки, чтобы проверить, утекли ли мои данные = негодник)

Guzya
Не уверен, что b-tree умеет like обрабатывать. Наш...

Когда-то давно мы с Федей написали расширение wildspeed для этого, которое индексирует все перестановки, поэтому пригодно для коротких строк https://github.com/postgrespro/wildspeed

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта