|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
При выполнении сложных запросов, массовых заливок Postgres жутко тормозит. Почитал рекомендации пошаманил в postgresql.conf (прилагаю). Ничего не дает - по прежнему загрузка ЦП 100%, загрузка памяти 3% Куды копать? Может вовсе не postgres виноват, а Линукс? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 12:05 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2kПри выполнении <>, массовых заливок Postgres жутко тормозит. предположим СУБД вместо того чтобы залить данные на диск (поюзать дисковую) поюзало память. и туточки всё упало (где-то там перемкнуло в БП или обоих, или даже на мамке бумкнуло) -- и оно так в памяти и сдохло, не попав на диск -- оно вам надо ? ну и про запросы: -- какие запросы ? тексты, планы, вот это всё -- где оно ? то, что 100 % проца -- может означать, что запросы вычислительно дорогие, например, а память им нахер не упала. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 13:10 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
Вот функция Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
Вот ее вызов: Код: sql 1.
на таблице размером 20 млн. записей зависает на сутки. План посоветуйте как посмотреть, плз. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 13:33 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k, осторожно поинтересуюсь: 1 скока дистинктных lw_table_name вы ожЫдаете наблюсть в вашей log_write ? и 2. есть ли индекс на log_write, начинающийся с lw_table_name , (но, упаси, не богомерзкий текст/варчар_паттерн_опс, а нормально поддерживающий поиск правых/левых ветвей ) фак ультативнои да, похоже вашу задачу писали дятелы на оть@бись, а не для того, чтобы она таки нормально решалась (я бы, наверное, делал её короткими частями, скорее всего, и , возможно, даже в параллель по диапазонам lw_table_name, с небольшой опорной табличкой лога отработанных ключей ) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 14:13 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2kПлан посоветуйте как посмотреть, плз. Код: sql 1.
но это неинтересно интересно что--нть типа Код: sql 1. 2. 3. 4. 5. 6. 7.
ну и т.п. хотя и оно не интересно, ибо, имхо, нехрен реализовывать ваш скрипт как он есть вообще. пс. а конкурирующие читатели писатели у вас имеются ? эдак вы ещё можете всё время в очередь вставать за оными. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 14:22 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, 1. Около 30 2. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 18:43 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, 3. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
4. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Не могли бы прокомментировать этот результат? PS: Конкурирующих читателей/писателей нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 18:50 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k, вы всё ещё настаиваете на удалении 20лямов (хотя в плане у вас всего 5.5лямов) записей 1--й транзакцией ? если да -- то это 1. делается одним запросом.(напишите этот запрос [используйте кляузу USING для набора оставляемых записей] и посмотрите на его план) //и еще думаю, не помог бы вам тут, часом, индекс (lw_table_name,lw_rec_id,id). не совсем ясно, что у вас с плотностью lw_rec_id -- для получения max(id) по группам и самих групп для using 2. или за один проход for loop по сортированному набору. (факультативно, тут скорее всего это не интересно) Код: plaintext
немного оффтопапо вашей процедуре: есть ли у вас таблица "имен таблиц" ? если да, зачем вы упираетесь с дистинктом ? (он конечно сутки не занимает, но все ж таки лишняя работа). или ознакомьтесь с loose-indexcan--ом. тоже вариант. в вашем случае он (дистинкт) вообще может быть for loop-ом по одной записи, следующей вдоль индекса lw_table_name. (SELECT lw_table_name INTO _lw_table_name FROM mytable WHERE lw_table_name >_lw_table_name ORDER BY lw_table_name LIMIT 1). и да: не налегайте на динамический sql там, где планируете 10-ки тысяч синтаксических разборов. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 19:44 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k, так не пробовали? Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 19:49 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
Павел Лузанов, вот,да. можно и без using. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 19:55 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k, А сколько в штуках строк остается? Может, сделать наоборот: 1. Выбрать остающиеся строки во временную таблицу 2. Очистить имеющуюся таблицу (truncate) 3. Вставить остающиеся записи в таблицу из временной. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 22:04 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, это работает если нет конкурентных обращений к табличке. можно это же сделать без времянок: -- создаем 2 ротируемые партиечки. можно с триггером before insert [с перегружаемым тестом ф-ии] подстановки номера рабочей партиции на пустом предке, но обычно дешевле с подстановкой имен на уровне хранимок вставки, если обработка в основном массовая ) обеспечиваем лок записи о рабочей партиции на момент ротации. (т.е. очередь, и строгую одномоментность). и переключаем партиции. после переключения рабочей партиции делаем сдвиг оставляемых записей что-то типа: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
-- в любой момент табличка--предок доступна для чтения (с точностью до лока потомка на момент транкейта [тут можно выводить потомка из иерархии, что м.б. быстрее транкейта. но это чревато ошибкой в уже спланированных и выполняющихся запросах] ) накладные -- куча хенджоба. и усложнение планов запросов к таблице выигрыш -- снятие проблем вакуумирования и перестройки индексов при массовой очистке ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 22:47 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, То что Вы описали сильно напоминает механизм ротации очередей Londiste. Имеет смысл посмотреть их реализацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2017, 23:09 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
All, Прошу прощения, я не сказал в чем смысл: В базе несколько таблиц: Студенты Преподаватели Оценки Они в течении времени могут меняться (исправление опечатки в ФИО, изменение оценки, etc.) Все эти изменения (включая первичный insert) фиксировались в таблице log_write для того, чтобы другие системы могли периодически получать из этой базы только изменившиеся (или новые) данные. Для того чтобы системы-потребители знали, что они уже получили и не читали повторно, есть еще таблица log_read, в которой фиксируются сеансы чтения, но это к нашему вопросу не относится. До сих пор в log_write хранились все изменения, теперь решено оставить только последние, а все неактуальные удалить. Всего их было 20 млн. остаться должно 5-6. Т.е. необходимо удалить из таблицы log_write все записи, оставив по одной для каждого уникального значения поля lw_table_name, притом с наибольшим для этого значения id. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 07:19 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
Павел Лузанов, Попробовал. После трех часов работы остановил. Более быстрого способа не придумать? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 10:13 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, хорошая идея, но сломал голову, как выбрать только строки с максимальным id или не выспался или голову на свалку (( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 10:17 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k, Мне кажется, Вам нужно остановиться и собраться с мыслями. Эта задача написана в темах выше уже несколько раз. Как соберетесь с мыслями, смотрите (скопировано из поста выше 20528831 ): Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 10:25 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2kПавел Лузанов, Попробовал. После трех часов работы остановил. Более быстрого способа не придумать? покажите Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
для какого-нить существующего 'any_lw_table_name', но не самого частого. чтобы уложжиться. и следите за состоянием соединения через pg_stat_activity. т.к. в задаче, как она поставлена, все время присутствуют конкурирующие обращения. (в логируемые таблы кто--то пишет и переписывает) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 10:38 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, По постановке задачи от таблицы должно остаться примерно 25% записей. Вариант с удалением вызывает тоску. Предлагаю следующее действие: Выбираем строки, которые нужно оставить. Среди них фиксируем самую раннюю дату. Теперь все строки в таблице, более ранние чем зафиксированная дата, можно удалять по дате. После этого можно вернуться к задаче с меньшим количеством строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 10:52 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, не спешите. я хочу увидеть план. а в нем отсутствие триггеров. удалить 20 лямов узких рекордов -- это как кот чихнул. если ничто не мешает. в последнем я сильно сомневаюсь. а дальше копируем , на коленке, ротацию с pgq, если помехи есть ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 11:03 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, как вариант -- удалять запись--писи в исходной хранимке ТС (вернее её аналога с прямым проходом по сортированному набору) можно автономно через дблинк. это сильно развязывает руки. плюс нарезать головной процесс на слайсы минут по 10--20, посредство statement_timeout для выделенного ползателя. во избежание излишне долгой транзакции. и не надо никаких ротаций. но перестраивать индексы пж-у придётся долго и упорно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 11:11 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, Я не смогу его потом развидеть. В предложенном Вами запросе имеются: -- Группировка по полям без индекса с составными полями (нет индекса, под эту группировку) -- Предложение NOT IN (SELECT ...) Причем эти действия равномерно размазаны между отдельными группами (этих групп со слов автора примерно 5-6 млн). Какие еще более медленные запросы Вы знаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 11:12 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, И еще напомню, что прямо сейчас автовакуум отключен. (Надеюсь, только на период интенсивной обработки данных). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 11:13 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursidoqwwq, Я не смогу его потом развидеть. В предложенном Вами запросе имеются: -- Группировка по полям без индекса с составными полями (нет индекса, под эту группировку) -- Предложение NOT IN (SELECT ...) Причем эти действия равномерно размазаны между отдельными группами (этих групп со слов автора примерно 5-6 млн). Какие еще более медленные запросы Вы знаете? вам же ТС отписался, что это займет примерно Execution time: 8767.513 ms если так боитеся что NOT IN (SELECT ...) распишите его через Код: sql 1. 2. 3. 4. 5.
это механическая работа или даже через что--то навроде: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
это ТОЖЕ механическая работа вы, как минимум, навяжете однократную материализацию (хотя она и так там д.б. однократной) думаю проблема не в том , чтобы просканировать и сгруппировать всю табличку [Execution time: 8767.513 ms ], а в том, что где--то что--то во что--то упирается. варианты -- триггера (в т.ч. констрайнтовые) или локи конкурентов. пока не узнаем -- дальше не ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 11:29 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
Да. Ждем ответа от автора. Пока продолжим: qwwq... вам же ТС отписался, что это займет примерно Execution time: 8767.513 ms ... И это время (8 секунд) будет затрачено на подзапрос для каждой из строк, которых 20 млн. По-моему тормозилово именно здесь (то есть во вложенном подзапросе) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 11:37 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, смелое предположение. зависит от того, умеет ли пж делать not in как антиджойн. и если умеет -- то когда. когда-то в сильно раньшие времена точно не умел. но вода течет. колхозники пашут. трава жухнет. а sun тускнеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 11:52 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq... зависит от того, умеет ли пж делать not in как антиджойн. и если умеет -- то когда. ... Автор уже сообщал, что сдался после трех часов ожидания. По внешним признакам - в конкретной ситуации PG не смог по антидждойну (или не захотел). (Исходный запрос: 20528831 ; ответ автора: 20530078 ) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 12:01 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, и теперь скажите, зачем вы мешаете мне увидеть план урезанного запроса ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 12:05 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwqursido, и теперь скажите, зачем вы мешаете мне увидеть план урезанного запроса ? Подозреваю, что автор честно пытается его получить прямо сейчас. Просто план еще не готов (EXPLANE ANALYZE, да-да. Не какой-нибудь EXPLANE). Проявите терпение. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 12:08 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursidoEXPLANE ANALYZE, да-да. Не какой-нибудь EXPLANEуели но я ожидаю увидеть вклад триггеров. возможно -- напрасно. т.ч. попросит EXPLAINE без ANALYZE -- в вашей власти. но вы, вместо этого, занялись привычным для себя делом ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 12:16 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq2. или за один проход for loop по сортированному набору. (факультативно, тут скорее всего это не интересно) Код: plaintext
примерно так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 12:55 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------- Delete on log_write (cost=9.15..17.18 rows=1 width=6) (actual time=0.167..0.167 rows=0 loops=1) -> Index Scan using lw_table_name on log_write (cost=9.15..17.18 rows=1 width=6) (actual time=0.158..0.158 rows=0 loops=1) Index Cond: ((lw_table_name)::text = 'any_lw_table_name'::text) Filter: (NOT (hashed SubPlan 1)) SubPlan 1 -> HashAggregate (cost=8.58..8.59 rows=1 width=21) (never executed) Group Key: log_write_1.lw_table_name, log_write_1.lw_rec_id -> Index Scan using lw_table_name on log_write log_write_1 (cost=0.56..8.57 rows=1 width=21) (never executed) Index Cond: ((lw_table_name)::text = 'any_lw_table_name'::text) Planning time: 1.120 ms Execution time: 0.526 ms ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 13:45 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k... Index Cond: ((lw_table_name)::text = 'any_lw_table_name'::text) ... Товарищ! Вы явно перегрелись. Сделайте паузу. Вас просили сделать немного (а точнее, очень сильно) другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 13:50 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 13:54 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k, автордля какого-нить существующего 'any_lw_table_name', но не самого частого. думаю литерал 'any_lw_table_name' у вас в значениях lw_table_name отсутствует. найдите какое -нить сущ-ее значение lw_table_name , не самое частое и повторите вывод подставив его значение ВМЕСТО 'any_lw_table_name' в исходный скрипт. (можете для начала опустить словцо ANALYZE ) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 14:43 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 15:23 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, а это без ANALYZE Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 15:26 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k, Таким образом, имеем: 20 млн строк на 30 таблиц (точнее, 32). На одну таблицу должно выходить где-то 600 тыс строк. В приведенном примере задействовано 30 тыс строк. Не самый удачный пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 15:36 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, это как раз относительно средняя таблица они вообще там крайне неравномерно представлены: есть 10-20 шт. а есть 2.5 млн. и больше ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 17:48 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, а можно вопрос: как вы узнали, что таблиц там 32? это правильное число, но я его не озвучивал и в результатах запросов ее не вижу ...или слеп? ткните плиз ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 17:52 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 17:56 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k, покажите план (explain без аналайз) для какой--либо "большой" таблицы. и "для всего" (тоже без аналайз) //есть подозрение и да, я рекомендую подумать на предмет однопроходной 20530998 очистки в автономиях (можно по 10--1000 записей за раз, это несложная вариация). это много проще, чем на пустом месте разворачивать ротацию партиций. хотя и накладнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 18:00 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 19:51 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 19:53 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
Павел Лузанов, спасибо, за тонкий намек )) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 20:00 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwqan2k, и да, я рекомендую подумать на предмет однопроходной 20530998 очистки в автономиях (можно по 10--1000 записей за раз, это несложная вариация). это много проще, чем на пустом месте разворачивать ротацию партиций. хотя и накладнее. вижу что кирилицей, но если честно, не понимаю половины слов (( - что такое автономия? - вариация? - ротация? - партиция? блин, 27 лет занимаюсь базами... как я отстал... где я был (( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 20:07 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k- что такое автономия? - вариация? - ротация? - партиция? блин, 27 лет занимаюсь базами... как я отстал... где я был (( автономия -- автономная транзакция. существует в оракле. не существует в постгресе. эмулируется в постгресе встроенным "клиентом" -- расширением dblink примеры можно найти тут, поиском. или в интернетах. вплоть до забавных "вариация" -- тут именно вариация. вариация на тему предложенного по ссылке кода добавлением пары переменных, констант и пары--тройки IF--ов. что для вас, с вашим опытом, несложно. ротация и партиция -- это про ручную реализацию некоторых идей, основанных на 1. транзакционности ддл в пж. 2. наследовании в пж, и его использовании для партицирования (разбиения таблички на отдельные части по какому--либо признаку). т.е. "багровый закат" -- сиречь закат солнца баграми, в поте лица своего. вам оно, даже с вашим опытом, видимо не надо. это для гиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 20:42 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2kqwwq, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
C2H5OH на пару... тщательнее ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 20:46 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2kqwwq, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
аналогично, коллега ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 20:47 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, Покритикуйте вот такой сценарий: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 22:26 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, В пункте 4 опечатка. Читать как: Код: sql 1. 2. 3. 4.
В предложении DISTINCT ON 2 (два) поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 22:31 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, а, что ? вы его где-то уже описали 20530287 с тех пор он , по моему , не изменился я неправ ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 23:09 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
попутал. тут 20529102 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 23:10 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, Примерно так. Только еще наследование задействовано. Чтобы не было влияния вновь вставляемых значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2017, 23:31 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
в силу 20530287 индекс не нужен. кроме того на моей памяти "ДИСТИНКТ ОН" не умел пользоваться инд-м. (который тут не нужен), даже когда было нужно т.е. при >>10/1. если планер тут починили -- поправьте меня. это технически идеологически -- всё плохо. если уж заниматься хенджобом, то всё должно быть как настоящее -- записи не должны раздвояйца ни в один момент. наследование от непустой таблички вообще ошибка -- т.к. её аналайз может залочить вам ддл на наследниках. и т.д. и если бы борьба шла за сжатие 1/10--1/100 и более. За 1/4 вряд ли имеет смысл. написать один джоб с журналом и автономиями -- и ладушки. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2017, 11:01 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2017, 13:10 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
All, В итоге сделал так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
Не мгновенно, но отработало и не зависло. Спасибо всем, кто пытался мне помочь. Возможно этот пост поможет еще кому-нибудь. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2017, 16:20 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2kAll, В итоге сделал так: для человека, 27 лет кодировавшего базульки, вы слишком сильно зациклены на динамическом SQL. почему бы не попробовать избавиться от дуной привычке на 28-м году недопонимания ? зачем вам 5 лямов лишних синтакс--анализов ? неужто так не сработает : Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2017, 16:53 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwq, Сплошное разочарование. Зачем выбирать данные дважды? (Один раз выбирать max(id), второй раз - непосредственно строку) Уже же был пример, который выбирает за один запрос (пример с DISTINCT ON). Что мешает создать новую таблицу по-честному? Затем удалить старую, а новую подложить на ее место? Зачем гонять данные туда-сюда? Что произошло с индексами в результате перекидывания данных лопатой преобразований данных? - Они распухли. Ваш КО. Что дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2017, 17:01 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
+5коп. Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2017, 17:04 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursidoЧто мешает создать новую таблицу по-честному? Затем удалить старую, а новую подложить на ее место? Могут помешать зависимые объекты, например представления. Также нужно восстанавливать права доступа к таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2017, 17:22 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursidoqwwq, Сплошное разочарование. это не ко мне. автор текста -- сам ТС. я всего лишь обратил его внимание на лишних 5лямов случаев синтекс--анализа (и планирования). но он 27 лет кодит базульки. т.ч. вряд ли прислушается ко мне, к вам, или к павлу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2017, 17:35 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
Павел Лузанов+5коп. Код: plaintext
Код: plaintext
про Код: plaintext
про Код: plaintext
(а транкейт уж точно потеряет новые, не попавшие в обработку, записи) вот почему для использования truncate-а лучше рисовать полноценную ротацию 2-х партиций. (но это недоступно ТС). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2017, 17:45 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursidoqwwq, Сплошное разочарование. Зачем выбирать данные дважды? (Один раз выбирать max(id), второй раз - непосредственно строку) Уже же был пример, который выбирает за один запрос (пример с DISTINCT ON). Что мешает создать новую таблицу по-честному? Затем удалить старую, а новую подложить на ее место? Зачем гонять данные туда-сюда? Что произошло с индексами в результате перекидывания данных лопатой преобразований данных? - Они распухли. Ваш КО. Что дальше? Коллеги, спасибо за активное желание помочь, однако я опять не понимаю половины: - Нередко два запроса получается быстрее чем один с чем-нибудь вроде DISTINCT, впрочем это я согласен - нужно проверить. - "Ваш КО" - КО это что? как расшифровать? - Почему распухли индексы? Я как раз именно так сделал, как сделал, чтобы не переиндексировать отдельно новую таблицу. - ТС - еще одно сокращение-загадка (( ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2017, 20:15 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
Павел Лузанов+5коп. Код: plaintext
Код: plaintext
разница существенна? в чем она? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2017, 20:18 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
Павел ЛузановursidoЧто мешает создать новую таблицу по-честному? Затем удалить старую, а новую подложить на ее место? Могут помешать зависимые объекты, например представления. Также нужно восстанавливать права доступа к таблице. В данном случае этого ничего нет, но есть индексы и их очень долго строить, поэтому сделал так. Не уверен, что это лучшее решение - просто мне показалось так проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2017, 20:21 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2kПавел Лузанов+5коп. Код: plaintext
Код: plaintext
разница существенна? в чем она?для человека , 27 лет занимающегося базами вы чересчур молодо выглядите https://postgrespro.ru/docs/postgrespro/9.5/sql-truncate ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2017, 20:23 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwqПавел Лузанов+5коп. Код: plaintext
Код: plaintext
про Код: plaintext
про Код: plaintext
(а транкейт уж точно потеряет новые, не попавшие в обработку, записи) вот почему для использования truncate-а лучше рисовать полноценную ротацию 2-х партиций. (но это недоступно ТС). Могу это проделать в монопольном режиме, без оглядки на действия других - их нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2017, 20:24 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
qwwqan2kAll, В итоге сделал так: для человека, 27 лет кодировавшего базульки, вы слишком сильно зациклены на динамическом SQL. почему бы не попробовать избавиться от дуной привычке на 28-м году недопонимания ? зачем вам 5 лямов лишних синтакс--анализов ? неужто так не сработает : Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
Уважаемый qwwq! Я как и все стараюсь избегать динамических запросов, но кривые ручки - сходу не получилось, а ваш вариант заработал - респект! Про мои 27 лет за консолью: вы не успеете оглянуться, как сможете и о себе сказать то же самое - никакого снобизма - только грусть. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2017, 20:44 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k, по мелочи: Код: sql 1. 2.
можно: Код: sql 1.
а чтобы не злоупотреблять монополией для задач обслуживания -- посмотрите в сторону dblink. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2017, 20:56 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
Уважаемый qwwq, вы больше всех потратили времени на то, чтобы помочь мне с моей маленькой проблемой. Позвольте выразить Вам искреннюю благодарность. Конечно большое спасибо и Павлу и другим людям, которые приняли в этом участие. Однако, это была только мелкая часть моих забот. На всю задачу в целом можно взглянуть здесь: https://er.mgimo.ru/node/4297892 Прошу уважаемый All посоветовать: открыть ли мне на этом сайте новую ветку и/или где-то еще? В ближайшее время хочу выложить исходники на GitHub, возможно народ поддержит. Впрочем будут, видимо, и ссылки на аналогичные проекты и критика предлагаемого - все приму с благодарностью. Хочу сказать еще одну банальность: то что мы делаем в своем ВУЗе может оказаться полезным и в других местах - кажется инструмент может получится довольно универсальным, если повезет и образуется сильное комьюнити. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2017, 21:19 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
an2k, Систем обмена данными - как грязи. Путь будет еще одна. Все равно никто не заметит. Есть целый стандарт . Причем он появился раньше чем Вас заперли в подвале чем Вы сели за консоль. Прямо сейчас есть туева хуча коммерческих реализаций обмена данными: начиная от 1C и заканчивая различными модными API. А так да, пишите. Нам очень интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2017, 22:09 |
|
Postgres не хочет юзать память
|
|||
---|---|---|---|
#18+
ursido, Стандарты - это просто слова. UNECE EDIFACT подталкивает к XML - мы с него начинали года три назад, казалось неэффективно - слишком медленно. Это для сервисов годится, а мы он них отказались в пользу центральной точки обмена. Лет 10 назад у нас купили Вэбсферу от IBM за бешеные деньги - ниасилили и положили на полку. Нашей группе повезло меньше - когда мы начали денег уже не стало, а обмен нужен - решили строить сами. Вы упомянули еще о различных API - порекомендуете что-то конкретное? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 09:11 |
|
|
start [/forum/topic.php?all=1&fid=53&tid=1996476]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 491ms |
0 / 0 |