Разделение или отдельная таблица - PullRequest
1 голос
/ 29 октября 2009

Я проектирую базу данных для системы управления автопарком.

Я буду получать n количество записей каждые 3 секунды. Очевидно, что в моей таблице будут миллионы записей, где я собираюсь хранить текущую информацию о транспортном средстве в таблице current_location. Здесь производительность является большой проблемой.

Чтобы решить эту проблему, я получил следующие предложения:

  1. Создайте отдельную таблицу для каждого транспортного средства. Здесь таблица будет создана во время выполнения, как только я нажму на создание новой таблицы. И все данные, относящиеся к конкретной таблице, будут вставлены и извлечены из этой конкретной таблицы.

  2. Перейти на раздел.


Пожалуйста, ответьте на следующие вопросы об этих решениях.

  1. В чем разница между этими двумя?

  2. Что лучше и почему?

  3. В какой момент количество строк в таблицах вызовет проблемы с производительностью?

  4. Есть ли другие решения?

Теперь --- если я пойду на раздел диапазона в SQL Server 2008, что мне делать,

  1. раздел с использованием varchar (20).

  2. Я планирую сделать раздел на основе номера автомобиля. например, MH30 q 1234. Здесь В транспортном средстве нет. допустим, mh30 q 1234 - только 30 & q изменится… поэтому мой вопрос: КАК ДОЛЖЕН ИДТИ. значит как надо написать функцию разбиения.

*** 1-й этот вопрос был задан для моего sql..now для сервера sql ******** извините, ребята, теперь я перешел с моего sql на sql server ***** с тем же вопросом

Ответы [ 4 ]

2 голосов
/ 29 октября 2009

обязательно используйте разбиение. зачем идти на все хлопоты, чтобы выяснить, какую таблицу использовать для ответа на вопрос, когда mysql сделает это за вас? и удачи вам найти текущее местоположение всех ваших грузовиков, если вы не используете разделы!

  1. секционирование дает вам преимущества в производительности нескольких таблиц, но с автоматическим сокращением (выбор только таблиц, необходимых для ответа на запрос).

  2. ничто не является "лучшим". вопрос: что лучше для вашей проблемы?

  3. на это невозможно ответить. вам просто нужно будет отслеживать вашу систему на предмет проблем с производительностью и корректировать настройки сервера или масштабировать по мере необходимости.

  4. по крайней мере, в том, что касается mysql, нет ничего лучше разделения!

1 голос
/ 02 ноября 2009

Не беспокойтесь о разбиении на 28 800 строк в день.

У нас нет (пока) более 5 миллионов в день. («Пока» означает, что у нас нет бизнес-информации о том, какую политику хранения данных они хотят)

0 голосов
/ 29 июня 2010

Одна вещь, на которую я хочу обратить внимание, состоит в том, что иметь одну таблицу (которую вы сможете разделить позже, когда вам нужно) будет гораздо проще поддерживать как в базе данных, так и с точки зрения запроса данных.

0 голосов
/ 30 октября 2009

Должна быть очень небольшая разница в производительности между созданием отдельной таблицы для каждого транспортного средства и указанием идентификатора транспортного средства в первом поле первичного ключа. Вы получаете ту же группировку на диске в любом случае, и у mysql не должно возникнуть проблем с миллионами строк в таблице.

Разделы полезны, только если на вашем компьютере установлено несколько дисков и вы хотите распределить нагрузку по дискам.

Так что я думаю, что мой ответ не делай ни того, ни другого. Разработка этого априори кажется излишней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...