Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / лог временных таблиц ASE12.5.4 / 13 сообщений из 13, страница 1 из 1
05.12.2007, 20:10
    #34989534
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
Господа, такой вопрос.

use database

create table #table

insert into #table 1 миллион записей

update #table 1 миллион записей

В чей лог будут записываться insert и update - в лог database или в лог tempdb?

Если запись будет в лог tempdb, то как избежать его переполнения и не навредить другим процессам использующим туже самую tempdb?

Поделитесь пожалуйста опытом.

Заранее всем большое спасибо
...
Рейтинг: 0 / 0
05.12.2007, 20:44
    #34989582
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
Kru пишет:

> update #table 1 миллион записей
>
> В чей лог будут записываться insert и update - в лог database или в лог
> tempdb?

В лог tempdb

> Если запись будет в лог tempdb, то как избежать его переполнения и не
> навредить другим процессам использующим туже самую tempdb?

Иметь ее достаточно большой.
Или не делать таких больших транзакций.
Причем заметь, что tempdb имеет критически важное значение для
работы сервера, без этой базы данных сервер может вообще встать,
потому что все временные и рабочие таблицы создаются в tempdb.
Кстати, если у тебя достаточно свежая версия (12.5.4 - свежая),
то можно использовать новую возможность иметь несколько tempdb.
Надо прочитать про это (где-то возле using multiple tempdb)
и настроить. Возможно выделить tempdb например для одного логина,
в таком случае он навредит, если что, максимум только самому себе.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
05.12.2007, 22:18
    #34989691
Vitafresh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
MasterZivКстати, если у тебя достаточно свежая версия (12.5.4 - свежая),
то можно использовать новую возможность иметь несколько tempdb.
Надо прочитать про это (где-то возле using multiple tempdb)
и настроить.
Не, вроде с версии 12.5.0.3: тут так сказано
...
Рейтинг: 0 / 0
05.12.2007, 22:46
    #34989712
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
А кто-нибудь пользовался multiple tempdb? На какие грабли здесь можно наступить?

Если tempdb общая, то имеет ли смысл делать большие update временных таблиц в циклах?
Например - создать курсор и в цикле делать update для каждой записи. Параллельно вести счётчик и после, скажем, каждых 1000 update делать check point в tempdb (по умолчанию в ней trunk log on chkp point = true).

Когда-то давно читал, что было такое пороговоре число записей после которого update в цикле работал быстрее.
...
Рейтинг: 0 / 0
06.12.2007, 01:50
    #34989842
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
Kru пишет:
> А кто-нибудь пользовался multiple tempdb? На какие грабли здесь можно
> наступить?

Да нет особо никаких...

> Если tempdb общая, то имеет ли смысл делать большие update временных
> таблиц в циклах?
> Например - создать курсор и в цикле делать update для каждой записи.
> Параллельно вести счётчик и после, скажем, каждых 1000 update делать
> check point в tempdb (по умолчанию в ней trunk log on chkp point = true).

Не checkpoint, а транзакцию коммитить.
Да, имеет.

> Когда-то давно читал, что было такое пороговоре число записей после
> которого update в цикле работал быстрее.

нет, тут нет "быстрее/медленнее". Один запрос всегда быстрее будет
чем цикл. Тут все дело в "возможно/невозможно". Иногда одним
запросом просто невозможно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
06.12.2007, 12:16
    #34990617
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
MasterZiv
Kru пишет:
> А кто-нибудь пользовался multiple tempdb? На какие грабли здесь можно
> наступить?

Да нет особо никаких...
Особенно рекомендую всегда сделать отдельную tempdb для администратора, если ресурсы позволяют.
...
Рейтинг: 0 / 0
06.12.2007, 13:10
    #34990864
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
KruА кто-нибудь пользовался multiple tempdb? На какие грабли здесь можно наступить?


если система покупная, то надо внимательно обследовать обычную tempdb на предмет специально добавляемых объектов - пользовательских типов данных, таблиц и прочего.
дважды наступал на такие грабли, но с разных сторон ;)
первый: сервер приложений при старте кладет в tempdb много чего, и когда добавляешь tempdb2 она оказывается в default пуле temp-баз и обычных юзеров (клиентов) начинает закидывать туда через раз где они не находят спец. объектов и ругаются
пришлось tempdb2 выносить из default группы

второй:
апдейты на сервер приложений накатываются частично из-под sa, он попадает в tempdb2 и снова не находит объектов ;)
в общем, отказался я пока от tempdb2, хотя, несомненно, это удобно.

PS чем авторов проги не устроила model в кач-ве хранилища спец. объектов понял чуть позже - при накате фиксов на сервер приложений (+корректировки структуры основной БД) не нужно передергивать Sybase
...
Рейтинг: 0 / 0
06.12.2007, 20:09
    #34992633
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
MasterZiv
> Если tempdb общая, то имеет ли смысл делать большие update временных
> таблиц в циклах?
> Например - создать курсор и в цикле делать update для каждой записи.
> Параллельно вести счётчик и после, скажем, каждых 1000 update делать
> check point в tempdb (по умолчанию в ней trunk log on chkp point = true).

Не checkpoint, а транзакцию коммитить.
Да, имеет.


Если цикл выглядит примерно так:
while @@sqlstatus = 0
begin
update table set ... -- транзакция явно не открывается
fetch..
end
и set chained off (по умолчанию)

то коммитить явно ведь ничего не надо.

Хочется понять что происходит в логе.
В tempdb по умолчанию trunk log on chkp point = true - т.е. при наступлении чекпойнта все записи о законченных транзакциях должны быть удалены.
Но, до чекпойнта все изменённые данные находятся в памяти, и, я так подозреваю, что записи для лога тоже находятся в памяти. Получается, что когда наступает чек пойнт в лог зальются только записи о висящих транзакциях, т.к. нет смысла регистрировать в логе законченные транзакции и сразу их удалять.
Если так, то получается, что в моём случае вообще не надо ничего делать, т.к. эти апдейты и так в лог не попадут.


MasterZiv
> Когда-то давно читал, что было такое пороговоре число записей после
> которого update в цикле работал быстрее.

нет, тут нет "быстрее/медленнее". Один запрос всегда быстрее будет
чем цикл. Тут все дело в "возможно/невозможно". Иногда одним
запросом просто невозможно.
Posted via ActualForum NNTP Server 1.4

Там, как я понял, имелось ввиду, что возможно существует такое количество записей при котором расходы на обслуживание одной большой транзакции по их обновлению становятся выше чем расходы на обслуживание цикла с большим количеством маленьких транзакций.

Кстати интересно как поведут себя блокировки. По идее update всей таблицы должен будет заблокировать всю таблицу до окончания своей работы.
...
Рейтинг: 0 / 0
06.12.2007, 20:12
    #34992638
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
komrad KruА кто-нибудь пользовался multiple tempdb? На какие грабли здесь можно наступить?


если система покупная, то надо внимательно обследовать обычную tempdb на предмет специально добавляемых объектов - пользовательских типов данных, таблиц и прочего.
дважды наступал на такие грабли, но с разных сторон ;)
первый: сервер приложений при старте кладет в tempdb много чего, и когда добавляешь tempdb2 она оказывается в default пуле temp-баз и обычных юзеров (клиентов) начинает закидывать туда через раз где они не находят спец. объектов и ругаются
пришлось tempdb2 выносить из default группы

второй:
апдейты на сервер приложений накатываются частично из-под sa, он попадает в tempdb2 и снова не находит объектов ;)
в общем, отказался я пока от tempdb2, хотя, несомненно, это удобно.

PS чем авторов проги не устроила model в кач-ве хранилища спец. объектов понял чуть позже - при накате фиксов на сервер приложений (+корректировки структуры основной БД) не нужно передергивать Sybase

Огромное спасибо! Очень ценный совет.
...
Рейтинг: 0 / 0
07.12.2007, 15:52
    #34994527
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
komrad пишет:

> первый: сервер приложений при старте кладет в tempdb много чего, и когда
> добавляешь tempdb2 она оказывается в default пуле temp-баз и обычных
> юзеров (клиентов) начинает закидывать туда через раз где они не находят
> спец. объектов и ругаются
> пришлось tempdb2 выносить из default группы

Ну уроды, что сказать. Такие объекты надо в model создавать.

> PS чем авторов проги не устроила model в кач-ве хранилища спец. объектов
> понял чуть позже - при накате фиксов на сервер приложений
> (+корректировки структуры основной БД) не нужно передергивать Sybase

Не понял. Чем не устроила ? ну надо создавать и в model , и в tempdb.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
07.12.2007, 15:57
    #34994545
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
Kru пишет:

> Но, до чекпойнта все изменённые данные находятся в памяти, и, я так
> подозреваю, что записи для лога тоже находятся в памяти. Получается, что

Кто тебе такое сказал ? Нет, конечно. Данные находятся кто где,
кто в кэше, кто уже на диске. А записи лога - только на диске
(конечно в памяти есть для них кэш).

> когда наступает чек пойнт в лог зальются только записи о висящих
> транзакциях, т.к. нет смысла регистрировать в логе законченные
> транзакции и сразу их удалять.

Чего ? ничего не понял. Видимо, при неправильных посылках
и выводы соответвующие.

> Там, как я понял, имелось ввиду, что возможно существует такое
> количество записей при котором расходы на обслуживание одной большой
> транзакции по их обновлению становятся выше чем расходы на обслуживание
> цикла с большим количеством маленьких транзакций.

Оно существует, безусловно. Но вот какое оно , это число - сильно
зависит от многих факторов. Размера таблицы, настроек сервера,
кэшей и т.п. - даже не знаю всех. Так что можно сказать что
и нет такого числа.

> Кстати интересно как поведут себя блокировки. По идее update всей
> таблицы должен будет заблокировать всю таблицу до окончания своей работы.

Смотря какой update, какая схема таблицы и какие настройки эскалации.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
07.12.2007, 16:39
    #34994714
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
MasterZiv
Kru пишет:

> Но, до чекпойнта все изменённые данные находятся в памяти, и, я так
> подозреваю, что записи для лога тоже находятся в памяти. Получается, что

Кто тебе такое сказал ? Нет, конечно. Данные находятся кто где,
кто в кэше, кто уже на диске. А записи лога - только на диске
(конечно в памяти есть для них кэш).

> когда наступает чек пойнт в лог зальются только записи о висящих
> транзакциях, т.к. нет смысла регистрировать в логе законченные
> транзакции и сразу их удалять.

Чего ? ничего не понял. Видимо, при неправильных посылках
и выводы соответвующие.


Про чекпойнт почитал - был неправ - "грязные" страницы могут быть как и в памяти так и на диске.
Лог ведётся отдельно и даже может быть причиной дополнительных чекпойнтов (free checkpoint). Открыл для себя что traunc log on checkpoint срабатывает только в случае системного чекпойнта. Сама команда checkpoint лог чистить не будет. Короче с чекпойнтами понятно. В данном случае их трогать вообще не надо.

В общем достаточно будет просто цикла, т.к. лог будет очищаться по системным чекпойнтам.


Вопросов больше по теме нет.

Всем большое спасибо
...
Рейтинг: 0 / 0
07.12.2007, 17:05
    #34994809
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
лог временных таблиц ASE12.5.4
Kru пишет:
> Про чекпойнт почитал - был неправ - "грязные" страницы могут быть как и
> в памяти так и на диске.

Как раз при checkpoint грязные страницы сбрасываются все на диск.
ну хорошо что наконец все ясно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / лог временных таблиц ASE12.5.4 / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]