URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4885
[ Назад ]

Исходное сообщение
"Постгрес очень медленно делает вставки."

Отправлено robot , 29-Ноя-05 22:42 
Сабж.

Структура таблицы:

CREATE TABLE probe_server (
    ip  inet,
    hostname varchar(256),
    probed_time   timestamp,
    probed_count integer,
    deleted boolean default '0',
    unique(ip),
    unique(hostname)
);
CREATE INDEX probe_server_i1 ON probe_server( probed_time );
CREATE INDEX probe_server_i2 ON probe_server( probed_count );

Вставка:

insert into probe_server(hostname) values ('hostname.ru');

Вставки идут со скоростью всего около 100 в секунду. Причём, процессор практически не загружен, винт тоже вроде может ещё.
(Это 34гб IBM SCSI, нагружен он во время вставок примерно так:
~3 Мб/c, 180 транзакций в секунду. вроде для сказя это далеко не предел).
Так во что же упёрлись?


Содержание

Сообщения в этом обсуждении
"Постгрес очень медленно делает вставки."
Отправлено merlins shadow , 30-Ноя-05 10:53 
>Так во что же упёрлись?
Возможно в оперативку, у меня например при удвоении оперативки 512~1024 скорость выполнения запросов выросла от 10 до 20 раз. Зачем тебе б`ольшая
скорость вставки, это что юзеры с такой скоростью лобают....врядли. Если просто надо загнать данные из файла в базу, то обрати внимание на COPY и psql

"Постгрес очень медленно делает вставки."
Отправлено robot , 30-Ноя-05 11:05 
>>Так во что же упёрлись?
>Возможно в оперативку, у меня например при удвоении оперативки 512~1024 скорость выполнения
>запросов выросла от 10 до 20 раз. Зачем тебе б`ольшая
>скорость вставки, это что юзеры с такой скоростью лобают....врядли. Если просто надо
>загнать данные из файла в базу, то обрати внимание на COPY
>и psql

Оперативки вагон. Оказалось что таки упёрлись в диск. Не ожидал я от скази предела в 180-200 транзакций в секунду. Это показатели идешных винтов :(.
Кстати, не подкажете, а как в постгресе администртить отжирание памяти? Ну там сколько ему отдать под его буфферы и тд? Это в конфиге у него пишется?



"Постгрес очень медленно делает вставки."
Отправлено robot , 30-Ноя-05 11:14 
>>>Так во что же упёрлись?
>>Возможно в оперативку, у меня например при удвоении оперативки 512~1024 скорость выполнения
>>запросов выросла от 10 до 20 раз. Зачем тебе б`ольшая
>>скорость вставки, это что юзеры с такой скоростью лобают....врядли. Если просто надо
>>загнать данные из файла в базу, то обрати внимание на COPY
>>и psql
>
>Оперативки вагон. Оказалось что таки упёрлись в диск. Не ожидал я от
>скази предела в 180-200 транзакций в секунду. Это показатели идешных винтов
>:(.
>Кстати, не подкажете, а как в постгресе администртить отжирание памяти? Ну там
>сколько ему отдать под его буфферы и тд? Это в конфиге
>у него пишется?

Не совсем ясно выразился. Я имею введу кеш индексов и прочие кеши, наподобии mysql, не нашёл в конфиге таких параметров.


"Постгрес очень медленно делает вставки."
Отправлено merlins shadow , 30-Ноя-05 11:27 
Да посмотри в postgresql.conf. Вообще там достаточно много настроек для ускорения работы, и со всеми я не разбирался. Она у нас используется только как база для internet-примочек всяких.



"Постгрес очень медленно делает вставки."
Отправлено merlins shadow , 30-Ноя-05 12:03 
>Да посмотри в postgresql.conf. Вообще там достаточно много настроек для ускорения работы,
>и со всеми я не разбирался. Она у нас используется только
>как база для internet-примочек всяких.

и еще, увеличение некоторых буферов может привести к торможению базы, т.ч. аккуратно и внимательно!!!


"Постгрес очень медленно делает вставки."
Отправлено DeadMustdie , 16-Дек-05 14:10 
>Оперативки вагон. Оказалось что таки упёрлись в диск. Не ожидал я от
>скази предела в 180-200 транзакций в секунду. Это показатели идешных винтов
>:(.
>Кстати, не подкажете, а как в постгресе администртить отжирание памяти?
>Ну там
>сколько ему отдать под его буфферы и тд? Это в конфиге
>у него пишется?

Смотря каких транзакций. Механика у современных SCSI и IDE дисков практически одинаковая (за исключением совсем крутых SCSI ценой под $1000 за штучку), поэтому большое количество мелких транзакций практически наверняка будет тормозить процесс.

Есть прямой резон попытаться пакетировать вставку. Batch copy оно в PostgreSQL'е вроде бы называется. Производительность должна возрасти раз эдак в десять как минимум.


"Постгрес очень медленно делает вставки."
Отправлено rWizard , 16-Дек-05 16:16 
Дает-ли подобный результат несколько insert в одной транзакции?


"Постгрес очень медленно делает вставки."
Отправлено DeadMustdie , 16-Дек-05 18:41 
>Дает-ли подобный результат несколько insert в одной транзакции?

Нет.


"Постгрес очень медленно делает вставки."
Отправлено DeadMustdie , 16-Дек-05 18:42 
>Дает-ли подобный результат несколько insert в одной транзакции?

Некоторый выигрыш в скорости будет. Но не такой радикальный, как в случае пакетной вставки.