У меня есть сервер Linux с 64 ГБ оперативной памяти и процессором 2,2 ГГц (14 ядер). Каждые 4 часа некоторые данные (~ 1 ГБ) выбираются из первичной базы данных (mysql), некоторые операции выполняются с ней, а затем несколько вторичных баз данных усекаются и обновляются с этими новыми данными (около миллиона строк). В настоящее время этот процесс выполняется с помощью сценария node.js и занимает около 45 минут.
Я видел, что во время этой операции только одно ядро используется до 100%, а остальные 13 ядер бездействуют.
В качестве эксперимента я хочу сделать очень оптимизированный двоичный файл в C только для этой цели (главным образом, чтобы научить себя некоторым продвинутым C концепциям), который использует все ядра и максимально возможную мощность ЦП при использовании нескольких потоков. и параллельная обработка до сока MySQL до его емкости и выполнение всей этой операции за минимально возможное время.
Каков наилучший подход к этому в C? Какие концепции мне нужно изучить, чтобы сделать это наиболее эффективно и с безопасностью памяти?
У меня есть хороший gr asp C / Python / Javascript / Databases / Shell / Unix и 10-летний опыт работы в качестве разработчик, но только обычный материал. Веб-приложения / API / CRUD et c. Хотите немного углубиться в изучение и изучить некоторые передовые концепции.
Любые предложения приветствуются. Спасибо.