[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Вопрос о выборе дистрибутива...



On Tue, Feb 17, 2004 at 08:35:13AM +0200, Jan Solovjov wrote:

 JS> также интересует такая штука по PostgresQL как VACUUM - приходиться 
 JS> делать его раз в сутки, честно говоря после использования MySQL который 
 JS> даже при большой нагрузке каши не просит, тут у серьезного SQL сервера 
 JS> такая бяка..

Каши MySQL очень даже просить и команды соответствующие имеет :) А
PostgreSQL просто рассчитан на то, что поставить VACUUM ANALYZE в cron
труда не составляет, а производительность резко увеличивает.
 
 JS> ну и хотелось бы почитать про оптимизацию скорости работы 
 JS> именно самого сервера - что порекомендуете?? а то девелоперы жалуются, 
 JS> что он как-то медленнее, чем MSSQL на одних и тех же задачах. Что-бы 
 JS> покрутить чтобы был он не хуже, если не лучше :)

Ну во-первых смотреть postgresql.conf. Например по-умолчанию чаще всего
стоит fsync=yes (при наличии UPS'а и если SQL-сервер это отдельная
железка, то есть смысл его выключить) -- скорость резко подрастёт.

Кроме того в postgresql.conf надо смотреть размеры буферов, там много чего
покрутить есть в плане оптимизации.

По поводу кода -- его тоже можно (и нужно) оптимизировать под
использование с PostgreSQL. Например выбирать правильные типы индексов,
использовать транзакции (для цепочек связаных друг с другом изменений в
базе).

Кроме того есть EXPLAIN ANALYZE, позволяющая увидеть как именно
выполняется запрос, тем самым, возможно, увидеть что следует
соптимизировать.

Далее есть параметры создаваемых таблиц, такие как nooid (это всё нужно
читать и понимать, что действительно нужно в этой таблице).

У постгреса есть некоторое количество архитектурных особенностей, которые,
насколько мне известно, не поправили. Например запрос SELECT COUNT(*) FROM
table приводил к fullscan'у (возможно сейчас это поправили), потому как
COUNT такая же агрегирующая функция как и SUM с точки зрения постгреса, и
ей передаётся _целиком_ таблица в этом примере (насколько мне известно).
Их надо просто учитывать (например необходимость в COUNT решается
триггером на добавление записи в таблицу и создание отдельной таблицы с
этой информацией).

-- 
С уважением, Денис

http://freesource.info



Reply to: