Уже есть несколько хороших ответов (например, С. Лотт), однако я подумал, что мне следует добавить еще несколько вещей:
Не используйте базу данных для логических операций
Я понимаю привлекательность Order By
или SQL Procedures
, однако у вас есть только одна база данных, но у вас есть несколько серверов django, позвольте серверам справиться с этим, если вы можете.
Конечно, если вы хотите, чтобы только последние десять строк соответствовали определенному критерию (дате), то обязательно сделайте это точно в запросе;) Просто убедитесь, что вы не перегружаете базу данных операциями, которые могут быть обработаны в другом месте. .
Добавьте больше оборудования к проблеме
MySQL и Oracle достаточно хорошо масштабируются на оборудовании, если у вас есть небольшая проблема с производительностью, вы можете начать с добавления дополнительного оборудования.
Разделить вашу базу данных
Я знаю, что для отношений и всего, что вам нужно для управления несколькими таблицами вместе, однако, если у вас когда-либо возникнет проблема с нагрузкой, попробуйте сгруппировать ваши таблицы, например, если у вас есть группа таблиц "истории", возможно, это может работать без других и находиться на отдельном сервере.
Обдумайте настройку и следите за вашими запросами / индексом
Вам понадобятся советы экспертов, но по опыту я могу сказать, что даже один плохо настроенный запрос может привести к хаосу ... и это довольно сложно выяснить. Вы можете рассмотреть Спросите Тома на сайте в качестве примера диагностики / тонкой настройки.
Не выбирайте архитектуру таблиц в отдельности, но учитывайте запросы
Иерархические запросы и множественные объединения могут быть очень дорогостоящими. Вам не нужно создавать полностью нормализованную схему отношений, и вы можете рассмотреть некоторую денормализацию, чтобы лучше соответствовать типу запросов, с которыми столкнется база данных.
Просто пара мыслей:)