Проблема связана со скоростью записи компьютера (10 * 32-битной машины) и производительностью запроса postgresql. Я объясню сценарий подробно.
У меня есть данные около 80 Гб (вместес соответствующими индексами базы данных).Я пытаюсь прочитать его из базы данных Postgresql и записать в HDF5 с помощью Pytables.У меня есть 1 таблица и 5 переменных массивов в одном файле hdf5. Реализация Hdf5 не многопоточная или не включена для симметричной мультиобработки. Я арендовал около 10 компьютеровв течение дня и пытаясь записать их в порядке, чтобы ускорить мою обработку данных.
Что касается таблицы postgresql, то общий размер записи составляет 140 миллионов, и у меня есть 5 таблиц, ссылающихся на первичный-внешний ключ.не использует соединения, так как они не масштабируются
Так что для одного поиска я делаю поиск 6 без объединений и записываю их в формат hdf5.Для каждого поиска я делаю 6 вставок в каждую таблицу и соответствующие ей массивы.
Запросы действительно просты
select * from x.train where tr_id=1 (primary key & indexed)
select q_t from x.qt where q_id=2 (non-primary key but indexed)
(аналогично пяти запросам)
Каждый компьютерзаписывает два файла hdf5 и, следовательно, общее количество составляет около 20 файлов.
Некоторые вычисления и статистика:
Total number of records : 14,37,00,000
Total number of records per file : 143700000/20 =71,85,000
The total number of records in each file : 71,85,000 * 5 = 3,59,25,000
Текущая конфигурация базы данных Postgresql:
Моя текущая машина: 8 ГБОперативная память с процессором i7 2-го поколения.
Я внес следующие изменения в файл конфигурации postgresql: shared_buffers: 2 ГБ, эффективный_кэш-размер: 4 ГБ
Примечание о текущей производительности:
Iзапустили его около десять часов и производительность выглядит следующим образом: Общее количество записей, записанных для каждого файла, составляет около 6,21 000 * 5 = 31,05 000
Горлышко бутылки заключается в том, что я могу арендовать его только на 10 часов в день (на ночь), и если он будет обрабатывать с такой скоростью, это займет около 11 дней , что слишком высоко для моих экспериментов..
Пожалуйста, предложите мне, как улучшить.Вопросы: 1. Должен ли я использовать симметричную многопроцессорную обработку на этих рабочих столах (у нее 2 ядра и около 2 ГБ ОЗУ). В таком случае, что предлагается или предпочтительнее?2. Если я изменю свой файл конфигурации postgresql и увеличу объем оперативной памяти, это улучшит мой процесс.3. Должен ли я использовать многопоточность. В этом случае любые ссылки или указатели будут очень полезны
Спасибо, Sree aurovindh V