Улей, время, необходимое для многораздельной и неразделенной базы данных - PullRequest
0 голосов
/ 26 ноября 2018

Итак, у меня есть 2 таблицы для набора данных, которые представляют собой таблицу с разделами и таблицы с разделами.

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

Почему это?

1 Ответ

0 голосов
/ 26 ноября 2018

Поскольку это строго теоретический вопрос, вы получите строго теоретический ответ.Разделение приводит к тому, что таблица разбивается на более мелкие таблицы с одинаковой структурой.Это заставляет ваши SELECT запросы выполняться в разных таблицах (фактически SELECT * FROM table_part1 UNION ALL table_part2 против SELECT * FROM table).

Общее время будет одинаковым, поскольку вы читаете одинаковые объемы данных.Вы можете поместить table_part1 и table_part2 на разные физические диски, что, вероятно, ускорит чтение, поскольку у вас будет меньше времени ожидания ввода-вывода.Но в целом для таблиц, разделенных в пределах одного табличного пространства, вы увидите сопоставимое время для обоих запросов (разделенных и неразделенных).

Что касается ЦП, мы можем предположить, что существует некоторая оптимизация, которая облегчает работу с меньшими таблицами,Возможно, что секционированные таблицы просто лучше помещаются в памяти (включая кэш-память ЦП).В этом случае возможно, что результаты будут зависеть от размера исходной и секционированной таблиц - для сверхбольших таблиц с обеих сторон вы можете в любом случае получить одинаковую нагрузку на процессор.

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