Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 эксклюзивная блокировка таблицы  [new]
с ms sql на Вы
Guest
1. В каком случае в ms sql 2000 может заблокироваться таблица в эксклюзивном режиме при чтении данных (select)? В частности через jdbc.
2. Как можно отследить какие процессы ожидают ресурсов, заблокированных текущим|определенным сеансом?
(Желательно select)
3. У ms sql 2000 есть ли какой-то механизм, с помощью которого я могу включить трассировку текущей|другой сессий, в которой я смогу увидеть выполняющиеся операторы и события ожидания? (есть что-то типа трассировки сессии в oracle?)
24 ноя 09, 15:00    [7971038]     Ответить | Цитировать Сообщить модератору
 Re: эксклюзивная блокировка таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
1. Когда в тексте запроса указать соответствующую блокировку
2. exec sp_who
3. Есть. Так и называется SQL Trace
24 ноя 09, 15:03    [7971058]     Ответить | Цитировать Сообщить модератору
 Re: эксклюзивная блокировка таблицы  [new]
с ms sql на Вы
Guest
Glory,
Спасибо.

Еще один вопрос:
Есть несколько серверов (B,C,D), с которых данные сливаются в один(A) с помощью встроенных механизмов репликации ms sql server. По утверждению людей, которые настраивали данную схему, на сервере A у таблиц, в которые реплицируются данные, не может быть индексов, т.к. индексы не реплицируются (не перестраиваются). Так ли это на самом деле?
25 ноя 09, 07:27    [7973973]     Ответить | Цитировать Сообщить модератору
 Re: эксклюзивная блокировка таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Индексы перестраивает сам сервер, когда меняются данные в таблице
Так что на всех серверах у таблиц могут быть индексы
Другое дело, что добавление нового индекса у таблицы на одном сервере не означает, что он будет создан репликацией и у таблиц на других серверах
Исключение составляет разве что unique constraint, потому что является изменением схемы данных и попадает под репликацию
25 ноя 09, 10:21    [7974526]     Ответить | Цитировать Сообщить модератору
 Re: эксклюзивная блокировка таблицы  [new]
с ms sql на Вы
Guest
Glory
Индексы перестраивает сам сервер, когда меняются данные в таблице
Так что на всех серверах у таблиц могут быть индексы
Другое дело, что добавление нового индекса у таблицы на одном сервере не означает, что он будет создан репликацией и у таблиц на других серверах
Исключение составляет разве что unique constraint, потому что является изменением схемы данных и попадает под репликацию


На серверах A,B,C,D есть таблица tab с 3-мя полями (F1,F2,F3). Сервер B может иметь индекс по таблице tab по полю F1, Сервер С и D может иметь составной индекс по полям F2,F1, а сервера A (сервер куда реплицируется данные таблиц tab серверов B,C,D) может иметь составной индекс F3,F2. И это должно работать в ms sql server 2000. При этом таблицу tab сервера A никто не модифицирует, кроме процессов репликации.
1. Правильно ли я понял?
2. Сам механизм репликации требует ли каких-то блокировок таблицы tab на сервере A в монопольном режиме? Буду благодарен за ссылку на доку по концепциям установки блокировок на объект участвующий в репликации.
25 ноя 09, 12:09    [7975480]     Ответить | Цитировать Сообщить модератору
 Re: эксклюзивная блокировка таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
с ms sql на Вы


На серверах A,B,C,D есть таблица tab с 3-мя полями (F1,F2,F3). Сервер B может иметь индекс по таблице tab по полю F1, Сервер С и D может иметь составной индекс по полям F2,F1, а сервера A (сервер куда реплицируется данные таблиц tab серверов B,C,D) может иметь составной индекс F3,F2. И это должно работать в ms sql server 2000. При этом таблицу tab сервера A никто не модифицирует, кроме процессов репликации.
1. Правильно ли я понял?

Если вы под "иметь индекс" понимаете CREATE INDEX, то да, все правильно

с ms sql на Вы

2. Сам механизм репликации требует ли каких-то блокировок таблицы tab на сервере A в монопольном режиме? Буду благодарен за ссылку на доку по концепциям установки блокировок на объект участвующий в репликации.

А что такое для вас "монопольный режим блокировки" ?
25 ноя 09, 12:15    [7975553]     Ответить | Цитировать Сообщить модератору
 Re: эксклюзивная блокировка таблицы  [new]
с ms sql на Вы
Guest
Glory

Если вы под "иметь индекс" понимаете CREATE INDEX, то да, все правильно

Под этим я понимаю, постоянное наличие объекта (index) у таблицы, доступного сессиям, читающим данные из этой таблицы, которые, в свою очередь, могут использовать индексный доступ к строкам таблицы tab по ключу входящему в индекс.
Glory

А что такое для вас "монопольный режим блокировки" ?

Давайте несколько переделаю вопрос. Необходимо узнать какого уровня блокировки накладываются на объект (таблицу tab) в момент репликации данных. Я предполагаю, что возникает разделяемая блокировка на таблицу и зависимые объекты (индексы) и монопольная блокировка на модифицируем[ую|ые] строк[у|и], если это обновление,удаление (рассматриваем вариант когда у таблицы нет уникальных ключей).
25 ноя 09, 16:04    [7977621]     Ответить | Цитировать Сообщить модератору
 Re: эксклюзивная блокировка таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
с ms sql на Вы
Glory

Если вы под "иметь индекс" понимаете CREATE INDEX, то да, все правильно

Под этим я понимаю, постоянное наличие объекта (index) у таблицы, доступного сессиям, читающим данные из этой таблицы, которые, в свою очередь, могут использовать индексный доступ к строкам таблицы tab по ключу входящему в индекс.

Дело понимаете ли в том, что index и ключ в MSSQL - это разные объекты. Они даже разными командами создаются. И для одной команды репликация невозможна, а для другой - возможна
Так что вы определитесь не с вашим пониманием, а с конкретной командой, которой был создан ваш индекс/ключ

с ms sql на Вы

Glory

А что такое для вас "монопольный режим блокировки" ?

Давайте несколько переделаю вопрос. Необходимо узнать какого уровня блокировки накладываются на объект (таблицу tab) в момент репликации данных. Я предполагаю, что возникает разделяемая блокировка на таблицу и зависимые объекты (индексы) и монопольная блокировка на модифицируем[ую|ые] строк[у|и], если это обновление,удаление (рассматриваем вариант когда у таблицы нет уникальных ключей).

Все блокировки можно получить через системную таблицу syslockinfo или через трассировку соответствующих событий.
25 ноя 09, 16:11    [7977670]     Ответить | Цитировать Сообщить модератору
 Re: эксклюзивная блокировка таблицы  [new]
с ms sql на Вы
Guest
Glory

Дело понимаете ли в том, что index и ключ в MSSQL - это разные объекты. Они даже разными командами создаются. И для одной команды репликация невозможна, а для другой - возможна
Так что вы определитесь не с вашим пониманием, а с конкретной командой, которой был создан ваш индекс/ключ

Прошу прощения за терминологическую путаницу. В контексте этой беседы, под индексом я понимаю объект БД, а под ключем - набор предикатов доступа\фильтрации используемых в операторе select фразы where.

Glory

Все блокировки можно получить через системную таблицу syslockinfo или через трассировку соответствующих событий.

Спасибо.
25 ноя 09, 17:02    [7978212]     Ответить | Цитировать Сообщить модератору
 Re: эксклюзивная блокировка таблицы  [new]
Yo.!
Guest
с ms sql на Вы

2. Сам механизм репликации требует ли каких-то блокировок таблицы tab на сервере A в монопольном режиме? Буду благодарен за ссылку на доку по концепциям установки блокировок на объект участвующий в репликации.

почитайте еще про эскалацию блокировок, у вас вполне блокировки на строки могли проэскалироваться до блокировки всей таблицы.
http://www.rsdn.ru/article/db/LockEscalation.xml
25 ноя 09, 19:29    [7979006]     Ответить | Цитировать Сообщить модератору
 Re: эксклюзивная блокировка таблицы  [new]
с ms sql на Вы
Guest
Glory

Дело понимаете ли в том, что index и ключ в MSSQL - это разные объекты. Они даже разными командами создаются. И для одной команды репликация невозможна, а для другой - возможна
Так что вы определитесь не с вашим пониманием, а с конкретной командой, которой был создан ваш индекс/ключ

Нужные мне индексы как раз и не созданы. Т.к. по утверждению DBA, который обслуживает MS SQL Server, индексы нельзя создавать из-за того, что данная таблица участвует в репликации, а индексы не реплицируются...

Yo.!
с ms sql на Вы

2. Сам механизм репликации требует ли каких-то блокировок таблицы tab на сервере A в монопольном режиме? Буду благодарен за ссылку на доку по концепциям установки блокировок на объект участвующий в репликации.

почитайте еще про эскалацию блокировок, у вас вполне блокировки на строки могли проэскалироваться до блокировки всей таблицы.
http://www.rsdn.ru/article/db/LockEscalation.xml

Спасибо!
26 ноя 09, 12:22    [7981564]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить