2013-08-12 3 views
0

Я новичок в PostgreSQL и все еще многому учусь, когда я ухожу. Моя компания использует PostgreSQL, и мы заполняем базу данных множеством данных. Данные, которые мы собираем, довольно громоздки по своей природе и получены из определенных типов видеоматериалов. Например, данные, связанные с видео объемом около 15 минут, заняли около двух дней, чтобы заглянуть в базу данных.PostgreSQL INSERT - режим автоматической фиксации против режима автоматической фиксации

Моя проблема заключается в том, что у меня есть наборы данных, которые относятся к количеству часов видео, которые потребовались бы недели, чтобы проникнуть в базу данных. Я был проинформирован о причине, по которой так долго глотать, было то, что PostgeSQK автоматически установил значение true по умолчанию, и для совершения транзакций требуется много времени/ресурсов. Мне сообщили, что я могу отключить автокоррект, благодаря чему процесс ускорится. Однако я обеспокоен тем, что многие пользователи собираются заполнять эту базу данных. Если я изменю программу на фиксацию, скажем, каждые 10 секунд и два человека пытаются заполнить одну и ту же таблицу. Первый человек получает id, а когда он говорит «запись 7», то второй человек пытается вставить в ту же таблицу, им предоставляется тот же ключ id, и как только первое лицо примет решение о внесении изменений, второй человек id ключ уже будет используя, таким образом, бросая ошибку.

Итак, каков наилучший способ вставки данных в базу данных PostgreSQL, когда несколько человек глотают данные одновременно? Есть ли способ обойти выдачу одного и того же ключа id нескольким людям при вставке данных в режим автоматической фиксации?

+0

Можете ли вы описать свой процесс импорта информации в postgres DB? Похоже, вы делаете что-то неправильно. Postgres может обрабатывать гигабайты данных в минуту на хорошем оборудовании. –

+0

Я работаю с наборами данных, которые содержат более 200 тыс. Записей на одном из самых популярных уровней базы данных. Мои подтаблицы содержат более 500 тыс. Записей. Это не помогает, что я должен проверить, что данные еще не существуют в таблицах, прежде чем я попытаюсь ввести данные. Сначала он вставляет данные релятививно быстро, но по мере того, как записи в таблице продолжают расти, он значительно замедляется. – Jeremy

+0

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

ответ

2

Если идентификаторы поступают из типа serial или PostgreSQL (который используется типом serial), вам никогда не придется беспокоиться о том, что два пользователя получают одинаковый идентификатор из последовательности. Это просто невозможно. Функция nextval() только один раз выдаёт заданный идентификатор.

Смежные вопросы