powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Скорость чтения при Index Scan и Seq Scan
5 сообщений из 5, страница 1 из 1
Скорость чтения при Index Scan и Seq Scan
    #39432192
mgurnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые специалисты!

Прошу помочь разобраться с двумя вопросами. Значит имеется Postgresql 9.6 CPU I7 16Гб ОЗУ обычный диск 1 Тб
Тестовая база создана утилитой pgbench с параметром -s равным 2000
В тестовых целях выполняется два запроса.

Запрос первый:
explain (analyze, buffers, timing)
select aid, count(*) from public.pgbench_accounts
group by aid

План запроса ниже

GroupAggregate (cost=0.57..8193532.57 rows=200000000 width=12) (actual time=23.969..63151.347 rows=200000000 loops=1)
Group Key: aid
Buffers: shared hit=101 read=546452
I/O Timings: read=10276.165
-> Index Only Scan using pgbench_accounts_pkey on pgbench_accounts (cost=0.57..5193532.57 rows=200000000 width=4) (actual time=23.962..23192.594 rows=200000000 loops=1)
Heap Fetches: 0
Buffers: shared hit=101 read=546452
I/O Timings: read=10276.165
Planning time: 10.919 ms
Execution time: 68511.093 ms


Скорость чтения по IOTOP составила примерно 71-72МБ/с. Хотя если взять (546452 * 8) / 10 / 1024 получиться 426 МБ/с

Второй запрос:
explain (analyze, buffers, timing)
select abalance, count(*) from public.pgbench_accounts
group by abalance

План запроса:

HashAggregate (cost=6278689.00..6278689.01 rows=1 width=12) (actual time=152545.057..152545.057 rows=1 loops=1)
Group Key: abalance
Buffers: shared read=3278689
I/O Timings: read=111095.229
-> Seq Scan on pgbench_accounts (cost=0.00..5278689.00 rows=200000000 width=4) (actual time=34.025..122496.127 rows=200000000 loops=1)
Buffers: shared read=3278689
I/O Timings: read=111095.229
Planning time: 30.275 ms
Execution time: 152545.370 ms


Скорость чтения по IOTOP составила примерно 184 МБ/с. Хотя если взять (3278689 * 8) / 111 / 1024 получиться 230 МБ/с
Скриншоты с данными IOTOP могу приложить.

Скажите пожалуйста:
1. Почему по IOTOP скорость чтения индекса сильно меньше скорости чтения таблицы?
2. Почему скорости подсчитанные по данным explain превышают физическую скорость которую может дать диск?
...
Рейтинг: 0 / 0
Скорость чтения при Index Scan и Seq Scan
    #39432264
smagen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mgurnitskiy,

1. Индекс – это дерево, страницы которого обходятся в логическом порядке, который может не совпадаеть с порядком данных на диске. При sequential scan'е файл таблицы чистается последовательно, что даёт меньше физических seek'ов диска.
2. Вы вот тут
авторХотя если взять (546452 * 8) / 10 / 1024 получиться 426 МБ/с
забыли на время поделить.
...
Рейтинг: 0 / 0
Скорость чтения при Index Scan и Seq Scan
    #39432497
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mgurnitskiy,

2) попробуйте очистить кэш ОС (drop_caches) перед выполнением запроса и повторить тест. read не означает что данные обязательно читались с диска, а то, что их не было в shared_buffers.
...
Рейтинг: 0 / 0
Скорость чтения при Index Scan и Seq Scan
    #39432626
mgurnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
smagen,

ну как же, а деление на 10? 10 - это секунды.
...
Рейтинг: 0 / 0
Скорость чтения при Index Scan и Seq Scan
    #39432865
mgurnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexius,

Перед каждым запуском производился reboot, что бы исключить влияния кэша ОС
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Скорость чтения при Index Scan и Seq Scan
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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