Сабж.Структура таблицы:
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 транзакций в секунду. вроде для сказя это далеко не предел).
Так во что же упёрлись?
>Так во что же упёрлись?
Возможно в оперативку, у меня например при удвоении оперативки 512~1024 скорость выполнения запросов выросла от 10 до 20 раз. Зачем тебе б`ольшая
скорость вставки, это что юзеры с такой скоростью лобают....врядли. Если просто надо загнать данные из файла в базу, то обрати внимание на COPY и psql
>>Так во что же упёрлись?
>Возможно в оперативку, у меня например при удвоении оперативки 512~1024 скорость выполнения
>запросов выросла от 10 до 20 раз. Зачем тебе б`ольшая
>скорость вставки, это что юзеры с такой скоростью лобают....врядли. Если просто надо
>загнать данные из файла в базу, то обрати внимание на COPY
>и psqlОперативки вагон. Оказалось что таки упёрлись в диск. Не ожидал я от скази предела в 180-200 транзакций в секунду. Это показатели идешных винтов :(.
Кстати, не подкажете, а как в постгресе администртить отжирание памяти? Ну там сколько ему отдать под его буфферы и тд? Это в конфиге у него пишется?
>>>Так во что же упёрлись?
>>Возможно в оперативку, у меня например при удвоении оперативки 512~1024 скорость выполнения
>>запросов выросла от 10 до 20 раз. Зачем тебе б`ольшая
>>скорость вставки, это что юзеры с такой скоростью лобают....врядли. Если просто надо
>>загнать данные из файла в базу, то обрати внимание на COPY
>>и psql
>
>Оперативки вагон. Оказалось что таки упёрлись в диск. Не ожидал я от
>скази предела в 180-200 транзакций в секунду. Это показатели идешных винтов
>:(.
>Кстати, не подкажете, а как в постгресе администртить отжирание памяти? Ну там
>сколько ему отдать под его буфферы и тд? Это в конфиге
>у него пишется?Не совсем ясно выразился. Я имею введу кеш индексов и прочие кеши, наподобии mysql, не нашёл в конфиге таких параметров.
Да посмотри в postgresql.conf. Вообще там достаточно много настроек для ускорения работы, и со всеми я не разбирался. Она у нас используется только как база для internet-примочек всяких.
>Да посмотри в postgresql.conf. Вообще там достаточно много настроек для ускорения работы,
>и со всеми я не разбирался. Она у нас используется только
>как база для internet-примочек всяких.и еще, увеличение некоторых буферов может привести к торможению базы, т.ч. аккуратно и внимательно!!!
>Оперативки вагон. Оказалось что таки упёрлись в диск. Не ожидал я от
>скази предела в 180-200 транзакций в секунду. Это показатели идешных винтов
>:(.
>Кстати, не подкажете, а как в постгресе администртить отжирание памяти?
>Ну там
>сколько ему отдать под его буфферы и тд? Это в конфиге
>у него пишется?Смотря каких транзакций. Механика у современных SCSI и IDE дисков практически одинаковая (за исключением совсем крутых SCSI ценой под $1000 за штучку), поэтому большое количество мелких транзакций практически наверняка будет тормозить процесс.
Есть прямой резон попытаться пакетировать вставку. Batch copy оно в PostgreSQL'е вроде бы называется. Производительность должна возрасти раз эдак в десять как минимум.
Дает-ли подобный результат несколько insert в одной транзакции?
>Дает-ли подобный результат несколько insert в одной транзакции?Нет.
>Дает-ли подобный результат несколько insert в одной транзакции?Некоторый выигрыш в скорости будет. Но не такой радикальный, как в случае пакетной вставки.