Я запускаю скрипт Python, который обрабатывает данные временных рядов для ряда различных метрик, а затем записывает результаты в базу данных Postgres.
Временные ряды предполагают 40 эпох, сохраненных как real[40]
столбец массива в базе данных.
При записи выходных данных для всех 40 эпох в таблицу за один снимок (пакетное обновление по всем строкам) все казалось работающим нормально.т.е.
UPDATE my_table SET
arr_col_1 = {1, 2, 3, ... 40},
arr_col_2 = {1, 2, 3, ...40},
...
arr_col_90 = {1, 2, 3, ...40};
Однако итеративная запись результатов соответствующих эпох в каждую позицию в массиве, похоже, занимает все свободное место на жестком диске, например
UPDATE my_table SET
arr_col_1[1] = 1,
arr_col_2[1] = 1,
...
arr_col_90[1] = 1;
UPDATE my_table SET
arr_col_1[2] = 2,
arr_col_2[2] = 2,
...
arr_col_90[2] = 2;
-- repeat x 38 more times
ПричинаИтеративная стратегия заключается в размещении большего количества строк, для которых результаты за 40 эпох не помещаются в память одновременно.
Насколько мне известно, UPDATE
запросы будут удалять и перезаписывать данные строкв определенных ситуациях, но мне неясно, когда это произойдет и как это может быть связано с массивами.Есть ли способ итеративно обновлять массивы в большом количестве строк, не приводя к переполнению базы данных?