SQL: Каков наилучший способ отображения (почти) активности сайта в реальном времени за определенный промежуток времени?т.е. "Сообщения, отправленные в последний час" - PullRequest
0 голосов
/ 13 апреля 2011

Цель состоит в том, чтобы обновлять пользовательский интерфейс как можно чаще, но производительность является проблемой, и попадания в базу данных должны быть сведены к минимуму.

Я использовал индексированные представления, чтобы обновлять статистику по элементам, дляопределенный интервал времени, однако это не применимо, так как дата недетерминирована.

Другие варианты:

  • Запускать задание каждые X минут, чтобы собратьstats.

  • Добавить триггеры для ответа на вставки.

  • Запускать хранимую процедуру каждый раз / с определенной частотой.(Большинство соответствующих таблиц уже проиндексированы на соответствующую дату)

Существуют ли другие варианты, которые я не определил, и есть ли «предпочтительные» решения для такого рода проблем?Как сравнить параметры задания / триггера / SP?

1 Ответ

0 голосов
/ 13 апреля 2011

Если вы используете «фиксированные» интервалы, вы можете использовать справочную таблицу, в которой хранится ваш ключ кластеризованного индекса.Предполагая, что ключом является INT Identity, вы можете создать такую ​​таблицу:

Time Datetime,
Qtr_Hour int,
Half_Hour int,
Hour int 

Запустить запрос, который выполнит:

SELECT COUNT(*)
FROM MyTable
WHERE ClusterKey > (SELECT Qtr_Hour
                    FROM LookupTable)

Затем обновите таблицу с новым соответствующим значением для MAX(ClusterKey).

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

...