Это работает для меня до сих пор:
- Определить набор, если запросы, которые являются производительность критически.
- Создайте базу данных, чтобы СУБД могла использовать быстрые планы выполнения для запросов, указанных выше.
- Заполните базу данных репрезентативными объемами тестовых данных и убедитесь, что планы выполнения запросов, ожидаемые выше, действительно используются (и производительность каждого отдельного запроса является удовлетворительной).
- Контролируйте весь «вертикальный стек» вашего программного обеспечения. К настоящему времени не должно быть слишком много неприятных сюрпризов.
Как вы можете видеть, дизайн базы данных не просто отвечает требованиям бизнеса. Действительно, понимание того, как клиенты намерены получить доступ к данным, является неотъемлемой частью процесса проектирования.
Другими словами, то, что традиционно является «логическим дизайном», недостаточно - между логическим и физическим дизайном должна быть «улица с двусторонним движением».
Есть ли хороший способ увидеть, как этот дизайн будет работать, когда в таблице подачей будет 10 000 пользователей и 50.000.000 записей?
Это предложение не содержит достаточной информации для ответа.
Сначала скажите, как вы собираетесь получать доступ к данным, а затем, возможно, мы сможем помочь вам (заново) создать базу данных для эффективной поддержки этого шаблона доступа.
Например, если «загрузка страницы» имеет решающее значение для пользовательского опыта (который обычно является), составьте список запросов, которые обычно выполняются в ходе этого процесса.
Что включает в себя «физические» методы, такие как индексирование, кластеризация, перегородки и т.д., но также может включать в себя некоторые аспекты, которые традиционно, хотя как «логического» дизайна, такие как дизайн ключей и отношений , Если вы понимаете базовые структуры данных, которые использует типичная СУБД, вы сможете прогнозировать последствия производительности большинства ваших проектных решений. Use The Index, Luke! - отличное введение на эту тему.
Построить; измерять его; ** затем ** настроить его. –
Это означает, что этот дизайн должен быть выпущен. Но что, если я получу 50.000.000 действий, и я узнаю, что пользователи не могут открыть страницу из-за медленной базы данных. Я должен быть уверен, что этот проект для работы будет работать. – 1110
Какое у вас оборудование? Вы используете SSD? Каковы ваши показатели? Имеете/Можете ли вы сконструировать связанные с схемой представления для кэширования агрегатов? Каковы ваши FK? Я только начал задавать соответствующие вопросы, необходимые для решения вашего вопроса. ** Просто создайте дизайн 3NF ** и рассмотрите проблемы производительности, когда у вас действительно есть проблема. –