2013-09-18 3 views
3

UPDATE: Только что пришло мне в голову: возможно ли, что pgAdmin подсчитывает не фактическое время запроса, а время, необходимое для получения результатов в сетке?Неудовлетворительная производительность по запросу PostgreSQL

Я просто выполнил запрос с помощью командной строки (psql) и вывел результаты в файле txt, и это было очень быстро (1-2 секунды).

В этом случае проблема не является конфигурацией сервера postgresql/ubuntu; это скорее проблема адаптера дисплея.

Я прав или искал в неправильном направлении?


На моей "старой" ПК (Core 2 Duo, 4 Гб оперативной памяти, 250GB SATA HD) работает на Arch Linux 64bit я могу запустить простой "SELECT * FROM sometable" запрос в 0.4ms (я использую pgAdmin 3). База данных представляет собой PostgreSQL 9.1 (с PostGIS), а таблица содержит около 60 000 строк.

Я перенес базу данных на новый компьютер (Core i5, 8 ГБ оперативной памяти, 1 ТБ Western Digital Black SATA III), и тот же запрос занимает целых 22 секунды (!!!) На новом компьютере работает Ubuntu Сервер 13.04 64 бит.

Для дальнейшего тестирования я скопировал базу данных на 64-битный ПК под управлением Windows 7 (Core i5, RAM 6 ГБ), и запрос выполняется примерно через 10 секунд.

Это явно проблема конфигурации, но я немного смущен, является ли это проблемой конфигурации PostgreSQL или Ubuntu.

Я уже пытался поиграть с конфиг-файлами PostgreSQL (kernel.shmmax, shared_buffers и т. Д.), Но безрезультатно. И, конечно же, у меня есть VACUUMED, VACUUM ANALYZED и воссозданы все индексы.

Любые идеи? Меня интересует решение Ubuntu Server, которое действительно не заботится о компьютере под управлением Windows 7.

Спасибо заранее,

EBL

+0

Вы просматривали планы запросов на разных машинах? 'EXPLAIN ANALYZE'? –

+0

Да. Я просто сделал это снова (на машинах Ubuntu и Windows 7, на данный момент у меня нет доступа к Arch Linux). Планы запросов почти идентичны. – eblOnSO

+0

, а не pgAdmin, я бы пошел с psql и 'EXPLAIN ANALYZE', извлекая сетку из уравнения. –

ответ

1

Вы измеряете время, необходимое для передачи строк pgAdmin:

http://www.pgadmin.org/docs/1.4/query.html

"Если набор данных был возвращен, а не только отображается время, затрачиваемое на выполнение сервера, а также время для извлечения данных с сервера на страницу вывода данных ».

Если вы попробуете «выбрать счетчик (*) из sometable», он будет так же быстро, как старый компьютер.

2

Чтобы получить времени выполнения на сервере без передачи данных клиенту, используйте EXPLAIN ANALYZE.

Или используйте сочетание клавиш в инструменте pgAdmin запроса: SHIFTF7 (в зависимости от операционной системы и версии, проверьте меню запроса для клавиши быстрого доступа).

BTW, если вы обратитесь к руководству pgAdmin, используйте текущий выпуск - 1.18 на данный момент:
http://www.pgadmin.org/docs/1.18/query.html

Смежные вопросы