что такое плохо...
Что лучше апдейт 10 строк 10ю операторами апдейт или 1 оператором за раз сразу 10 строк? А если строк сотни миллионов? Все обернуто в одну транзакцию. Возьмем бд где нет тригеров функций и все кристально чисто. Вот одна таблица и вот в ней такое кол во строк и больше ничего. Чисто абстракция с розовыми понями.
Упд. Под что лучше, хрчеься услышать весь путь который пройдет постгри и какие сложности его ждут
Сотни миллионов в апдейт?
Почему нет? From в апдейте позволяет многое
Я уточнил) 10 из 100 миллионов и все 100 миллионов разная постановка)
А нет. Тут имеется в виду мы либо будем 100 млн раз вызывать апдейт для строк или один апдейт на 100 млн. Условно говоря задачу из крайности в крайность как черное и белое
Для начала лучшэ то, что вы лучшэ понимаете и что вам проще читать.
Мне просто интересно узнать всю цепь действий постгри в двух сценариях
Одна и тоже почти. У вас одна транзакция
Ну, начните с explain. Потом в исходники -- по указанным там методам доступа. Потом -- в книгу Рогова или кого ещё по внутренностям постгреса. Через эту тысячу страниц у вас начнёт появляться некоторое понимание процэссов...
Я, например, не понял, в чём состоят эти сценарии, особенно "один апдейт на 100 млн строк". Что имелось в виду — огромный statement вида: WITH upd1 AS (UPDATE x SET y = 'z' WHERE id = 1), upd2 AS (UPDATE x SET z = 'v' WHERE id = 2), ... upd99999999 AS (...) UPDATE x SET y = 'foobar' WHERE id = 100000000; ? Или UPDATE x SET y = 5 WHERE id <= 100000000;, или какой-то другой вариант (тут много чего можно придумать)?
Про батчинг почитайте
Да может он и не нужен.
Ну я и не говорю что всегда нужен, вопрос выше абстрактный слишком
1 вариант, который вы описали это именно он Упд. вру, не внимательно прочитал.
Ну так это не сработает, т.к. statement такого размера (если я правильно прикинул, сколько это для 100M rows) PostgreSQL просто не выполнит. > Упд. вру, не внимательно прочитал. Ну так вот то-то и оно, что ответ может сильно зависеть от конкретного варианта...
Обсуждают сегодня