Простой способ решить проблему с производительностью - изменить код для обновления записи только тогда, когда LastAccessed date
старше, чем, скажем, 24 часа. Это значительно сократит количество обновлений на вашем столе.
В целом лучшим подходом может быть нормализация LastAccessed date
к отдельной таблице, чтобы вам не приходилось переписывать всю строку каждый раз, когда вы ее читаете (обычно, когда вы делаете обновление, вся строка переписано где-то ). Кроме того, вы можете сделать эту таблицу обновлений кучей, в которой вы просто продолжаете вставлять новые записи в нее, а не обновляете предыдущую запись, это предотвратит любые блокировки.
Сочетание этих двух факторов поможет решить проблемы с производительностью, если к вашим данным не обращаются очень редко. Это также решит общую проблему «он блокирует всю таблицу».
Для справки ROWVERSION
и TIMESTAMP
не будут делать то, что вы хотите, потому что они не только обновляют только команды UPDATE
, но и не отображают обратно любое значение 'datetime'. Это не рекомендуется, но вы можете выполнить произвольное отображение ROWVERSION to date
, используя таблицу, в которой вы просто пишете GETDATE()
и ROWVERSION
(это работает, поскольку версия строки уникальна для базы данных).