Разная скорость выполнения запросов на серверах

d-e-larin
Дата: 03.04.2015 10:04:10
Доброе утро.
Выполняю select на сервере(A) запрос тратит времени 200ms.
Выполняю select на сервере(B) запрос тратит времени 3000ms.
Количество данных одинаково.
Почему может быть такая разница во времени выполнения запросов?

Конфигурация базы данных на серверах одинаковая.
Скорость работы дисков на сервере(B) выше чем на (A), но скорость выполнения запросов ниже.
Оперативной памяти серверам выделено одинаково.
Проц. сервера(А) 3.3ГГц 8 ядер, Проц. сервера(B) 2.8ГГц 4 ядер, при выполнении запросов загрузка на серверах не более 15%.
ОС Windows.
Gold_
Дата: 03.04.2015 11:22:45
d-e-larin,

Приведите сам запрос и EXPLAIN (ANALYZE on, COSTS on, BUFFERS on, TIMING on ) запроса на обоих серверах
d-e-larin
Дата: 03.04.2015 11:38:31
сервер A
"Seq Scan on sms (cost=0.00..916.56 rows=8556 width=492) (actual time=0.004..3.156 rows=8654 loops=1)"
" Buffers: shared hit=831"
"Total runtime: 4.153 ms"

сервер B
"Seq Scan on sms (cost=0.00..620.80 rows=8680 width=492) (actual time=0.014..18.801 rows=8644 loops=1)"
" Buffers: shared hit=534"
"Total runtime: 34.857 ms"
Gold_
Дата: 03.04.2015 11:42:05
d-e-larin,

вижу 3ms и 18ms. Где 200ms и 3000ms?
d-e-larin
Дата: 03.04.2015 12:13:22
Это другой более легкий запрос.
Факт в том что все запросы даже простейшие на сервере B выполняются дольше.
Gold_
Дата: 03.04.2015 12:24:29
d-e-larin,

Покажите для статистики и запросы где отличия в 15 раз (200ms и 3000ms)
grufos
Дата: 03.04.2015 12:31:35
d-e-larin,

d-e-larin
сервер A
"Seq Scan on sms (cost=0.00..916.56 rows=8556 width=492) (actual time=0.004..3.156 rows=8654 loops=1)"
" Buffers: shared hit=831"
"Total runtime: 4.153 ms"


Пожалуйста приводите не огрызок, а полный текст всего, что выводит команда
explain (COSTS, BUFFERS, TIMING, ANALYZE, VERBOSE) select ....
d-e-larin
Дата: 03.04.2015 12:45:06
автор
Пожалуйста приводите не огрызок, а полный текст всего, что выводит команда

Это был полный текст того что выводит команда

автор
explain (COSTS, BUFFERS, TIMING, ANALYZE, VERBOSE)

Вот результат выполнения, только тут добавил параметр VERBOSE как вы указали в примере.

сервер А
"Seq Scan on public.sms (cost=0.00..916.56 rows=8556 width=492) (actual time=0.008..3.782 rows=8655 loops=1)"
" Output: id, date, text, modify_date, address_source_from, address_source_to, semantic_id, order_num_a_day, operator, md5_hash, is_copy, is_alarm, is_acquainted_alarm, is_parsed"
" Buffers: shared hit=831"
"Total runtime: 4.851 ms"


сервер В
"Seq Scan on public.sms (cost=0.00..620.80 rows=8680 width=492) (actual time=0.013..17.437 rows=8646 loops=1)"
" Output: id, date, text, modify_date, address_source_from, address_source_to, semantic_id, order_num_a_day, operator, md5_hash, is_copy, is_alarm, is_acquainted_alarm, is_parsed"
" Buffers: shared hit=534"
"Total runtime: 32.486 ms"
tadmin
Дата: 03.04.2015 13:04:05
автор
Скорость работы дисков на сервере(B) выше чем на (A), но скорость выполнения запросов ниже.

Различия в конфигах постгреса.
Фоновые процессы, порождающие IO или влияющие на кеширование: windows и raid контроллер делает patrol read, иные настройки кеша на контроллере, протухший BBU в результате чего кеш свободен от write-back и используется на опережающее чтение.
Диск забит, таблица расположена на "дальнем" конце дисков, где линейнас скорость чтения ниже.
Можно продолжать бесконечно.
grufos
Дата: 03.04.2015 13:21:00
d-e-larin,
сервер A
d-e-larin
" Buffers: shared hit=831"

сервер B
d-e-larin
" Buffers: shared hit=534"

из того, что видно по плану - у вас по разному используется кэширование данных.
здесь нужно сравнить настройки серверов.
Пропустите через компаратор файлики postgresql.conf - должны быть различия
интересует именно раздел: # - Memory -
Какая версия postgreSQL используется?
судя по результатам, хоть и незначительно, но таблички все же отличаются
сервер A
d-e-larin
rows=8655

сервер B
d-e-larin
rows=8646

высокая стоимость получения данных на сервере B
d-e-larin
actual time=0.013..17.437

по сравнению с сервером А
d-e-larin
actual time=0.008..3.782

показывает, что производительность серверов все же сильно не одинакова :)