транзакции в базе мастер

tyratam
Дата: 21.01.2009 13:49:36
Сама страница вызывается около 250 раз в секунду, но никаких пораждать не должны. Даже все селекты идут с with(nolock)
pkarklin
Дата: 21.01.2009 13:54:57
Модератор: Приношу автору топика извинения за некорректную обработку поста/ если Вас не затруднит - повторите пост


В MS SQL в режиме неявных транзакций (дефолтный) каждая отдельная инструкция - отдельная транзакция вне зависимости от ее типа и хинтов.

Что это за страничка, которая 250 раз в секунду дергается и, самое главное, чего ей в бд master надобно?!
tyratam
Дата: 21.01.2009 16:45:21
как редактировать сообщение не разобрался. повторяю здесь

Microsoft SQL Server 2005 - 9.00.3042.00 (X64) Feb 10 2007 00:59:02 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)
4-е 4-х ядерных проца, 64 ГБ памяти Windows Server 2003 ДатаЦентр

Показатель transactions/sec в базе master равен в среднем 800 транзакций в секунду
во всех остальных базах суммарное количество не больше 200 (из них больше половины приходится на tempdb).

"Виновник" такого ненормального значения найден. Это одна страничка сайта на asp? которая вызывает две хранимых процедуры (из рабочей базы. не master!).
Обе процедуры работают только на чтение; отбор идет по первичному ключу; максимум одна запись в результирующем рекордсете; селект выполняется с with(nolock).

Отключение вызова любой! из процедур ведет к уменьшению показателя в два раза.
Если отключить вызоб обеих - показатель стремится к "почти нулю" (десять-двадцать).

Откуда берутся и что делают эти транзакции в базе мастер? Как с ними бороться?

[quote]В MS SQL в режиме неявных транзакций (дефолтный) каждая отдельная инструкция - отдельная транзакция вне зависимости от ее типа и хинтов.
[/quote]
Я понимаю, но первая процедура содержит несколько селектов (3-5), вторая только один. А эфект от отключения одинаковый.
[quote]
Что это за страничка, которая 250 раз в секунду дергается и, самое главное, чего ей в бд master надобно?![/quote]
Клиентов много (интернет), и все ее дергают регулярно.
А вот что ей в мастере надо, сам не пойму.
tyratam
Дата: 21.01.2009 16:47:35
Может сам вызов процедуры - транзакция?

Кстати в SQL 2000 такого не было. Там счетчик transactions/sec в master всегда ноль.
Glory
Дата: 21.01.2009 16:56:00
tyratam
Может сам вызов процедуры - транзакция?

Кстати в SQL 2000 такого не было. Там счетчик transactions/sec в master всегда ноль.

Может потому, что в SQL 2000 у коннекта текущей базой была не master ?
tyratam
Дата: 21.01.2009 17:24:25
Glory
tyratam
Может сам вызов процедуры - транзакция?

Кстати в SQL 2000 такого не было. Там счетчик transactions/sec в master всегда ноль.

Может потому, что в SQL 2000 у коннекта текущей базой была не master ?


Да нет. В connection string явно указывается база.
Initial Catalog=WORKDB
Glory
Дата: 21.01.2009 17:26:24
tyratam
Glory
tyratam
Может сам вызов процедуры - транзакция?

Кстати в SQL 2000 такого не было. Там счетчик transactions/sec в master всегда ноль.

Может потому, что в SQL 2000 у коннекта текущей базой была не master ?


Да нет. В connection string явно указывается база.
Initial Catalog=WORKDB

Это никак не мешает после установки соединения поменять текущую базу
tyratam
Дата: 21.01.2009 18:12:22
Glory
tyratam
Glory
tyratam
Может сам вызов процедуры - транзакция?

Кстати в SQL 2000 такого не было. Там счетчик transactions/sec в master всегда ноль.

Может потому, что в SQL 2000 у коннекта текущей базой была не master ?


Да нет. В connection string явно указывается база.
Initial Catalog=WORKDB

Это никак не мешает после установки соединения поменять текущую базу


специально этого не делаю. зачем?
и кстати, как это делать? USE ... ?
pkarklin
Дата: 22.01.2009 08:44:09
tyratam
Я понимаю, но первая процедура содержит несколько селектов (3-5), вторая только один. А эфект от отключения одинаковый.

Клиентов много (интернет), и все ее дергают регулярно.
А вот что ей в мастере надо, сам не пойму.


Ну так натравите профайлер...
Glory
Дата: 22.01.2009 10:37:08
tyratam


специально этого не делаю. зачем?
и кстати, как это делать? USE ... ?

Т.е. вы не знаете, какая точно активная база у ваших коннектов ?