|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
legg kapelan пропущено... Код: plsql 1. 2.
или я чего то не понимаю или выглядит так, что вы сравниваете скорость чтения с диска данных таблицы и скорость перебора массива в оперативной памяти. такое обычно пишут в том случае если не получается одним махом проапдейтить всю таблицу. И тогда девелопер рисует оный код и зовет ее в лупе. Тут надо понимать что ничего таки не изменится - девелопер зовет эту лупу энное число раз, пока не апдейтится вся таблица. Грубо говоря те-же грабли без большого лока а по продолжительности дольше. С мат. вью тоже без большого лока, только быстрее в разы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 17:32 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
legg снапшот ту олд практически гарантирован ведь при прямом апдейте всего сразу? update никак не может дать snapshot too old, поскольку берет блоки в current режиме. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 17:32 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
kapelan Тут надо понимать что ничего таки не изменится Заблуждаетесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 17:33 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
booby legg ... или я чего то не понимаю или выглядит так, что вы сравниваете скорость чтения с диска данных таблицы и скорость перебора массива в оперативной памяти. Вы делаете тройную работу - два раза читаете блоки данных в буфере данных, и еще перебираете массив. При этом второе чтение у вас всегда сопровождается проверкой - не надо ли соответствующий блок еще раз прочитать в память. Кроме того, с транзакционной точки зрения, вы совершаете логическую ошибку , не блокируя прочитанные вашим первым чтением данные. После исключения логических ошибок ваш код, может быть, просто поставит базу колом на какое-то количество часов. в яблочко ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 17:37 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
booby legg ... или я чего то не понимаю или выглядит так, что вы сравниваете скорость чтения с диска данных таблицы и скорость перебора массива в оперативной памяти. Вы делаете тройную работу - два раза читаете блоки данных в буфере данных, и еще перебираете массив. При этом второе чтение у вас всегда сопровождается проверкой - не надо ли соответствующий блок еще раз прочитать в память. Кроме того, с транзакционной точки зрения, вы совершаете логическую ошибку, не блокируя прочитанные вами данные. После исключения логических ошибок ваш код, может быть, просто поставит базу колом на какое-то количество часов. я не понимаю ( "два раза читаете блоки данных в буфере данных," - это где? "с транзакционной точки зрения " - условием where отбираются те записи которые ни при каких обстоятельствах не будут принимать участие ни в каких транзакциях. потому колом поставить не должен). но в общем - верное замечание. только вот неверное условие where если зацепит записи участвующие потенциально в других транзакциях наделает делов куда больше чем поставит базу колом. так что кол в виде блокировок будет не бедой а спасением)) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 17:39 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
andrey_anonymous kapelan Тут надо понимать что ничего таки не изменится Заблуждаетесь. Нет не заблуждаюсь, да есть бенефиты у лупа но недостатки значительно хуже booby точно написал ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 17:39 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
kapelan andrey_anonymous пропущено... Заблуждаетесь. Нет не заблуждаюсь, да есть бенефиты у лупа Не туда смотрите. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 17:42 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
kapelan, вам пытаются сказать, что ваша идея про матвью сама по себе либо вообще не будет работать, а если повезет, то будет работать всего на порядок - другой хуже, чем вообще любое другое решение. В норме и три порядка может наскрестись. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 17:56 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
kapelan legg пропущено... или я чего то не понимаю или выглядит так, что вы сравниваете скорость чтения с диска данных таблицы и скорость перебора массива в оперативной памяти. такое обычно пишут в том случае если не получается одним махом проапдейтить всю таблицу. И тогда девелопер рисует оный код и зовет ее в лупе. Тут надо понимать что ничего таки не изменится - девелопер зовет эту лупу энное число раз, пока не апдейтится вся таблица. Грубо говоря те-же грабли без большого лока а по продолжительности дольше. С мат. вью тоже без большого лока, только быстрее в разы. матвью чем то принципиально отличается простой таблицы? суть вопроса - как проапдейтить большое количество (10000000) записей? считаете что ничего страшного одним апдейтом? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:00 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
kapelan, индекс в этой истории, если вообще смотрится, то функциональный, а скорее и вовсе bitmap, и насколько это совместимо с общей логикой использования целевой таблицы - издалека не видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:04 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
DBMS_PARALLEL_EXECUTE OverviewThis package lets you incrementally update table data in parallel, in two high-level steps. 1. Group sets of rows in the table into smaller-sized chunks. 2. Run a user-specified statement on these chunks in parallel, and commit when finished processing each chunk. This package introduces the notion of parallel execution task. This task groups the various steps associated with the parallel execution of a PL/SQL block, which is typically updating table data. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:07 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
я за вариант с разбивкой по диапазонам rowid. заодно можно и в параллели запустить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:08 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
booby kapelan, индекс в этой истории, если вообще смотрится, то функциональный, а скорее и вовсе bitmap, и насколько это совместимо с общей логикой использования целевой таблицы - издалека не видно. да бог с ним с этим индексом. не из-за него тормоза то. большой апдейт (долгий) это ведь плохо? как минимум ролбэксегменты растут из-за него. могут ведь кончится? или я вообще ахинею несу и можно хоть по 5 миллиардов строк одни выражением апдейтить? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:09 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
параллели нельзя. потому что. только в самом крайнем случае, через кучу согласований. внутренние наши обычаи такие ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:12 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
booby kapelan, индекс в этой истории, если вообще смотрится, то функциональный, а скорее и вовсе bitmap Ммм? Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:13 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
legg можно хоть по 5 миллиардов строк одни выражением апдейтить? 1. Если update одной транзакцией, то нужен будет большой rollback segment. 2. Statement restart - серьезная проблема для больших update - убедитесь, что не наступите. 3. В Вашем сценарии update вообще не нужен, delete-returning-bulk insert будет дешевле. Впрочем, повторяюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:17 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
legg параллели нельзя. потому что. только в самом крайнем случае, через кучу согласований. внутренние наши обычаи такие уточню - паралелль здесь не в смысле ENABLE_PARALLEL_DML, а в смысле два независимых процесса, обрабатывающих непересекающиеся диапазоны. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:21 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
andrey_anonymous 3. В Вашем сценарии update вообще не нужен, delete-returning-bulk insert будет дешевле. Впрочем, повторяюсь. это я запомнил и записал в специальный файлик ). Попробую. Спасибо. Буду тест кейсы писать - сверять скорость) andrey_anonymous 1. Если update одной транзакцией, то нужен будет большой rollback segment. - ну так и возвращаемся, транзакцию со всех сторон крайне желательно бить на куски. собственно вопрос и был как это делается по фэн шум. andrey_anonymous 2. Statement restart - серьезная проблема для больших update - убедитесь, что не наступите. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:24 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
кит северных морей legg параллели нельзя. потому что. только в самом крайнем случае, через кучу согласований. внутренние наши обычаи такие уточню - паралелль здесь не в смысле ENABLE_PARALLEL_DML, а в смысле два независимых процесса, обрабатывающих непересекающиеся диапазоны. DBMS_PARALLEL_EXECUTE и делает это вроде бы? теоретически можно, но не особо смысл есть мне кажется. нет жестких требований к времени. главное - не положить систему ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:27 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
legg кит северных морей пропущено... уточню - паралелль здесь не в смысле ENABLE_PARALLEL_DML, а в смысле два независимых процесса, обрабатывающих непересекающиеся диапазоны. DBMS_PARALLEL_EXECUTE и делает это вроде бы? теоретически можно, но не особо смысл есть мне кажется. нет жестких требований к времени. главное - не положить систему надо будет -допишу потом. главное чтоб суть заработала ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:30 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
andrey_anonymous, ответ такой - в живой ситуации не всякий админ порадуется, когда ему предложат держать стандартный индекс на толстой таблице, если заранее известно, что использоваться осмысленно он будет на 1% Кроме того, его clustering фактор непредсказуем, хотя именно эта история может существенно компенсироваться хинтами. В принципе, можно и настоять, что он нужен, при отсутствии ограничений со стороны вставки. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:36 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
legg я не могу нагуглить что это(. Это чудный механизм согласования целостности при dml. Применяется при update, delete, select for update и merge (с древним но непофиксенным багом). Если утрировать (там деталей миллион), то смысл в следующем: бредет процесс update по блокам таблицы. По их current версиям. Строчки перебирает, на предикат тестирует. И набредает на запись, которая: - подходила под предикат на момент запуска запроса (на scn согласования) - была изменена после запуска update конкурирующей транзакцией - изменение вывело запись из предиката. Упс! думает процесс, тут такое дело, набор данных-то рассогласован, надо что-то делать! Ну и откатывает ВСЕ произведенные до той поры изменения, хоть 99999999 из 10000000 После чего начинает всё с начала. ...а юзер ждет у моря погоды. И чем больше времени прошло от запуска запроса, тем выше вероятность влететь в ситуацию рассогласования и тем больший объем rollback он будет откатывать, а затем закатывать обратно на новый scn. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:39 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
booby andrey_anonymous, ответ такой - в живой ситуации не всякий админ порадуется Против правильного функционального я не возражал. Но bitmapped тут совсем не при делах. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:41 |
|
аск фор кодривью :)
|
|||
---|---|---|---|
#18+
andrey_anonymous legg я не могу нагуглить что это(. Это чудный механизм согласования целостности при dml. Применяется при update, delete, select for update и merge (с древним но непофиксенным багом). Если утрировать (там деталей миллион), то смысл в следующем: бредет процесс update по блокам таблицы. По их current версиям. Строчки перебирает, на предикат тестирует. И набредает на запись, которая: - подходила под предикат на момент запуска запроса (на scn согласования) - была изменена после запуска update конкурирующей транзакцией - изменение вывело запись из предиката. Упс! думает процесс, тут такое дело, набор данных-то рассогласован, надо что-то делать! Ну и откатывает ВСЕ произведенные до той поры изменения, хоть 99999999 из 10000000 После чего начинает всё с начала. ...а юзер ждет у моря погоды. И чем больше времени прошло от запуска запроса, тем выше вероятность влететь в ситуацию рассогласования и тем больший объем rollback он будет откатывать, а затем закатывать обратно на новый scn. ясно. спасибо! я краем уха слышал, но забыл. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 18:46 |
|
|
start [/forum/topic.php?fid=52&msg=40114647&tid=1879734]: |
0ms |
get settings: |
29ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
447ms |
get tp. blocked users: |
1ms |
others: | 2386ms |
total: | 2961ms |
0 / 0 |