Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Нужен совет: как построить план оптимизации приложения / 8 сообщений из 8, страница 1 из 1
09.06.2008, 09:19
    #35363574
DDT
DDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет: как построить план оптимизации приложения
Привет.

Есть большое приложение Apache + Postgres 8.2

Веб сервер и сервер БД работают на отдельных серверах. На сервере БД, кроме postgres ничего нет.

Ситуация заключается в том, что postgres использует все 4 процессора почти под 100%, в результате чего медленно работает приложение. Необходимо его оптимизировать.

БД содержит 94 таблицы общим размером 5 Гб, 186 хранимых процедуры, 114 триггерных функций, 13 представлений.

Приложение состоит из 128 модулей и 57 функций, вызываемых как в модулях, так и в других функциях. При этом каждый модуль и функция вызывает в среднем 5-10 запросов SELECT. Это может быть вызов хранимой процедуры или выбор данных из таблиц.

Характер запросов к БД - это SELECT, INSERT, UPDATE. В основном SELECT и UPDATE.

Запросы INSERT и UPDATE выполняются только в хранимых процедурах.

Так вот, задача заключает в ускорении работы приложения, т.е. снижении нагрузки на процессор. Как можно определить, что его нагружает больше всего, с чего начать оптимизацию запросов?

Спасибо.
...
Рейтинг: 0 / 0
09.06.2008, 10:09
    #35363682
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет: как построить план оптимизации приложения
DDT
Ситуация заключается в том, что postgres использует все 4 процессора почти под 100%, в результате чего медленно работает приложение. Необходимо его оптимизировать.

БД содержит 94 таблицы общим размером 5 Гб, 186 хранимых процедуры, 114 триггерных функций, 13 представлений.

Приложение состоит из 128 модулей и 57 функций, вызываемых как в модулях, так и в других функциях. При этом каждый модуль и функция вызывает в среднем 5-10 запросов SELECT. Это может быть вызов хранимой процедуры или выбор данных из таблиц.

Характер запросов к БД - это SELECT, INSERT, UPDATE. В основном SELECT и UPDATE.

Запросы INSERT и UPDATE выполняются только в хранимых процедурах.

Так вот, задача заключает в ускорении работы приложения, т.е. снижении нагрузки на процессор. Как можно определить, что его нагружает больше всего, с чего начать оптимизацию запросов?

Спасибо.

1. Кусочек доки , но это злобненько так...
2. Попроще, и для начала, можно выставить log_duration в какое-нить число, и Вы получите тормозящие запросы, а дальше можно думать куда крутить.
3. По скольку ничего ни про сервер (железо), ни про ОС, ни про детали версии ПГ не видно, то можно "дефолтно" посоветовать обновить версию ПГ до последней, как минимум, в линейке 8.2.
4. Надеюсь VACUUM FULL ANALYZE; был сделан, и тормоза остались? (если не был сделан - то нужно сделать обязательно).
...
Рейтинг: 0 / 0
09.06.2008, 10:25
    #35363715
DDT
DDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет: как построить план оптимизации приложения
Andrey Daeron
2. Попроще, и для начала, можно выставить log_duration в какое-нить число, и Вы получите тормозящие запросы, а дальше можно думать куда крутить.


В документации для 8.2 сказано, что log_duration типа bool. В него можно поставить число?

Если поставлю число, то что оно будет означать и где будут отображаться тормозящие запросы?
...
Рейтинг: 0 / 0
09.06.2008, 10:28
    #35363725
DDT
DDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет: как построить план оптимизации приложения
Скорее всего надо выставить log_min_duration_statement в какое-то число. Наколько я понял - кол-во милисекунд.
...
Рейтинг: 0 / 0
09.06.2008, 10:38
    #35363747
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет: как построить план оптимизации приложения
DDTСкорее всего надо выставить log_min_duration_statement в какое-то число. Наколько я понял - кол-во милисекунд.
Ага, именно так, а потом мониторить и выбирать самые "яркие" представители запросов.
...
Рейтинг: 0 / 0
09.06.2008, 10:49
    #35363776
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет: как построить план оптимизации приложения
DDT
БД содержит 94 таблицы общим размером 5 Гб, 186 хранимых процедуры, 114 триггерных функций, 13 представлений.

Запросы INSERT и UPDATE выполняются только в хранимых процедурах.

Спасибо.Какие характеристики сервера?
Если запросы на вставку и изменение выполняются в ХП, то зачем используются триггеры?
...
Рейтинг: 0 / 0
09.06.2008, 12:28
    #35364069
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет: как построить план оптимизации приложения
Несколько советов из того, что сходу приходит в голову.

1. http://pgfouine.projects.postgresql.org/tutorial.html
Смотрите секцию про PostgreSQL 8.x и делайте, как там сказано. После того, как образовался лог с временами выполнения запросов -- пропустить через pgfouine (см. http://pgfouine.projects.postgresql.org/reports.html) и смотреть на самые долгие (в сумме) запросы.

2. Мониторить PostgreSQL, как было сказано выше. Активно используйте системные средства (iostat, vmstat, mpstat). Разберитесь, не iowait ли у вас занимает CPU. Для этого хотя бы посмотрите top -d1 в моменты наибольшей загрузки.

3. Узнайте размер базы, сравните его с размером RAM. Изучите вывод free -m, чтобы понять, хватает ли серверу памяти. Узнайте размер самых больших таблиц.

4. Сколько бакендов постгреса запущено? Попробуйте использовать pgbouncer на машине с СУБД, если еще не используете никакого менеджера/пула соединений.

Советов, рекомендованных в постах выше и этих пунктов достаточно, чтобы начать.
...
Рейтинг: 0 / 0
10.06.2008, 16:06
    #35367466
DDT
DDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет: как построить план оптимизации приложения
Спасибо за ответы. Буду пробовать.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Нужен совет: как построить план оптимизации приложения / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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