#php #mysql #sql #database #database-design
#php #mysql #sql #База данных #база данных-дизайн
Вопрос:
Я создаю приложение, которое каждую неделю хранит новую информацию, состоящую из целых чисел размером 10 X 12 для миллионов уникальных URL-адресов. Мне нужно извлечь информацию за определенную неделю или за определенный диапазон недель для данного URL. Я собираюсь использовать MySQL в качестве базы данных.
Совет: Для упрощения группировка URL-адресов по доменам уменьшит объем данных, обрабатываемых при запросе.
Мне нужен совет по структурированию базы данных для быстрого выполнения запросов, которая требует оптимальной вычислительной мощности и дискового пространства.
Ответ №1:
Поскольку никто еще не попробовал, вот мой совет.
Для начала проигнорируйте «быстрое выполнение запросов, требующее оптимальной вычислительной мощности и дискового пространства». Поиск этого в начале никуда вас не приведет. Спроектируйте и создайте разумную базу данных, соответствующую вашим функциональным требованиям. Загружайте случайные данные, пока не получите примерно ожидаемый объем. Запускайте запросы к ней и определяйте их время.
Если ваша база данных нормализована должным образом, занимаемое ею дисковое пространство также будет приблизительно сведено к минимуму. Запросы могут быть медленными: используйте планы выполнения, чтобы понять, почему они медленные, и добавьте индексы, чтобы повысить их производительность. Как только вы получите приемлемую производительность, вы на месте.
Суть в стандартной поговорке: не оптимизируйте, пока не узнаете, что у вас есть проблема, и не измерите ее.
Комментарии:
1. Спасибо за ваш комментарий, Саймон. Я воспользуюсь вашим советом. Я сначала запрограммирую его, а затем измерю и оптимизирую его позже во время тестирования с тестовыми данными 🙂