У меня есть проект клиентского портала (первый из которых я разработал, так что основная передовая практика - это то, что я ищу здесь, ничего необычного) рядом с первым выпуск.Стратегия сохранения обновленных сводных таблиц, стоящих (SQL Server)
Упрощение основных типов записей, используемых в отчетности заключается в следующем:
CREATE TABLE [dbo].[conversions](
[conversion_id] [nvarchar](128) primary key NOT NULL,
[click_id] [int] NULL,
[conversion_date] [datetime] NOT NULL,
[last_updated] [datetime] NULL,
[click_date] [datetime] NULL,
[affiliate_affiliate_id] [int] NOT NULL,
[advertiser_advertiser_id] [int] NOT NULL,
[offer_offer_id] [int] NOT NULL,
[creative_creative_id] [int] NOT NULL,
[conversion_type] [nvarchar](max) NULL)
CREATE TABLE [dbo].[clicks](
[click_id] [int] primary key NOT NULL,
[click_date] [datetime] NOT NULL,
[affiliate_affiliate_id] [int] NOT NULL,
[advertiser_advertiser_id] [int] NOT NULL,
[offer_offer_id] [int] NOT NULL,
[campaign_id] [int] NOT NULL,
[creative_creative_id] [int] NOT NULL,
[ip_address] [nvarchar](max) NULL,
[user_agent] [nvarchar](max) NULL,
[referrer_url] [nvarchar](max) NULL,
[region_region_code] [nvarchar](max) NULL,
[total_clicks] [int] NOT NULL)
Мой конкретный вопрос: учитывая миллионы строк в каждой таблице, какой механизм используется для обслуживания сводных отчетов быстро по запросу, учитывая, что вы знаете все возможные отчеты, которые могут быть запрошены?
Начальная точка, производительность, выполняющая необработанные запросы с данными за 18 месяцев для самого загруженного клиента, дает от 3 до 5 секунд латентности на моей панели инструментов, а наихудший случай - более 10 секунд для сводного отчета с настраиваемый диапазон дат, охватывающий все строки.
Я знаю, что я могу кэшировать их после первого попадания, но хочу получить мгновенную производительность при первом попадании.
Мое ощущение, что это фундаментальный аспект применения такого рода и что в нем есть множество приложений, так что есть уже продуманный метод предварительного расчета таблиц, которые уже сделали группировка и агрегация? Тогда как вы держите их в курсе? Используете ли вы SQL-агент и пользовательские консольные приложения, которые грубо вынуждают вычисления перед началом работы?
Любые общие указатели будут очень полезны ..
Почему бы вам не использовать «многомерные кубы SSAS», которые могут помочь достичь быстрой производительности запроса, поскольку он предварительно вычисляет или агрегирует данные. – praveen
Я мог бы использовать их, если бы знал, кем они были;) Я обязательно сделаю google поиск –