Обсуждение: Создание индекса на большу таблицу

Поиск
Список
Период
Сортировка

Создание индекса на большу таблицу

От
"Viktor Vislobokov"
Дата:
Привет всем.

Вот получил такую интересную диагностику при создании индекса
на большой таблице. Где стоит этот максимум? Что за переменная?
В конфиге ничего не увидел.

ERROR:  статус транзакции 1163084646 не доступен
ERROR:  строка индекса требует байт: 4522000, при максимуме: 8191
ERROR:  статус транзакции 1163084646 не доступен
ERROR:  статус транзакции 1163084646 не доступен

--
С уважением, Виктор



Re: Создание индекса н

От
Oleg Bartunov
Дата:
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-658816051-1116877728=:2767
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

Мне это непонятно. Поподробней нельзя ?
Я совершенно точно создавал индексы по 500,000,000 строчкам и больше.

Олег
On Mon, 23 May 2005, Viktor Vislobokov wrote:

> Привет всем.
>
> Вот получил такую интересную диагностику при создании индекса
> на большой таблице. Где стоит этот максимум? Что за переменная?
> В конфиге ничего не увидел.
>
> ERROR:  статус транзакции 1163084646 не доступен
> ERROR:  строка индекса требует байт: 4522000, при максимуме: 8191
> ERROR:  статус транзакции 1163084646 не доступен
> ERROR:  статус транзакции 1163084646 не доступен
>
>

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-658816051-1116877728=:2767--

Re: Создание и

От
Nick Gazaloff
Дата:
Oleg Bartunov wrote:
> Мне это непонятно. Поподробней нельзя ?
> Я совершенно точно создавал индексы по 500,000,000 строчкам и больше.

Нет, тут, похоже, 1 строка не влазит. Там большое значение TEXT?


>
> Олег
> On Mon, 23 May 2005, Viktor Vislobokov wrote:
>
>> Привет всем.
>>
>> Вот получил такую интересную диагностику при создании индекса
>> на большой таблице. Где стоит этот максимум? Что за переменная?
>> В конфиге ничего не увидел.
>>
>> ERROR:  статус транзакции 1163084646 не доступен
>> ERROR:  строка индекса требует байт: 4522000, при максимуме: 8191
>> ERROR:  статус транзакции 1163084646 не доступен
>> ERROR:  статус транзакции 1163084646 не доступен
>>
>>
>
>     Regards,
>         Oleg
> _____________________________________________________________
> Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
> Sternberg Astronomical Institute, Moscow University (Russia)
> Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
> phone: +007(095)939-16-83, +007(095)939-23-83
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org


--

С уважением,
технический директор ООО "ЦСА"
Николай Газалов
www.sbin.org
+7 8793 365584
(GPG Key ID: 4396B2D0)

Re: Создание и

От
"Viktor Vislobokov"
Дата:
Oleg Bartunov wrote:

> Мне это непонятно. Поподробней нельзя ?

И мне непонятно. Чудеса творятся какие-то.
И длина текстовой строки здесь не причём.
В общем вот подробности.

На одной тачке поднят сервер PostgreSQL 8.0.1
С другой тачки берётся лог, нарезается блоками по 5000 строк и формируется
набор файлов. Затем каждый из этих файлов я пытаюсь загрузить на
машину-сервер через psql и COPY ... FROM stdin
Почему не всё сразу? Потому что возможны обрывы связи, а скрипт
проверяет код возврата из psql и если он не 0, останавливает процесс
загрузки с выдачей сообщения админу.

Картина вырисовывается такая. Вот структура таблицы:

CREATE TABLE traffic_tbl (
id              SERIAL          PRIMARY KEY,
tdate           DATE,
ttime           TIME,
src_ip          INET            NOT NULL,
src_port        INT             NOT NULL,
dst_ip          INET            NOT NULL,
dst_port        INT             NOT NULL,
size            INT4            NOT NULL
);

Вариант 1.
Если я НЕ создаю индексов на эту таблицу, то загрузка всех файлов
проходит успешно: их около 1000. Т.е. вся информация УСПЕШНО
заносится в таблицу. Затем, при попытке создать
индексы (см. ниже как) я получаю ошибку:

ERROR:  статус транзакции 1936024431 не доступен
ERROR:  статус транзакции 1936024431 не доступен
ERROR:  статус транзакции 1936024431 не доступен
ERROR:  статус транзакции 1936024431 не доступен

На стороне сервера в это время в логе вот такие ошибки:

ERROR:  статус транзакции 1936024431 не доступен
ПОДРОБНОСТИ:  не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/0736": No such file or directory
ERROR:  статус транзакции 1936024431 не доступен
ПОДРОБНОСТИ:  не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/0736": No such file or directory
ERROR:  статус транзакции 1936024431 не доступен
ПОДРОБНОСТИ:  не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/0736": No such file or directory
ERROR:  статус транзакции 1936024431 не доступен
ПОДРОБНОСТИ:  не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/0736": No such file or directory

Почему вдруг этого файла там не оказалось - я не знаю. Места
на диске свободного ещё много - 17Gb

Вариант 2.
Если я создаю индексы на эту таблицу:
CREATE INDEX src_ip_idx ON traffic_tbl (src_ip);
CREATE INDEX dst_ip_idx ON traffic_tbl (dst_ip);
CREATE INDEX src_port_idx ON traffic_tbl (src_port);
CREATE INDEX dst_port_idx ON traffic_tbl (dst_port);

и пытаюсь производить загрузку, то загрузка идёт, понятное дело,
медленнее, но
процесс обрывается на где-то на 1/3 файлов с сообщением:

PANIC:  failed to add item to the right sibling for "src_port_idx"
потеряна синхронизация с сервером, переустанавливается соединение
подсоединение к серверу было потеряно

В логе при этом написано

PANIC:  failed to add item to the right sibling for "src_port_idx"
КОНТЕКСТ:  COPY traffic_tbl, строка 3419: "2005-04-01   18:46:18
195.222.142.84  34075   217.106.50.196  80      536"
КОМАНДА:  COPY traffic_tbl (tdate, ttime, src_ip, src_port, dst_ip,
dst_port, size) FROM stdin;
LOG:  процесс сервера (PID 9642) был завершён сигналом 6
LOG:  завершение любых других активных серверных процессов
LOG:  все серверные процессы завершены... переинициализация
LOG:  система была прервана: 2005-05-24 07:44:21 YEKST
LOG:  контрольная точка: 1/9415D268
LOG:  redo-запись: 1/94003CA8; undo-запись: 0/0; отключение: FALSE
LOG:  ID следующей транзакции: 9550; следующий OID: 11085871
LOG:  система баз данных была неправильно остановлена; проLOG:  система
баз данных была неправильно остановлена; производится автоматическое
восстановление
FATAL:  система баз данных стартует
LOG:  REDO (повторить) начинается с 1/94003CA8
LOG:  некорректная контрольная сумма резервного блока 1 в записи на
1/95852CA0
LOG:  REDO (повторить) завершено на 1/95852C5C
LOG:  система готова к использованию

Теперь я попытаюсь удалить индекс и создать его по новой
DROP INDEX src_ip_idx;
DROP INDEX dst_ip_idx;
DROP INDEX src_port_idx;
DROP INDEX dst_port_idx;

CREATE INDEX src_ip_idx ON traffic_tbl (src_ip);
CREATE INDEX dst_ip_idx ON traffic_tbl (dst_ip);
CREATE INDEX src_port_idx ON traffic_tbl (src_port);
CREATE INDEX dst_port_idx ON traffic_tbl (dst_port);

Получаю сообщение
DROP INDEX
DROP INDEX
DROP INDEX
DROP INDEX
сервер неожиданно прервал соединение
        Скорее всего это означает что сервер завершил работу со сбоем
        до или в течение обслуживания запроса.
подсоединение к серверу было потеряно

И в логе
LOG:  процесс сервера (PID 9745) был завершён сигналом 11
LOG:  завершение любых других активных серверных процессов
LOG:  все серверные процессы завершены... переинициализация
LOG:  система была прервана: 2005-05-24 08:05:35 YEKST
LOG:  контрольная точка: 1/9586D6EC
LOG:  redo-запись: 1/9586D6EC; undo-запись: 0/0; отключение: FALSE
LOG:  ID следующей транзакции: 9562; следующий OID: 11094063
LOG:  система баз данных была неправильно остановлена; производится
автоматическое восстановление
LOG:  запись с нулевой длинноц в 1/9586D728
LOG:  REDO (повторить) не требуется
LOG:  система готова к использованию

Повторные попытки создать индекс дают такую же диагностику как и в первом
варианте:

ERROR:  статус транзакции 227412372 не доступен
ERROR:  статус транзакции 227412372 не доступен
ERROR:  статус транзакции 227412372 не доступен
ERROR:  статус транзакции 227412372 не доступен

с такими же сообщениями в логе:
ERROR:  статус транзакции 227412372 не доступен
ПОДРОБНОСТИ:  не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/00D8": No such file or directory
ERROR:  статус транзакции 227412372 не доступен
ПОДРОБНОСТИ:  не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/00D8": No such file or directory
ERROR:  статус транзакции 227412372 не доступен
ПОДРОБНОСТИ:  не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/00D8": No such file or directory
ERROR:  статус транзакции 227412372 не доступен
ПОДРОБНОСТИ:  не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/00D8": No such file or directory


> Я совершенно точно создавал индексы по 500,000,000 строчкам и больше.

Верю, я вроде раньше тоже на эти проблемы не наступал.

--
С уважением, Виктор



Re: Создание и

От
Nick Gazaloff
Дата:
Viktor Vislobokov wrote:
> Повторные попытки создать индекс дают такую же диагностику как и в первом
> варианте:

Диск проверяли? В редхатоидах сделать
touch /forcefsck
и перегрузиться. В других системах иначе, но проверить FS надо бы.

--

С уважением,
технический директор ООО "ЦСА"
Николай Газалов
www.sbin.org
+7 8793 365584
(GPG Key ID: 4396B2D0)

Re: Создание и

От
Oleg Bartunov
Дата:
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-1401208270-1116918884=:2767
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

On Tue, 24 May 2005, Viktor Vislobokov wrote:

>
> Вариант 2.
> Если я создаю индексы на эту таблицу:
> CREATE INDEX src_ip_idx ON traffic_tbl (src_ip);
> CREATE INDEX dst_ip_idx ON traffic_tbl (dst_ip);
> CREATE INDEX src_port_idx ON traffic_tbl (src_port);
> CREATE INDEX dst_port_idx ON traffic_tbl (dst_port);
>
> и пытаюсь производить загрузку, то загрузка идёт, понятное дело, медленнее,
> но
> процесс обрывается на где-то на 1/3 файлов с сообщением:
>
> PANIC:  failed to add item to the right sibling for "src_port_idx"

а вот с этим в -hackers, только сообщение на english :) Что-то в Btree
коде сломалось

> потеряна синхронизация с сервером, переустанавливается соединение
> подсоединение к серверу было потеряно
>
> В логе при этом написано
>
> PANIC:  failed to add item to the right sibling for "src_port_idx"
> КОНТЕКСТ:  COPY traffic_tbl, строка 3419: "2005-04-01   18:46:18
> 195.222.142.84  34075   217.106.50.196  80      536"
> КОМАНДА:  COPY traffic_tbl (tdate, ttime, src_ip, src_port, dst_ip, dst_port,
> size) FROM stdin;

а ты ручками эиу строчку вставлял ? Скорее всего вставится, но на всякий случай...
корку получил ? Если нет, то получи и попробуй gdb посмотреть backtrace.
И все в -hackers


     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-1401208270-1116918884=:2767--

Re: Создание и

От
"Viktor Vislobokov"
Дата:
Nick Gazaloff wrote:

> Viktor Vislobokov wrote:
>
>> Повторные попытки создать индекс дают такую же диагностику как и в
>> первом
>> варианте:
>
>
> Диск проверяли? В редхатоидах сделать
> touch /forcefsck
> и перегрузиться. В других системах иначе, но проверить FS надо бы.

Проверил. Были ошибки. Ошибки исправлены. Попробовал снова - всё тоже самое.
Опять не находит файл. Думаю, что и ошибки были вызваны самим PostgreSQL,
который что-то делал и не доделал. Вот мусор и остался.

--
С уважением, Виктор



Re: Создание и

От
"Viktor Vislobokov"
Дата:
В общем я понял, удачи мне здесь не видать. Некогда мне сочинять
послания в hackers, коры собирать и прочее. Мне проблему надо
решить. В данном ключе не решается. Будем пытаться подругому.

>
> а вот с этим в -hackers, только сообщение на english :) Что-то в Btree
> коде сломалось

--
С уважением, Виктор



Re: Создание и

От
Oleg Bartunov
Дата:
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-790359597-1116920989=:2767
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

ну это ты зря. Как же тогда проблемы решать ?
Выложи мне тестовые данные, я попробую.

Олег

On Tue, 24 May 2005, Viktor Vislobokov wrote:

> В общем я понял, удачи мне здесь не видать. Некогда мне сочинять
> послания в hackers, коры собирать и прочее. Мне проблему надо
> решить. В данном ключе не решается. Будем пытаться подругому.
>
>>
>> а вот с этим в -hackers, только сообщение на english :) Что-то в Btree
>> коде сломалось
>
>

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-790359597-1116920989=:2767--