Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Интенсивная работа с TEMPDB  [new]
Мебиан
Guest
Мне поручили разрабатывать достаточно большой проект, а до этого я занимался в основном сопровождением уже написанного. Поэтому в некоторых специфичных вопросах архитектуры программ на основе SQL Server чуствую себя не совсем уверенно.
Один из волнующих вопросов: Есть ли какие-то специальные приемы работы с TEMPDB? Неоднократно видел обсуждения по поводу блокирования этой базы, но каких-то четко сформулированных правил так и не увидел.
Я понимаю, что вопрос звучит достаточно расплывчато, но может есть какие-то общие соображения, что не стоит делать при работе с TEMPDB? Ведь кто-то уже наступал на подобные грабли.
Вопрос возник потому, что я предполагаю делать редактирование данных во временных таблицах с последующим сохранением в основной базе. То есть интенсивно создавать и удалять там таблицы и данные в них.
23 мар 05, 12:21    [1408172]     Ответить | Цитировать Сообщить модератору
 Re: Интенсивная работа с TEMPDB  [new]
vooo
Member

Откуда:
Сообщений: 1316
То есть интенсивно создавать и удалять там таблицы и данные в них.

Тут могут возникнуть блокировки системных таблиц в tempdb (что скажется на производительности). И создавать временные таблицы можно по разному (общая для всех пользователей, для тек сессии конкретного пользователя ) И зачем удалять временные таблицы?
23 мар 05, 12:28    [1408210]     Ответить | Цитировать Сообщить модератору
 Re: Интенсивная работа с TEMPDB  [new]
zass
Member

Откуда: Minsk
Сообщений: 1043
Данная БД служит для хранения всех временных объектов, создаваемых пользователями во время сеанса работы. Доступ к tempDB автоматически имеется у всех пользователей, и администратор не должен предпринимать никаких действий для предоствления им доступа к этой БД.
23 мар 05, 12:30    [1408218]     Ответить | Цитировать Сообщить модератору
 Re: Интенсивная работа с TEMPDB  [new]
Мебиан
Guest
Удаляться они будут сами, если не возникнет какой-то особой необходимости, так как это делает сервер автоматически.
Вопрос немного в другом: например где-то я читал, что команда SELECT INTO блокирует базу, но провел эксперименты и оказалось, что это не так. По крайней мере в момент работы этой команды я спокойно мог работать с базой из другого сеанса.
Вот такие и подобные нюансы хотелось бы узнать.
23 мар 05, 12:43    [1408295]     Ответить | Цитировать Сообщить модератору
 Re: Интенсивная работа с TEMPDB  [new]
Michael7
Member

Откуда: Израиль
Сообщений: 928
Честно говоря предпочитаю по возможности не связываться с TEMPDB, но если ее использование жизнено необходимо, то лучше сразу увеличивать минимальный размер
23 мар 05, 12:52    [1408332]     Ответить | Цитировать Сообщить модератору
 Re: Интенсивная работа с TEMPDB  [new]
vooo
Member

Откуда:
Сообщений: 1316
Вопрос немного в другом: например где-то я читал, что команда SELECT INTO блокирует базу, но провел эксперименты и оказалось, что это не так. По крайней


Данная команда не осуществляет запись в лог ("non logged") - посему она будет более производительной нежели следующие :
create table #temptable(....)
insert into #temptable
select ........
23 мар 05, 12:55    [1408347]     Ответить | Цитировать Сообщить модератору
 Re: Интенсивная работа с TEMPDB  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
vooo
Данная команда не осуществляет запись в лог ("non logged") - посему она будет более производительной нежели следующие :
create table #temptable(....)
insert into #temptable
select ........

С чегой-то это вдруг?
23 мар 05, 12:57    [1408361]     Ответить | Цитировать Сообщить модератору
 Re: Интенсивная работа с TEMPDB  [new]
Glory
Member

Откуда:
Сообщений: 104760
Вопрос немного в другом: например где-то я читал, что команда SELECT INTO блокирует базу, но провел эксперименты и оказалось, что это не так. По крайней мере в момент работы этой команды я спокойно мог работать с базой из другого сеанса
Блокировка от использования SELECT INTO все таки есть.
Другое дело что эта блокировка может быть совместима с блокировкой, которую желает использовать другой коннект. Или не совместима.

Документация утверждает что SELECT INTO является bulk операцией и поэтому не должна блокировать другие коннекты.

Но в этом форуме есть люди(Crimean кажется) которые на практике выдели, что это не всегда выполняется. Думаю что такое возможно. Потому что раз есть блокировка то может возникнуть и конкуренция за ресурс.
С другой строны золотое правило MSSQL как блокировочника гласит - хочешь уменьшить время блокировки - уменьшай время транзакции.
Считаю что для работы с базой tempdb это правило тоже действует как и для всех баз.
А для выяснения конкрентно мешают ли друг другу пользователи есть средства трассировки и мониторинга.

ЗЫ
Если вы сразу планируете активно использовать tempdb, то озоботесь размещением ее на хорошей дисковой системе
23 мар 05, 12:58    [1408369]     Ответить | Цитировать Сообщить модератору
 Re: Интенсивная работа с TEMPDB  [new]
Мебиан
Guest
Спасибо за исчерпывающий ответ про блокировки.
Вобщем я понял так, что все, что применимо к обычным базам в плане производительности, относится и к TEMPDB. Надеюсь к моменту выхода SQL Server 2005 ничего не изменится в худшую сторону, а станет даже лучше.
Спасибо всем ответившим. Я не закрываю топик, если у кого-то возникнут мысли по этой теме, делитесь пожалуйста.
23 мар 05, 13:10    [1408426]     Ответить | Цитировать Сообщить модератору
 Re: Интенсивная работа с TEMPDB  [new]
vooo
Member

Откуда:
Сообщений: 1316
С чегой-то это вдруг?

А что SELECT INTO логируется?
23 мар 05, 13:14    [1408447]     Ответить | Цитировать Сообщить модератору
 Re: Интенсивная работа с TEMPDB  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
vooo
С чегой-то это вдруг?

А что SELECT INTO логируется?

Да, правда есть ньюансы.
З.Ы. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adminsql/ad_bkprst_4ku1.asp
23 мар 05, 13:28    [1408512]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить