Я думаю, что первое правило заключается в том, что одна база данных не может делать все. Его нельзя оптимизировать как для операций чтения, так и для записи. Таким образом, вы можете иметь несколько баз данных, каждая с определенной целью.
Оперативная база данных
Для актуального ежедневного обновления, чтения, записи или приложений к системе, к которой имеют доступ конечные пользователи. Это должно быть в 3NF , однако вы можете разбить NF и денормализовать некоторые поля, если необходимо улучшить медленные запросы
База данных отчетов
Эта база данных (хранилище данных) оптимизирована для операций только чтения. Это будет деноморализовано и часто как схема звезды.
Промежуточная база данных
Если вам нужно несколько приложений для доступа к вашим данным. Вы можете создать промежуточную базу данных, в которой есть копия всех данных в вашей операционной БД. Основное отличие состоит в том, что в этой БД не должно быть никаких ИНДЕКСОВ или множества ограничений, триггеров и т. Д., Поскольку все они замедляют операции ВСТАВКИ (записи). Эта БД просто используется как временное хранилище для БЫСТРОГО извлечения всех производственных данных, но никакое другое приложение не должно работать напрямую с этой БД. Другие приложения должны извлекать из них необходимые данные и помещать их в свой собственный формат. Например, скопируйте данные из промежуточного этапа в хранилище отчетов / данных. Его основное назначение - снизить нагрузку на оперативную базу данных.
Таким образом, главное для вашей операционной базы данных вы должны узнать о Нормализация базы данных , и если вы хотите выполнить много вставок, обратите внимание на то, какие триггеры и индексы у вас есть на ваших полях, поскольку они замедляют вставки , Также обратите внимание на базы данных NOSQL для потенциально еще лучшей производительности.