powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / влияние work_mem на план запроса - SELECT COUNT(*)
7 сообщений из 7, страница 1 из 1
влияние work_mem на план запроса - SELECT COUNT(*)
    #39627365
pppsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при разных значениях work_mem PostgreSQL 9.6 для запроса вида
Код: plsql
1.
SELECT COUNT(*) FROM mytable;


строит разные планы
при 4Мб (значение PG по умолчанию) -> Seq Scan on mytable
при 8Мб ->Index Only Scan using "myid_pk" (используется первичный ключ)

Фактические значения
Код: plsql
1.
EXPLAIN ANALYSE SELECT COUNT(*) FROM mytable;


на серверах практически не различаются (несколько процентов всего).

Планировщик оценивает возможность уместиться в отведенный work_mem и строит план или что-то ещё влияет на выбор?
В остальных настройках и наборах данных серверы максимально идентичны.

Какие приёмы позволят повысить эффективность (скорость) выполнения запросов подсчета количества строк?
Отказаться от выполнения таких запросов не представляется возможным.
...
Рейтинг: 0 / 0
влияние work_mem на план запроса - SELECT COUNT(*)
    #39627401
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pppsqlпри разных значениях work_mem PostgreSQL 9.6 для запроса вида
Код: plsql
1.
SELECT COUNT(*) FROM mytable;


строит разные планы
при 4Мб (значение PG по умолчанию) -> Seq Scan on mytable
при 8Мб ->Index Only Scan using "myid_pk" (используется первичный ключ)

Фактические значения
Код: plsql
1.
EXPLAIN ANALYSE SELECT COUNT(*) FROM mytable;


на серверах практически не различаются (несколько процентов всего).

Планировщик оценивает возможность уместиться в отведенный work_mem и строит план или что-то ещё влияет на выбор?
В остальных настройках и наборах данных серверы максимально идентичны.

Какие приёмы позволят повысить эффективность (скорость) выполнения запросов подсчета количества строк?
Отказаться от выполнения таких запросов не представляется возможным.

1)попробуйте там где база делает seq scan сделать vacuum analyze этой таблицы... может слишком много страницы без all visible bits стоит и база поэтому не хочет сделать Index only scan (впрочем учитывая что IOS на 9.6 в 1 поток делается - то это вряд ли самый быстрый метод для count(*) - см 2))

2)так как у вас 9.6 скорее всего самый быстрый метод count(*) - включить параллельное выполнение запросов на 4-8-16 ядер (parralel seq scan).

Как то так.

PS: count(*) по 1 миллиард строк будет медленный как его не делайте :).
...
Рейтинг: 0 / 0
влияние work_mem на план запроса - SELECT COUNT(*)
    #39627453
pppsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,
vacuum analyze не влияет
...
Рейтинг: 0 / 0
влияние work_mem на план запроса - SELECT COUNT(*)
    #39627626
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pppsql,

это вы на одном сервере work_mem меняете в сессии и получаете разные планы? покажите оба плана и вывод
Код: sql
1.
2.
3.
select relpages, relallvisible from pg_class where relname = 'tablename';
show random_page_cost ;
show seq_page_cost ;
...
Рейтинг: 0 / 0
влияние work_mem на план запроса - SELECT COUNT(*)
    #39627747
pppsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexius,
физически серверы разные, но с одинаковой БД и настройками, кроме work_mem
предлагаете протестировать на одном сервере с разными work_mem устанавливаемыми в сессии?
...
Рейтинг: 0 / 0
влияние work_mem на план запроса - SELECT COUNT(*)
    #39627767
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pppsqlAlexius,
физически серверы разные, но с одинаковой БД и настройками, кроме work_mem
предлагаете протестировать на одном сервере с разными work_mem устанавливаемыми в сессии?

Для начала - да.
...
Рейтинг: 0 / 0
влияние work_mem на план запроса - SELECT COUNT(*)
    #39627769
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pppsql,

я сомневаюсь, что в данном случае именно work_mem влияет на план. если получится на одном сервере воспроизвести будет очень интересно. сервера совсем разные получаются, это не мастер и реплика? на план в первую очередь по идее должны влиять параметры, которые я просил привести (с обоих серверов) + размер индекса, по которому index only scan.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / влияние work_mem на план запроса - SELECT COUNT(*)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]