LINUX.ORG.RU

Ключи/индексы SQL - влияние на скорость insert


0

0

имеет ли смысл создавать индексы для таблиц,
у которых критичной является скорость и прожорливость insert,
update не происходит вообще,
а select - редко-редко, да и то он связан с удалением..

более точно - типичная таблица до 100К записей,
добавляются по 10-20К записей раз в 10 минут, 
за час проходят пара select чтобы выбрать новые записи,
раз в день происходит чистка - то есть удаляется примерно половина всего..

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

да! всё это применительно к MySQL и PgSQL

★★★★★

В таком случае индексы не очень нужны ибо они перестраиваются. А вообще правильнее всего попробовать это реализовать.

anonymous
()

IIRC. в Postrgres для таблицы всегда создается как минимум 1 индекс - по OID.

А на вопрос так сразу и не ответить - мало подробностей. Вообще, если таблица помещается в кэш, то дополнительных индексы на производительность INSERT заметно влиять не должны, но могут сильно ускорить SELECT, так что надо мерять :)

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

плоские файлы - не катят по двум причинам :
1 - select`ы всё таки происходят и условия выборки у них разные
2 - удаление данных (то которое раз в сутки) тоже происходит по сложному условию


MKuznetsov ★★★★★
() автор топика

А собственно в чем проблема ? Теоретически индексы замедляют вставку, но практически, выборка без них не приемлемо медленна. Чаще вставку сильно замедляют триггеры.

На PostgreSQL вставка 700к строк на десктопной машине 2 летней давности проходит за 40 мин. В таблице примерно 20 полей: varchar, int4, timestamp. примерно 10 индексов, есть по 3-4 полям int, по varchar.

т.е. ваши 10-20к это 1-2 минуты на очень старом сервере. Это очень медленно ? Приведите схему таблицы, триггеры.

Возможно стоит отказаться от триггеров и просто запускать периодически процедуру.

anonymous
()

перед выборкой строй индексы, делай выборку (удаление, апдейт и тп.). потом удаляй индексы

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.