Re: Размер SQL-запроса.

Lists: pgsql-ru-general
From: "Denis A(dot) Egorov" <denis(dot)egorov(at)virtonconsultants(dot)com>
To: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Размер SQL-запроса.
Date: 2005-05-25 18:39:25
Message-ID: 20050525183924.GC6070@virtonconsultants.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Доброго времени суток!

Вот сегодня столкнулся с проблемой, есть таблица(большая), мне нужно
сделать вот такой вот select:

selec id from test whwre id not in ( очень много),

выполнив его, ребутнулась вся база, запрос не выполнился, в общем пипец.
Хотя тоже самое на mysql выполняется без проблем.

Вот я и думаю может быть где-то ограничения какие либо стоят?

С уважением.
--
Denis A. Egorov


From: Markus Bertheau <twanger(at)bluetwanger(dot)de>
To: "Denis A(dot) Egorov" <denis(dot)egorov(at)virtonconsultants(dot)com>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Размер
Date: 2005-05-25 19:53:58
Message-ID: 1117050839.7299.8.camel@localhost.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Dnia 25-05-2005, śro o godzinie 21:39 +0300, Denis A. Egorov napisał(a):
> Доброго времени суток!
>
> Вот сегодня столкнулся с проблемой, есть таблица(большая), мне нужно
> сделать вот такой вот select:
>
> selec id from test whwre id not in ( очень много),
>
> выполнив его, ребутнулась вся база, запрос не выполнился, в общем пипец.
> Хотя тоже самое на mysql выполняется без проблем.
>
> Вот я и думаю может быть где-то ограничения какие либо стоят?

Есть. В нескольких гигабайтах. Версия какая? Сколько приблизительно
знаков в окончательном запросе?

Маркус Берто

--
Markus Bertheau <twanger(at)bluetwanger(dot)de>


From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: "Denis A(dot) Egorov" <denis(dot)egorov(at)virtonconsultants(dot)com>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Размер SQL-запроса.
Date: 2005-05-25 21:15:54
Message-ID: Pine.GSO.4.62.0505260114100.1721@ra.sai.msu.su
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

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-1903590565-1117055754=:1721
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

Денис,

требуется больше информации. Версия, запрос, сообщения,
и что такое "ребутнулась" ?
Проблема воспроизводится или как ?
Если да, то готовь тестовый пример.

Олег
On Wed, 25 May 2005, Denis A. Egorov wrote:

> Доброго времени суток!
>
> Вот сегодня столкнулся с проблемой, есть таблица(большая), мне нужно
> сделать вот такой вот select:
>
> selec id from test whwre id not in ( очень много),
>
> выполнив его, ребутнулась вся база, запрос не выполнился, в общем пипец.
> Хотя тоже самое на mysql выполняется без проблем.
>
> Вот я и думаю может быть где-то ограничения какие либо стоят?
>
>
> С уважением.
>

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


From: "Denis A(dot) Egorov" <denis(dot)egorov(at)virtonconsultants(dot)com>
To: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Размер
Date: 2005-05-26 08:49:34
Message-ID: 20050526084933.GD6070@virtonconsultants.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Здравствуйте, Oleg Bartunov!

Да, сори.

Написал, отправил, а потом уже только подумал что мало проблему
описал. Верчером дело было...

Да, проблема воспроизводится, так сказать элементарно.

Вот версия postgresql:

PostgreSQL 7.4.8 on i386-portbld-freebsd4.10, compiled by GCC 2.95.4

Это о входящих данных:

head -c 100 big.sql
SELECT id FROM test WHERE id NOT IN ( '10', '100', '1000', '10000', '10001', '10002

wc sql_big.sql
1 14091 122660 sql_big.sql

psql -U test test < big.sql
сервер неожиданно прервал соединение
Скорее всего это означает что сервер завершил работу со сбоем
до или в течение обслуживания запроса.
подсоединение к серверу было потеряно

в логах:

/kernel: pid 26672 (postgres), uid 70: exited on signal 10 (core dumped)
postgres[26669]: [211-1] WARNING: terminating connection because of crash of another server process
postgres[26669]: [211-2] DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, beca use another server

postgres[26669]: [211-3] process exited abnormally and possibly corrupted shared memory.
postgres[26669]: [211-4] HINT: In a moment you should be able to reconnect to the database and repeat your command.
postgres[26639]: [210-1] WARNING: terminating connection because of crash of another server processa
postgres[26639]: [210-2] DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, beca use another server

и так по ходу для всех процесов postgres, и в самом конце

postgres[26677]: [213-1] FATAL: the database system is starting up
postgres[26687]: [213-1] FATAL: the database system is starting up

Есть у меня другая машина, с другим postgresq:

PostgreSQL 7.4.7 on i386-portbld-freebsd4.11, compiled by GCC 2.95.4

так вот при выполнении этого же самого sql выдаёт вот это:

ERROR: expression too complex
DETAIL: Nesting depth exceeds maximum expression depth 10000.
HINT: Increase the configuration parameter "max_expr_depth".

но, всё остаётся работать...

On Thu, May 26, 2005 at 01:15:54AM +0400, you wrote:

-> Денис,
->
-> требуется больше информации. Версия, запрос, сообщения,
-> и что такое "ребутнулась" ?
-> Проблема воспроизводится или как ?
-> Если да, то готовь тестовый пример.
->
->
-> Олег
-> On Wed, 25 May 2005, Denis A. Egorov wrote:
->
-> >Доброго времени суток!
-> >
-> >Вот сегодня столкнулся с проблемой, есть таблица(большая), мне нужно
-> >сделать вот такой вот select:
-> >
-> >selec id from test whwre id not in ( очень много),
-> >
-> >выполнив его, ребутнулась вся база, запрос не выполнился, в общем пипец.
-> >Хотя тоже самое на mysql выполняется без проблем.
-> >
-> >Вот я и думаю может быть где-то ограничения какие либо стоят?
-> >
-> >
-> >С уважением.
-> >
->
-> Regards,
-> Oleg
-> _____________________________________________________________
-> Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
-> Sternberg Astronomical Institute, Moscow University (Russia)
-> Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
-> phone: +007(095)939-16-83, +007(095)939-23-83

С уважением.
--
Denis A. Egorov


From: "Alexander M(dot) Pravking" <fduch(at)antar(dot)bryansk(dot)ru>
To: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Размер
Date: 2005-05-26 10:25:28
Message-ID: 20050526102528.GY990@dyatel.antar.bryansk.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

On Thu, May 26, 2005 at 11:49:34AM +0300, Denis A. Egorov wrote:
> Вот версия postgresql:
>
> PostgreSQL 7.4.8 on i386-portbld-freebsd4.10, compiled by GCC 2.95.4
>
> Это о входящих данных:
>
> head -c 100 big.sql
> SELECT id FROM test WHERE id NOT IN ( '10', '100', '1000', '10000', '10001', '10002
>
> wc sql_big.sql
> 1 14091 122660 sql_big.sql

У тебя в WHERE только NOT IN или ещё что-то?
Postgres иногда не очень умно делает эквивалентные преобразования
булевых выражений, в определённых случаях в результате они получаются
просто конскими.

Как решение могу посоветовать создание временной таблицы (скажем,
denied), куда сложить нужные id'ы и заменить твой NOT IN на
NOT IN (SELECT id FROM test) или на NOT EXISTS (SELECT 1 FROM denied d
WHERE d.id = test.id);

--
Fduch M. Pravking


From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: "Denis A(dot) Egorov" <denis(dot)egorov(at)virtonconsultants(dot)com>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Размер SQL-запроса.
Date: 2005-05-26 10:40:36
Message-ID: Pine.GSO.4.62.0505261438400.1721@ra.sai.msu.su
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

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-992951867-1117104036=:1721
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

Денис,

пришли откуда можно взять big.sql и я его проверю на своей машине.
А тебе советую обновится до 8.0.3, там IN точно оптимизированны или/и
посмотреть наш модуль contrib/intarray, который тебе обеспечит счастье :)

Олег
On Thu, 26 May 2005, Denis A. Egorov wrote:

> Здравствуйте, Oleg Bartunov!
>
> Да, сори.
>
> Написал, отправил, а потом уже только подумал что мало проблему
> описал. Верчером дело было...
>
> Да, проблема воспроизводится, так сказать элементарно.
>
>
> Вот версия postgresql:
>
> PostgreSQL 7.4.8 on i386-portbld-freebsd4.10, compiled by GCC 2.95.4
>
> Это о входящих данных:
>
> head -c 100 big.sql
> SELECT id FROM test WHERE id NOT IN ( '10', '100', '1000', '10000', '10001', '10002
>
> wc sql_big.sql
> 1 14091 122660 sql_big.sql
>
>
>
> psql -U test test < big.sql
> сервер неожиданно прервал соединение
> Скорее всего это означает что сервер завершил работу со сбоем
> до или в течение обслуживания запроса.
> подсоединение к серверу было потеряно
>
>
> в логах:
>
> /kernel: pid 26672 (postgres), uid 70: exited on signal 10 (core dumped)
> postgres[26669]: [211-1] WARNING: terminating connection because of crash of another server process
> postgres[26669]: [211-2] DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, beca use another server
>
> postgres[26669]: [211-3] process exited abnormally and possibly corrupted shared memory.
> postgres[26669]: [211-4] HINT: In a moment you should be able to reconnect to the database and repeat your command.
> postgres[26639]: [210-1] WARNING: terminating connection because of crash of another server processa
> postgres[26639]: [210-2] DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, beca use another server
>
> и так по ходу для всех процесов postgres, и в самом конце
>
> postgres[26677]: [213-1] FATAL: the database system is starting up
> postgres[26687]: [213-1] FATAL: the database system is starting up
>
>
>
> Есть у меня другая машина, с другим postgresq:
>
> PostgreSQL 7.4.7 on i386-portbld-freebsd4.11, compiled by GCC 2.95.4
>
> так вот при выполнении этого же самого sql выдаёт вот это:
>
> ERROR: expression too complex
> DETAIL: Nesting depth exceeds maximum expression depth 10000.
> HINT: Increase the configuration parameter "max_expr_depth".
>
> но, всё остаётся работать...
>
>
>
> On Thu, May 26, 2005 at 01:15:54AM +0400, you wrote:
>
> -> Денис,
> ->
> -> требуется больше информации. Версия, запрос, сообщения,
> -> и что такое "ребутнулась" ?
> -> Проблема воспроизводится или как ?
> -> Если да, то готовь тестовый пример.
> ->
> ->
> -> Олег
> -> On Wed, 25 May 2005, Denis A. Egorov wrote:
> ->
> -> >Доброго времени суток!
> -> >
> -> >Вот сегодня столкнулся с проблемой, есть таблица(большая), мне нужно
> -> >сделать вот такой вот select:
> -> >
> -> >selec id from test whwre id not in ( очень много),
> -> >
> -> >выполнив его, ребутнулась вся база, запрос не выполнился, в общем пипец.
> -> >Хотя тоже самое на mysql выполняется без проблем.
> -> >
> -> >Вот я и думаю может быть где-то ограничения какие либо стоят?
> -> >
> -> >
> -> >С уважением.
> -> >
> ->
> -> Regards,
> -> Oleg
> -> _____________________________________________________________
> -> Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
> -> Sternberg Astronomical Institute, Moscow University (Russia)
> -> Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
> -> phone: +007(095)939-16-83, +007(095)939-23-83
>
>
> С уважением.
>

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


From: "Denis A(dot) Egorov" <denis(dot)egorov(at)virtonconsultants(dot)com>
To: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Размер
Date: 2005-05-26 11:00:53
Message-ID: 20050526110053.GE6070@virtonconsultants.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Здравствуйте, Alexander M. Pravking!

Нет, больше ничего нет, я привёл реальный пример.

Да, согласен, как вариант, но это есть костыли...

Думаю что буду переходить на 8.3, как советует Олег.

On Thu, May 26, 2005 at 02:25:28PM +0400, you wrote:

-> On Thu, May 26, 2005 at 11:49:34AM +0300, Denis A. Egorov wrote:
-> > Вот версия postgresql:
-> >
-> > PostgreSQL 7.4.8 on i386-portbld-freebsd4.10, compiled by GCC 2.95.4
-> >
-> > Это о входящих данных:
-> >
-> > head -c 100 big.sql
-> > SELECT id FROM test WHERE id NOT IN ( '10', '100', '1000', '10000', '10001', '10002
-> >
-> > wc sql_big.sql
-> > 1 14091 122660 sql_big.sql
->
-> У тебя в WHERE только NOT IN или ещё что-то?
-> Postgres иногда не очень умно делает эквивалентные преобразования
-> булевых выражений, в определённых случаях в результате они получаются
-> просто конскими.
->
-> Как решение могу посоветовать создание временной таблицы (скажем,
-> denied), куда сложить нужные id'ы и заменить твой NOT IN на
-> NOT IN (SELECT id FROM test) или на NOT EXISTS (SELECT 1 FROM denied d
-> WHERE d.id = test.id);
->
->
-> --
-> Fduch M. Pravking
->
-> ---------------------------(end of broadcast)---------------------------
-> TIP 1: subscribe and unsubscribe commands go to majordomo(at)postgresql(dot)org
->

--
Denis A. Egorov


From: "Denis A(dot) Egorov" <denis(dot)egorov(at)virtonconsultants(dot)com>
To: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Размер
Date: 2005-05-26 11:24:27
Message-ID: 20050526112427.GF6070@virtonconsultants.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Олег,

могу выслать на мыло, или лучше дать URL?

Да, так буду и делать, я изначально хотел ставить 8.0.3, но версия из
портов не собралась, а сроки горели и пришлось поставить 7-ку...

Теперь вот другой вопрос как наиболле безболезненно и _быстро_ перехать с 7-ки на 8-ку?

Насколько я понял, нужно делатьполный дамп и его вставлеть?

Простым копированием этого ж не сделать?

On Thu, May 26, 2005 at 02:40:36PM +0400, you wrote:

-> Денис,
->
-> пришли откуда можно взять big.sql и я его проверю на своей машине.
-> А тебе советую обновится до 8.0.3, там IN точно оптимизированны или/и
-> посмотреть наш модуль contrib/intarray, который тебе обеспечит счастье :)
->
->
-> Олег
-> On Thu, 26 May 2005, Denis A. Egorov wrote:
->
-> >Здравствуйте, Oleg Bartunov!
-> >
-> >Да, сори.
-> >
-> >Написал, отправил, а потом уже только подумал что мало проблему
-> >описал. Верчером дело было...
-> >
-> >Да, проблема воспроизводится, так сказать элементарно.
-> >
-> >
-> >Вот версия postgresql:
-> >
-> >PostgreSQL 7.4.8 on i386-portbld-freebsd4.10, compiled by GCC 2.95.4
-> >
-> >Это о входящих данных:
-> >
-> >head -c 100 big.sql
-> >SELECT id FROM test WHERE id NOT IN ( '10', '100', '1000', '10000',
-> >'10001', '10002
-> >
-> >wc sql_big.sql
-> >1 14091 122660 sql_big.sql
-> >
-> >
-> >
-> >psql -U test test < big.sql
-> >сервер неожиданно прервал соединение
-> > Скорее всего это означает что сервер завершил работу со сбоем
-> > до или в течение обслуживания запроса.
-> >подсоединение к серверу было потеряно
-> >
-> >
-> >в логах:
-> >

[cut]

-> >С уважением.
-> >
->
-> Regards,
-> Oleg
-> _____________________________________________________________
-> Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
-> Sternberg Astronomical Institute, Moscow University (Russia)
-> Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
-> phone: +007(095)939-16-83, +007(095)939-23-83

С уважением.
--
Denis A. Egorov


From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: "Denis A(dot) Egorov" <denis(dot)egorov(at)virtonconsultants(dot)com>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Размер
Date: 2005-05-26 11:55:04
Message-ID: Pine.GSO.4.62.0505261553380.1721@ra.sai.msu.su
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

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-1296255701-1117108504=:1721
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

On Thu, 26 May 2005, Denis A. Egorov wrote:

> Олег,
>
> могу выслать на мыло, или лучше дать URL?

URL лучше.

>
> Да, так буду и делать, я изначально хотел ставить 8.0.3, но версия из
> портов не собралась, а сроки горели и пришлось поставить 7-ку...
>
> Теперь вот другой вопрос как наиболле безболезненно и _быстро_ перехать с 7-ки на 8-ку?
>
> Насколько я понял, нужно делатьполный дамп и его вставлеть?
>
> Простым копированием этого ж не сделать?
>

да, конечно. Полный дамп или поставь слонов (Slony) и все сделаешь в online
без downtime. Мы так и сделали в свое время, заодно слонов пастись научишься :)

>
> On Thu, May 26, 2005 at 02:40:36PM +0400, you wrote:
>
> -> Денис,
> ->
> -> пришли откуда можно взять big.sql и я его проверю на своей машине.
> -> А тебе советую обновится до 8.0.3, там IN точно оптимизированны или/и
> -> посмотреть наш модуль contrib/intarray, который тебе обеспечит счастье :)
> ->
> ->
> -> Олег
> -> On Thu, 26 May 2005, Denis A. Egorov wrote:
> ->
> -> >Здравствуйте, Oleg Bartunov!
> -> >
> -> >Да, сори.
> -> >
> -> >Написал, отправил, а потом уже только подумал что мало проблему
> -> >описал. Верчером дело было...
> -> >
> -> >Да, проблема воспроизводится, так сказать элементарно.
> -> >
> -> >
> -> >Вот версия postgresql:
> -> >
> -> >PostgreSQL 7.4.8 on i386-portbld-freebsd4.10, compiled by GCC 2.95.4
> -> >
> -> >Это о входящих данных:
> -> >
> -> >head -c 100 big.sql
> -> >SELECT id FROM test WHERE id NOT IN ( '10', '100', '1000', '10000',
> -> >'10001', '10002
> -> >
> -> >wc sql_big.sql
> -> >1 14091 122660 sql_big.sql
> -> >
> -> >
> -> >
> -> >psql -U test test < big.sql
> -> >сервер неожиданно прервал соединение
> -> > Скорее всего это означает что сервер завершил работу со сбоем
> -> > до или в течение обслуживания запроса.
> -> >подсоединение к серверу было потеряно
> -> >
> -> >
> -> >в логах:
> -> >
>
> [cut]
>
> -> >С уважением.
> -> >
> ->
> -> Regards,
> -> Oleg
> -> _____________________________________________________________
> -> Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
> -> Sternberg Astronomical Institute, Moscow University (Russia)
> -> Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
> -> phone: +007(095)939-16-83, +007(095)939-23-83
>
>
> С уважением.
>

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