Вопросы о производительности для Зависимости от Кэша SQL

Например, если исключением является ConstrainViolationException: это исключение сообщает о результате нарушений ограничений

@ExceptionHandler({ ConstraintViolationException.class })
public ResponseEntity<Object> handleConstraintViolation(
  ConstraintViolationException ex, WebRequest request) {
    List<String> errors = new ArrayList<String>();
    for (ConstraintViolation<?> violation : ex.getConstraintViolations()) {
        errors.add(violation.getRootBeanClass().getName() + " " + 
          violation.getPropertyPath() + ": " + violation.getMessage());
    }

    ApiError apiError = 
      new ApiError(HttpStatus.BAD_REQUEST, ex.getLocalizedMessage(), errors);
    return new ResponseEntity<Object>(
      apiError, new HttpHeaders(), apiError.getStatus());
}
21
задан Kjartan Þór Kjartansson 13 March 2009 в 14:00
поделиться

5 ответов

Эта страница, кажется, имеет некоторую хорошую информацию об установке, какую технику использовать хорошо (допустил, что я действительно просто просматривал ее).

1
ответ дан 29 November 2019 в 22:05
поделиться

SQLCacheDependency реализован как индексированное представление, и каждый раз, когда таблица изменяется, этот индекс представлений изменяется. такое большое количество представлений (объектов SQLCacheDependency) в одной и той же таблице означает, что для модификаций достаточно производительности. однако, если у вас есть 1 представление (объект SQLCacheDependency) на таблицу, у вас не должно возникнуть проблем.

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

4
ответ дан 29 November 2019 в 22:05
поделиться

Все, что я могу предоставить, - это неофициальные доказательства производительности, но мы используем SqlCacheDependency как своего рода «решение для обмена сообщениями» для крупного корпоративного приложения, которое обрабатывает порядка десяти тысяч сообщений в час.

Базовая архитектура заключается в том, что наша компания использует Perforce для управления версиями, и у нас есть «служба подписки», которая получает сообщения от триггерного вызова веб-службы, которая вызывается при каждой фиксации p4 и вставляет запись в базу данных SQL. В нашем приложении есть настройка зависимости для отправки уведомлений о подписке для каждого изменения, которое влияет на ветку или путь, который вы отслеживаете.

Производительность в порядке. Время триггера составляет порядка 200 мсек, и у нас никогда не было жалоб на задержку передачи сообщений конечным пользователям.

Как всегда,

1
ответ дан 29 November 2019 в 22:05
поделиться

Вы правы, информации по этому поводу мало, но на этой странице есть фраза, связанная с вашим вопросом http://msdn.microsoft.com/en-us/ library / ms178604% 28VS.80% 29.aspx

«Операции с базой данных, связанные с зависимостью кэша SQL, просты и поэтому не требуют больших затрат на обработку на сервере»

Надеюсь, это поможет вам, хотя ваш вопрос уже староват.

2
ответ дан 29 November 2019 в 22:05
поделиться

Зависимость кэша SQL, использующая механизм опроса, не должна быть нагрузкой на сервер sql или сервер приложений.

Давайте посмотрим, какие шаги необходимы для работы sqlcachedependency, и проанализируем их:

  1. База данных включена для sqlcachedependency.
  2. В таблице указано, что «Сотрудник» включен для sqlcachedependency. (может быть любое количество таблиц)
  3. Web.config обновлен для включения зависимости sqlcache.
  4. Страница, на которой настроена зависимость от кэша sql. Вот и все.

Внутренне:

  • шаг 1. создает таблицу «ASPnet_sqlcachetablesforchangenotification» в базе данных, в которой будет храниться имя таблицы «Сотрудник», для которой включена зависимость sqlcache. а также добавить несколько хранимых процедур.
  • шаг 2. вставляет запись таблицы «Сотрудник» в таблицу «ASPnet_sqlcachetablesforchangenotification». Также создает триггер удаления обновления вставки в этой таблице «Сотрудник».
  • Шаг 3. включает приложение для зависимости от sqlcache, предоставляя строку подключения и время опроса.

всякий раз, когда происходит изменение в таблице «Сотрудник», запускается триггер, который в свою очередь обновляет таблицу «ASPnet_sqlcachetablesforchangenotification». Теперь приложение опрашивает базу данных каждые 5000 мс и проверяет наличие изменений в таблице «ASPnet_sqlcachetablesforchangenotification» . в случае каких-либо изменений соответствующие кеши удаляются из памяти.

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

6
ответ дан 29 November 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: