Thread: Создание индекса на большу таблицу
Привет всем. Вот получил такую интересную диагностику при создании индекса на большой таблице. Где стоит этот максимум? Что за переменная? В конфиге ничего не увидел. ERROR: статус транзакции 1163084646 не доступен ERROR: строка индекса требует байт: 4522000, при максимуме: 8191 ERROR: статус транзакции 1163084646 не доступен ERROR: статус транзакции 1163084646 не доступен -- С уважением, Виктор
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--
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)
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 строчкам и больше. Верю, я вроде раньше тоже на эти проблемы не наступал. -- С уважением, Виктор
Viktor Vislobokov wrote: > Повторные попытки создать индекс дают такую же диагностику как и в первом > варианте: Диск проверяли? В редхатоидах сделать touch /forcefsck и перегрузиться. В других системах иначе, но проверить FS надо бы. -- С уважением, технический директор ООО "ЦСА" Николай Газалов www.sbin.org +7 8793 365584 (GPG Key ID: 4396B2D0)
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--
Nick Gazaloff wrote: > Viktor Vislobokov wrote: > >> Повторные попытки создать индекс дают такую же диагностику как и в >> первом >> варианте: > > > Диск проверяли? В редхатоидах сделать > touch /forcefsck > и перегрузиться. В других системах иначе, но проверить FS надо бы. Проверил. Были ошибки. Ошибки исправлены. Попробовал снова - всё тоже самое. Опять не находит файл. Думаю, что и ошибки были вызваны самим PostgreSQL, который что-то делал и не доделал. Вот мусор и остался. -- С уважением, Виктор
В общем я понял, удачи мне здесь не видать. Некогда мне сочинять послания в hackers, коры собирать и прочее. Мне проблему надо решить. В данном ключе не решается. Будем пытаться подругому. > > а вот с этим в -hackers, только сообщение на english :) Что-то в Btree > коде сломалось -- С уважением, Виктор
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--