Требуются ли хранимые процедуры для больших наборов данных? - PullRequest
5 голосов
/ 03 февраля 2009

Я только начал свою первую работу по разработке для компании разумного размера, которая должна управлять большим количеством данных. Средняя база данных составляет 6 ГБ (из того, что я видел до сих пор). Одной из работ является отчетность. Как это делается в настоящее время -

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

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

Я вообще не большой поклонник хранимых процедур. Но люди, с которыми я говорил, настаивают на том, что хранимые процедуры - единственный вариант, так как запросы непосредственно к данным через язык программирования невероятно медленны (думаете, 30 минут?). Безопасность также является проблемой.

Итак, мой вопрос - требуются ли хранимые процедуры, когда у вас очень большой набор данных? Действительно ли запросы так долго обрабатываются для такого большого объема данных, или есть проблема с серверами БД или с тем, как данные расположены (и проиндексированы?). У меня такое ощущение, что что-то не так.

Ответы [ 11 ]

0 голосов
/ 03 февраля 2009

Более быстрый способ создания отчетов - просто прочитать все данные в память (требуется 64-битная ОС) и просто пройтись по объектам. Это, конечно, ограничено размером оперативной памяти (доступной 32 ГБ) и отчетами, где вы попали в большую часть базы данных. Не нужно прилагать усилия для небольших отчетов.

В старые времена я мог запускать отчет, запрашивая более 8 миллионов объектов за 1,5 секунды. Это было примерно в гигабайтах оперативной памяти на 3 ГГц процессоре Pentium 4. 64-битная скорость должна быть примерно в два раза медленнее, но это компенсируется более быстрыми процессорами.

...