Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
15.08.2010, 08:41
|
|||
---|---|---|---|
Головоломка-4: пропавшие записи |
|||
#18+
Продолжаю серию головоломок для дибиэев. Дано : огромная таблица, которую надо выгрузить в файл(ы) за ограниченное время. Принимаю решение распараллелить выгрузку, используя в качестве фильтра 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% записей были пропущенны. Почему ? В таком вот аксепте ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.08.2010, 09:43
|
|||
---|---|---|---|
|
|||
Головоломка-4: пропавшие записи |
|||
#18+
Выбегалло, 0) ну так НДС! :) 1) "огромная таблица" проблемы при обработке функцией mod() величин rowid, которые не умещаются в 4 байта типа REAL, который она ожидает на входе. 2) какое-то невероятное "смещение" rowid в процессе выгрузки (удаление/вставка новых записей другими процессами) или что-то в этом роде... 3) какой-то "побочный эффект" паралеллизма (борьба за ресурсы или что-то в этом роде) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.08.2010, 10:27
|
|||
---|---|---|---|
|
|||
Головоломка-4: пропавшие записи |
|||
#18+
Выбегалло, 1. Какой тип блокировки использовался (на уровне страниц, на уровне записей)? 2. Какой используется уровень изоляции транзакций ? 3. Используются фрагментированные таблицы или не фрагментированные ? С уважением, Вадим. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.08.2010, 12:10
|
|||
---|---|---|---|
Головоломка-4: пропавшие записи |
|||
#18+
GVF112GVF, Уровень блокировки - row; rowid в процессе выгрузки не менялись. уровень транзакций - dirty read, но данные не меняются (квази-статические данные). Forget about it, it's not relative to the solution :) Таблица нефрагментированная. "Побочных эффектов параллелизма" нет, если бы были -все сообчество DBA было бы сильно заинтересованл, поскольку... Поскольку. Поскольку мы пользуемя параллельными загрузками - выгрузками все время. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.08.2010, 12:12
|
|||
---|---|---|---|
Головоломка-4: пропавшие записи |
|||
#18+
svat2Выбегалло, е функцией mod() величин rowid, которые не умещаются в 4 байта типа REAL, который она ожидает на входе. close but no cigar ! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.08.2010, 12:17
|
|||
---|---|---|---|
Головоломка-4: пропавшие записи |
|||
#18+
Выбегаллоsvat2Выбегалло, е функцией mod() величин rowid, которые не умещаются в 4 байта типа REAL, который она ожидает на входе. close but no cigar ! И, конечно, rowid никогда не может быть real. Как, собственно, не должно быть real параметр для функции mod ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.08.2010, 15:12
|
|||
---|---|---|---|
|
|||
Головоломка-4: пропавшие записи |
|||
#18+
mod(rowid, 2) is null ? почему так идей нет ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.08.2010, 15:16
|
|||
---|---|---|---|
|
|||
Головоломка-4: пропавшие записи |
|||
#18+
Выбегалло, Что показывает: 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 выполняется ?! С уважением, Вадим ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.08.2010, 10:40
|
|||
---|---|---|---|
|
|||
Головоломка-4: пропавшие записи |
|||
#18+
а дошло, я забыл математику mod(-11,2) = -1 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.08.2010, 18:00
|
|||
---|---|---|---|
Головоломка-4: пропавшие записи |
|||
#18+
Журавлев Дениса дошло, я забыл математику mod(-11,2) = -1 Приз уходит телезрителю ! :) Таки да, rowid может быть отрицательным, мать его за ногу. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.08.2010, 20:13
|
|||
---|---|---|---|
Головоломка-4: пропавшие записи |
|||
#18+
ВыбегаллоТаки да, rowid может быть отрицательным, мать его за ногу. Вот всю свою информиксовскую "жизнь" я сторонился rowid-ов и программистам категорически запрещал его использовать. Вот и еще одно подтверждение :) P.S. А он что, 4-х байтный даже в поздних версиях ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.08.2010, 09:51
|
|||
---|---|---|---|
|
|||
Головоломка-4: пропавшие записи |
|||
#18+
vasilisВот всю свою информиксовскую "жизнь" я сторонился rowid-ов и программистам категорически запрещал его использовать. Вот и еще одно подтверждение :)Это как с goto, для тех кто зрит глубоко. vasilisP.S. А он что, 4-х байтный даже в поздних версиях ?А как его поменять, это надо перелопатить все индексы. Оракл мудро подошел к этому вопросу, создал новый тип спейсов назвал их типа big...., и сказал а там роуайди 20 байт а не 10. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.08.2010, 10:15
|
|||
---|---|---|---|
|
|||
Головоломка-4: пропавшие записи |
|||
#18+
Журавлев Денис Оракл мудро подошел к этому вопросу, создал новый тип спейсов назвал их типа big...., и сказал а там роуайди 20 байт а не 10.а нет, в bigfile они просто стали 10 байт чуть иначе использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.08.2010, 23:31
|
|||
---|---|---|---|
|
|||
Головоломка-4: пропавшие записи |
|||
#18+
Выбегалло не должно быть real параметр для функции mod ... а вот в документации пишут таки про real ("чур, меня не бить"): Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=44&tablet=1&tid=1607519]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
289ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 401ms |
0 / 0 |