Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1759
Добрый день.
Перерыл MSDN и чуть-чуть интернета, но не нашел как включенный параметр ALLOW_SNAPSHOT_ISOLATION повлияет на производительность БД(сервера). При этом параметр READ_COMMITED_SNAPSHOT будет отключен т.е. версионированности строк не будет для READ COMMITED. В MSDN масса инфо про READ_COMMITED_SNAPSHOT, но конкретно про поведение ALLOW_SNAPSHOT_ISOLATION нет.
В какой момент будут создаваться снимки, непосредственно перед началом транзакции или при каждом изменении таблиц (если это, то будет ли ощутимая(любая) задержка производительности)?
Как будет расти tempdb?
На что еще это может повлиять?

P.S. Данный уровень транзакции предполагается использовать только для отчетов.

Буду признателен, если поделитесь информацией или ссылками, где можно узнать ответы на вопросы.
10 дек 12, 14:52    [13606887]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
https://www.sql.ru/forum/actualthread.aspx?tid=989340
10 дек 12, 15:36    [13607328]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
https://www.sql.ru/forum/afsearch.aspx?s=snapshot&submit=%CD%E0%E9%F2%E8&bid=1
10 дек 12, 15:37    [13607337]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1759
К сожалению там нет ответов на поставленные вопросы. Все равно упоминается, что READ_COMMITED_SNAPSHOT будет включен. У меня же он будет отключен.
10 дек 12, 15:43    [13607391]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Choosing Row Versioning-based Isolation Levels
10 дек 12, 16:12    [13607723]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1759
Меня интересует не как она работает, а какую нагрузку дает на производительность.
Загрузка процессора, потребление памяти, скушивание свободного места и т.п.

Мне надо убедить, что перевод трудоемких (в дальнейшем всех) отчетов на транзакцию снапшотом не повлияет на производительность. Собственно меня интересует именно эта информация.
10 дек 12, 16:14    [13607750]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1759
invm
Choosing Row Versioning-based Isolation Levels

Costs of Row Versioning-based Isolation Levels - Я почему то считаю, что это относится к READ_COMMITED_SNAPSHOT.
Или я не прав?
10 дек 12, 16:21    [13607812]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
Гость333
Member

Откуда:
Сообщений: 3683
X-Cite
invm
Choosing Row Versioning-based Isolation Levels

Costs of Row Versioning-based Isolation Levels - Я почему то считаю, что это относится к READ_COMMITED_SNAPSHOT.
Или я не прав?

Это относится и к ALLOW_SNAPSHOT_ISOLATION. Не очень понятно, почему вы решили, что только к READ_COMMITED_SNAPSHOT.
10 дек 12, 16:30    [13607953]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1759
Гость333
X-Cite
пропущено...

Costs of Row Versioning-based Isolation Levels - Я почему то считаю, что это относится к READ_COMMITED_SNAPSHOT.
Или я не прав?

Это относится и к ALLOW_SNAPSHOT_ISOLATION. Не очень понятно, почему вы решили, что только к READ_COMMITED_SNAPSHOT.


Я истрактовал поведение READ_COMMITED_SNAPSHOT как создание версий строк при ВСЕХ операциях INSERT, UPDATE.
А поведение ALLOW_SNAPSHOT_ISOLATION без READ_COMMITED_SNAPSHOT как создание снимка данных в момент начала транзакции или в момент первого чтения данных. При этом все остальные транзакции работают в прежнем режиме и не создают дополнительных нагрузок. (не увеличивают дополнительно TempDB и не кушают лишнего времени).

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

Основная цель - при создании отчета получить данные, которые не будут блокированы другими транзакциями, но при этом не будут грязными или фантомными, и при этом сам не будет никого блокировать.
10 дек 12, 16:43    [13608075]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
SNAPSHOT_ISOLATION обеспечивает согласованность данных на момент начала транзакции.
READ_COMMITED_SNAPSHOT обеспечивает согласованность данных на момент начала инструкции.

Разницу ощущаете?
10 дек 12, 16:46    [13608100]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1759
invm
SNAPSHOT_ISOLATION обеспечивает согласованность данных на момент начала транзакции.
READ_COMMITED_SNAPSHOT обеспечивает согласованность данных на момент начала инструкции.

Разницу ощущаете?

Да. Баловался с ними. Кстати SNAPSHOT_ISOLATION без использования READ_COMMITED_SNAPSHOT не совсем до начала транзакции, а до начала первого упоминания инструкции.

Скрипт 1
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
BEGIN TRAN
WAITFOR DELAY '00:00:10'
SELECT * FROM MyTemp mt
COMMIT TRAN

Скрипт 2 - запускается сразу после Скрипт 1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
BEGIN TRAN
UPDATE MyTemp
SET
	Id = 100
WHERE Id = 1
COMMIT TRAN

То Скрипт 1 выведет данные, где вместо 1 будет 100. Хотя на момент начала транзакции там было 1.
Под началом транзакции я понимаю BEGIN TRAN

В итоге при включенном ALLOW_SNAPSHOT_ISOLATION и отключенном READ_COMMITED_SNAPSHOT будут ли остальные транзакции с уровнем изоляции READ COMMITED увеличивать tempdb и замедлять работу системы для поддержания версионированности строк или нет?
10 дек 12, 16:57    [13608195]     Ответить | Цитировать Сообщить модератору
 Re: Производительность БД при включенном параметре ALLOW_SNAPSHOT_ISOLATION  [new]
Гость333
Member

Откуда:
Сообщений: 3683
X-Cite
В итоге при включенном ALLOW_SNAPSHOT_ISOLATION и отключенном READ_COMMITED_SNAPSHOT будут ли остальные транзакции с уровнем изоляции READ COMMITED увеличивать tempdb и замедлять работу системы для поддержания версионированности строк или нет?

Создайте тестовую БД, откройте там несколько транзакций с разными уровнями изоляции и помониторьте создание версий строк при помощи DMV sys.dm_tran_version_store. Думаю, вы получите ответ на ваш вопрос. Если что будет непонятно — обращайтесь :)
10 дек 12, 17:13    [13608348]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить