powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Индексы в ,большой таблице с частыми INSERT
5 сообщений из 5, страница 1 из 1
Индексы в ,большой таблице с частыми INSERT
    #33675116
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть большая таблица (десятки млн записей) в определенные промежутки времени в нее вставляется по 2000 записей. По этой же таблице делается суммирование (за промежутки времени,по ним и создан индекс). Для ускорения этой операции и некоторых других созданы индексы,которые тормозят INSERT, но без них сильно тормозят запросы.
Как быть в этой непростой ситуации? Сейчас удаляю индекс перед INSERTами,но потом они создаются продолжительное время.Может есть др приемы?
...
Рейтинг: 0 / 0
Индексы в ,большой таблице с частыми INSERT
    #33675286
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что инсерты так уж сильно тормозят? 2000 записей? Не верю. Вернее, могу поверить, если скажете, что у вас 20 индексов: по 3-4 поля + индексы по выражениям/функциям +- GIST индексы.
Ладно, поверю в любом случае, только скажите - сколько это "тормозят" в секундах (с индексами/без индексов)?

Да, и какая версия postgresql? на 8.1 возможно лучше использовать несколько одностолбцовых индексов (особенно для суммирования - по опыту говорю) - postgre сам их объединяет с помощью bitmap.
...
Рейтинг: 0 / 0
Индексы в ,большой таблице с частыми INSERT
    #33675305
ChameLe0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно сделать очередь.
Один из вариантов:
Создаешь таблицу А. От нее наследуешь таблицу B. Все вставки осуществляешь в Б. Затем пишешь скрипт который постоянно крутится и выполняет сл. дейстия.

begin;
insert into temp table tmp select * from B;
delete from B where id in (select id from tmp);
insert into A select * from tmp;
drop table tmp;
commit;

наследование очень удобно в том плане что select * from A будет выдавать все записи включая те что в B.
...
Рейтинг: 0 / 0
Индексы в ,большой таблице с частыми INSERT
    #33675375
> По этой же таблице делается суммирование

Может, есть смысл хранить промежуточные результаты?

> которые тормозят INSERT

sar, iostat?
...
Рейтинг: 0 / 0
Индексы в ,большой таблице с частыми INSERT
    #33675698
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тормоза просто на простых индексах при таком объеме вставки маловероятны. скорее всего они у вас уникью (т.е. вызывают триггер на каждой строке, и вообще склонны к лоченью - если конкурентная транза поюзала такое же значение уника).
я наблюдал сильное падение скорости при вставках при наличии форейн-кеев и прочих риференсов (такоже порождающих позаписные триггеры). приходилось убивать кеи в начали транзакции, далее согласованным запросом (чтобы не навставлять записей не имеющих родителей - после чего ключи уж точно не подымуцца) вливать записи, и, наконец, поднимать кеи. Получался даже выигрыш раз в 5 (не смотря на то, что поднятие кеев вещь совсем не шустрая). Вот с тех пор и думаю, что стейтментные триггера в таких случаях работали бы много шибче позаписных, будь в постгресе такие штукки как INSERTED и DELETED.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Индексы в ,большой таблице с частыми INSERT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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