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: