Я новичок в БД, впервые исследующий хранилище данных. Я завершил процесс копирования большого объема данных из одной из наших производственных систем (MS SQL Server 2012) в наше хранилище данных (MySQL).
Проблема, с которой я столкнулся, заключалась в том, что программные / аппаратные ресурсы, которые у меня были доступны для процесса ETL, не были достаточно надежными для копирования всех данных в моих больших таблицах с помощью одного запроса (программе не хватало памяти и происходил сбой) , Чтобы обойти это, я разбил эти таблицы на 12 частей, добавив предложение where с помощью оператора modulo для идентификатора таблицы, поскольку это было быстро и легко написать:
SELECT * FROM table WHERE table.tableID % 12 = 0;
SELECT * FROM table WHERE table.tableID % 12 = 1;
SELECT * FROM table WHERE table.tableID % 12 = 2;
etc.
Теперь мне интересно, повлияет ли это на производительность моего хранилища данных по сравнению с исходной базой данных. В старой базе данных данные были вставлены примерно в хронологическом порядке, и, очевидно, это не относится к новому хранилищу данных.
Я не знаю достаточно о том, как движки БД на самом деле хранят данные, чтобы знать, если это проблема. У меня все те же индексы в хранилище данных, что и в исходной таблице, но я не знаю, будут ли механизмы БД на самом деле переставлять данные в памяти в соответствии с индексом, чтобы ускорить чтение.
Попал ли я в беду, копируя и вставляя данные таким образом?