Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Забавная ситуация.... XX000 / 22 сообщений из 22, страница 1 из 1
02.08.2018, 18:44
    #39682749
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Добрый день.

Есть таблица, из которой не идет выборка:



Код: sql
1.
SELECT * FROM table




ОШИБКА: invalid memory alloc request size 4294967293
********** Ошибка **********

ОШИБКА: invalid memory alloc request size 4294967293
SQL-состояние: XX000



При этом VACUUM FULL table выполняется успешно.

Настройки памяти сдедующие
...
Рейтинг: 0 / 0
02.08.2018, 18:53
    #39682756
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Это выполняется:

SELECT * FROM table LIMIT 20000


Этот запрос уже выдает ошибку:

SELECT * FROM table LIMIT 20000



Подозреваю что-то с настройками памяти...
...
Рейтинг: 0 / 0
02.08.2018, 18:54
    #39682757
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
УткъЭто выполняется:

SELECT * FROM table LIMIT 20000


Этот запрос уже выдает ошибку:

SELECT * FROM table LIMIT 2 0000



Подозреваю что-то с настройками памяти...
...
Рейтинг: 0 / 0
02.08.2018, 18:54
    #39682758
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Уткъ,

1)покажите структуру таблицы

2)отрабатывает ли select count(*) from table и какой результат дает?

3)есть ли длинные текстовые или бинарные поля в таблице (длиннее 2kb)?

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
02.08.2018, 18:54
    #39682759
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Т.е. так:

УткъЭто выполняется:

SELECT * FROM table LIMIT 20000


Этот запрос уже выдает ошибку:

SELECT * FROM table LIMIT 3 0000



Подозреваю что-то с настройками памяти...
...
Рейтинг: 0 / 0
02.08.2018, 18:57
    #39682763
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Maxim BogukУткъ,

2)отрабатывает ли select count(*) from table и какой результат дает?


Да, в таблице 35 тыс строк


Maxim Boguk3)есть ли длинные текстовые или бинарные поля в таблице (длиннее 2kb)?


Нет, максимально блинное поле character varying(255), остальные bigint, double precision и timestamp.
...
Рейтинг: 0 / 0
02.08.2018, 19:19
    #39682770
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
УткъMaxim BogukУткъ,

2)отрабатывает ли select count(*) from table и какой результат дает?


Да, в таблице 35 тыс строк


Maxim Boguk3)есть ли длинные текстовые или бинарные поля в таблице (длиннее 2kb)?


Нет, максимально блинное поле character varying(255), остальные bigint, double precision и timestamp.

Если делать select конкретное_поле from table;
то ломается всегда?
ломается на каком то конкретном поле?
не ломается вообще?
4GB памяти запросить такой запрос не должен.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
02.08.2018, 20:49
    #39682818
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
а пусть explain analyze покажет, какой там width и rows
...
Рейтинг: 0 / 0
03.08.2018, 10:04
    #39682931
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
полудуха пусть explain analyze покажет, какой там width и rows


Код: sql
1.
2.
3.
"Seq Scan on table  (cost=0.00..1200.97 rows=34897 width=663) (actual time=7.322..299.823 rows=34897 loops=1)"
"Planning time: 0.084 ms"
"Execution time: 304.085 ms"




И тут же:
...
Рейтинг: 0 / 0
03.08.2018, 10:16
    #39682945
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Maxim BogukУткъпропущено...


Да, в таблице 35 тыс строк


пропущено...


Нет, максимально блинное поле character varying(255), остальные bigint, double precision и timestamp.

Если делать select конкретное_поле from table;
то ломается всегда?
ломается на каком то конкретном поле?
не ломается вообще?
4GB памяти запросить такой запрос не должен.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru





Методом исключения оказалось что при выборе только одного поля возникает эта ошибка.

Поле:

Код: sql
1.
code character varying(255)




Из-за чего такая ошибка? Ведь в таблице есть еще 4 поля с таким же точно типом.
...
Рейтинг: 0 / 0
03.08.2018, 10:25
    #39682948
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
в поле этом в основном значения из двух символов.

Код: sql
1.
SELECT DISTINCT code FROM table




Вызывает отключения от БД, даже без ошибки XX000
...
Рейтинг: 0 / 0
03.08.2018, 10:27
    #39682949
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Уткъв поле этом в основном значения из двух символов.

Код: sql
1.
SELECT DISTINCT code FROM table




Вызывает отключения от БД, даже без ошибки XX000

И БД падает в режим востановления с ошибкой 0xC0000005



0xC0000005

STATUS_ACCESS_VIOLATION


The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.
...
Рейтинг: 0 / 0
03.08.2018, 10:38
    #39682955
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Код: sql
1.
SELECT * FROM pg_stats WHERE tablename='table' AND attname='code'
...
Рейтинг: 0 / 0
03.08.2018, 10:43
    #39682957
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
При этом


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT COUNT(code) FROM table WHERE code='кг'
6168

SELECT COUNT(code) FROM table WHERE code='шт'
28728

SELECT COUNT(code) FROM table
34897




34897 - 6168 = 2872 9




Получается есть какое-то одно значение в таблице, при выборке которого падает весь кластер.

Запрос
Код: sql
1.
SELECT code FROM table WHERE code IN ('кг','шт')



выполняется без ошибок.


Код: sql
1.
SELECT code FROM table WHERE code NOT IN ('кг','шт')




Приводит к падению кластера.
...
Рейтинг: 0 / 0
03.08.2018, 11:03
    #39682963
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
При этом:


SELECT code INTO corrupted_table FROM table WHERE code NOT IN ('кг','шт')

отрабатывает нормально,

но если пытаюсь из другой БД выполенить



select q.code
INTO corrupted_table
from dblink(
' dbname=prod
user=postgres
password=***'::text,
'SELECT code FROM table WHERE code NOT IN (''кг'',''шт'');'::text) q (code character varying(255));


Выдает ошибку.
...
Рейтинг: 0 / 0
03.08.2018, 11:05
    #39682966
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Уткъ,

я такое видел при сбоящей плашке памяти. Там оказалась повреждена страница в таблице в итоге
Посему совет среплицировать базу куда-нибудь в другое место, затем погонять мемтест. Из сбойной таблички вытащить всё что читается.
...
Рейтинг: 0 / 0
03.08.2018, 11:07
    #39682968
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Сделал:
Код: sql
1.
DELETE FROM table WHERE code NOT IN ('кг','шт')



Сейчас работает.

Перед этим сохранил проблемную строку в другую таблицу на всякий случай.

Попробую ее в другую БД перетащить подменой файлов, для опытов.


Вообще с такой ситуацией еще не сталкивался, охото разобраться как подобные строки выявлять, ведь их может быть много
...
Рейтинг: 0 / 0
03.08.2018, 11:09
    #39682969
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
MelkijУткъ,

я такое видел при сбоящей плашке памяти. Там оказалась повреждена страница в таблице в итоге
Посему совет среплицировать базу куда-нибудь в другое место, затем погонять мемтест. Из сбойной таблички вытащить всё что читается.

Был сбой по питанию на сервере.

После этого побилась 1 таблица и индекс.

Индекс перестроил, таблицу поблочно перетащил в другую, все блоки, которые читались.

И среди этих перетащенных блоков оказалась эта срока.
...
Рейтинг: 0 / 0
03.08.2018, 11:11
    #39682972
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
MelkijУткъ,

я такое видел при сбоящей плашке памяти. Там оказалась повреждена страница в таблице в итоге
Посему совет среплицировать базу куда-нибудь в другое место, затем погонять мемтест. Из сбойной таблички вытащить всё что читается.
сама уникальность случая намекает на сбои в железе
...
Рейтинг: 0 / 0
03.08.2018, 11:15
    #39682977
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
УткъMelkijУткъ,

я такое видел при сбоящей плашке памяти. Там оказалась повреждена страница в таблице в итоге
Посему совет среплицировать базу куда-нибудь в другое место, затем погонять мемтест. Из сбойной таблички вытащить всё что читается.

Был сбой по питанию на сервере.

После этого побилась 1 таблица и индекс.

Индекс перестроил, таблицу поблочно перетащил в другую, все блоки, которые читались.

И среди этих перетащенных блоков оказалась эта срока.

Ну так с этого надо было начинать блин.
У вас там была побитая на физическом уровне строка которая к этой проблеме и приводила.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
03.08.2018, 11:20
    #39682981
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
Maxim BogukУткъпропущено...


Был сбой по питанию на сервере.

После этого побилась 1 таблица и индекс.

Индекс перестроил, таблицу поблочно перетащил в другую, все блоки, которые читались.

И среди этих перетащенных блоков оказалась эта срока.

Ну так с этого надо было начинать блин.
У вас там была побитая на физическом уровне строка которая к этой проблеме и приводила.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


А скажите, как можно подобные строки отслеживать?

на эту случайно наткнулся по жалобам пользователей.

basebackup отрабатывает нормально.
...
Рейтинг: 0 / 0
03.08.2018, 11:28
    #39682988
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавная ситуация.... XX000
УткъMaxim Bogukпропущено...


Ну так с этого надо было начинать блин.
У вас там была побитая на физическом уровне строка которая к этой проблеме и приводила.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


А скажите, как можно подобные строки отслеживать?

на эту случайно наткнулся по жалобам пользователей.

basebackup отрабатывает нормально.

Никак. После физического сбоя диска или файловой системы - сервер наливается с нуля с base backup + wal archive Или переключается на реплику именно ПОТОМУ ЧТО ПОНЯТЬ (или предсказать) что еще и где и как побилось - возможности нет.

PS: если вы делаете кластер с нуля - может помочь включение initdb -k, --data-checksums use data page checksums
у всего кластера (на живом сервере это уже нельзя сделать) в таком варианте битые страницы будут проверяться при чтении с дика на совпадение checksum (а base backup в 11 версии тоже будет их проверять "Allow heap pages checksums to be checked during streaming base backup (Michael Banck)"). Но это не панацея.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Забавная ситуация.... XX000 / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]