powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Informix [игнор отключен] [закрыт для гостей] / Головоломка-4: пропавшие записи
14 сообщений из 14, страница 1 из 1
Головоломка-4: пропавшие записи
    #36792251
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаю серию головоломок для дибиэев.
Дано : огромная таблица, которую надо выгрузить в файл(ы) за ограниченное время.
Принимаю решение распараллелить выгрузку, используя в качестве фильтра rowid.

То есть, один процесс выгружает четные rowid, второй - нечетные.
1. unload to file1 select * from dps_document where mod(rowid, 2) = 0
2. unload to file2 select * from dps_document where mod(rowid, 2) = 1

После выгрузки оказывается, что примерно 20% записей были пропущенны.

Почему ?

В таком вот аксепте
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36792259
svat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выбегалло,

0) ну так НДС! :)

1) "огромная таблица"
проблемы при обработке функцией mod() величин rowid, которые не умещаются в 4 байта типа REAL, который она ожидает на входе.

2) какое-то невероятное "смещение" rowid в процессе выгрузки (удаление/вставка новых записей другими процессами) или что-то в этом роде...

3) какой-то "побочный эффект" паралеллизма (борьба за ресурсы или что-то в этом роде)
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36792264
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выбегалло,

1. Какой тип блокировки использовался (на уровне страниц, на уровне записей)?
2. Какой используется уровень изоляции транзакций ?
3. Используются фрагментированные таблицы или не фрагментированные ?

С уважением,
Вадим.
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36792318
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVF112GVF,

Уровень блокировки - row;
rowid в процессе выгрузки не менялись.
уровень транзакций - dirty read, но данные не меняются (квази-статические данные). Forget about it, it's not relative to the solution :)
Таблица нефрагментированная.
"Побочных эффектов параллелизма" нет, если бы были -все сообчество DBA было бы сильно заинтересованл, поскольку... Поскольку. Поскольку мы пользуемя параллельными загрузками - выгрузками все время.
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36792320
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svat2Выбегалло,
е функцией mod() величин rowid, которые не умещаются в 4 байта типа REAL, который она ожидает на входе.


close but no cigar !
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36792326
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выбегаллоsvat2Выбегалло,
е функцией mod() величин rowid, которые не умещаются в 4 байта типа REAL, который она ожидает на входе.


close but no cigar !

И, конечно, rowid никогда не может быть real. Как, собственно, не должно быть real параметр для функции mod
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36792454
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mod(rowid, 2) is null ? почему так идей нет
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36792457
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выбегалло,

Что показывает:
1. select count(*) from dps_document where mod(rowid, 2) = 0 ?
2. select count(*) from dps_document where mod(rowid, 2) = 1 ?
3. select count(*) from dps_document ?

Какая версия IDS используется ?
Надеюсь, что Update Statistics выполняется ?!

С уважением,
Вадим
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36793041
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а дошло, я забыл математику
mod(-11,2) = -1
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36794188
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Дениса дошло, я забыл математику
mod(-11,2) = -1

Приз уходит телезрителю ! :)

Таки да, rowid может быть отрицательным, мать его за ногу.
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36794366
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВыбегаллоТаки да, rowid может быть отрицательным, мать его за ногу.
Вот всю свою информиксовскую "жизнь" я сторонился rowid-ов и программистам категорически запрещал его использовать. Вот и еще одно подтверждение :)

P.S. А он что, 4-х байтный даже в поздних версиях ?
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36794768
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilisВот всю свою информиксовскую "жизнь" я сторонился rowid-ов и программистам категорически запрещал его использовать. Вот и еще одно подтверждение :)Это как с goto, для тех кто зрит глубоко.

vasilisP.S. А он что, 4-х байтный даже в поздних версиях ?А как его поменять, это надо перелопатить все индексы. Оракл мудро подошел к этому вопросу, создал новый тип спейсов назвал их типа big...., и сказал а там роуайди 20 байт а не 10.
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36794833
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис Оракл мудро подошел к этому вопросу, создал новый тип спейсов назвал их типа big...., и сказал а там роуайди 20 байт а не 10.а нет, в bigfile они просто стали 10 байт чуть иначе использовать.
...
Рейтинг: 0 / 0
Головоломка-4: пропавшие записи
    #36798997
svat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выбегалло
не должно быть real параметр для функции mod

... а вот в документации пишут таки про real ("чур, меня не бить"):

Код: plaintext
1.
2.
3.
4.
5.
MOD Function

The MOD function takes as arguments  two real number operands , and returns the remainder from integer division of the integer part 
of the first argument (the dividend) by the integer part of the second argument (the divisor). The value returned is an INT data type (or INT8 
for remainders outside the range of INT). The quotient and any fractional part of the remainder are discarded. The divisor cannot be 0. 
Thus, MOD (x,y) returns y (modulo x). Make sure that any variable that receives the result is of a data type that can store the returned value.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Головоломка-4: пропавшие записи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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