Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / И опять блокировки / 7 сообщений из 7, страница 1 из 1
26.08.2010, 19:30
    #36814061
_devel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять блокировки
Добрый день всем!

ASE 15

Проблема такая:
Есть таблица(0.5 млн записей). Есть процедура, которая по расписанию апдэйтит в ней 90% записей. Работает процедура примерно 1 мин. Но с этой таблицей еще работает куча юзеров(insert, delete, update). Когда процедура запускается, таблица эксклюзивно блокируется и все юзеры могут идти курить примерно на одну минуту. Это и вызывает проблемы. Не проходит даже insert, хотя таблица с построчной блокировкой. Так как апдэйтиться почти вся таблица блокировка эскалирует до табличной.

Может как-то можно порешать эти проблемы? Временем апдэйтовой процедуры можно пренебречь, ну если сейчас она работает 1 мин, то не будет проблем, если она будет работать 10 мин.
...
Рейтинг: 0 / 0
26.08.2010, 23:26
    #36814313
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять блокировки
_devel wrote:

> Есть таблица(0.5 млн записей). Есть процедура, которая по расписанию
> апдэйтит в ней 90% записей. Работает процедура примерно 1 мин. Но с этой
> таблицей еще работает куча юзеров(insert, delete, update). Когда
> процедура запускается, таблица эксклюзивно блокируется и все юзеры могут
> идти курить примерно на одну минуту.

Это эскалации блокировок.

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

А это просто решается. Берёте таблицу, делаете её на DPL или DRL,
и укручиваете эскалацию блокировок почти в 0. Т.е. чтобы эскалация
никогда не происходила. Только при этом надо под локи выделить
больше памяти, (number of locks), потому что жрать их будет
сервак немилосердно (вместо одного лока на всю таблицу будут по
локу на страницу или по локу на запись).

При этом insert, delete, update будут пролетать на этой таблице
на ура, никому ваш фоновый UPDATE мешать не будет. Но это на
DRL-таблице.

DPL таблица будет немного компромиссным вариантом, поскольку
тут конфликты возможны, но зато локов меньше (в число строк
на странице раз).

Будет хорошо, если это возможно, разбить один большой
UPDATE на маленькие пачки по N строк где N что-то типа
1000 - 5000.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.08.2010, 08:47
    #36814546
cherrex_Den
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять блокировки
_devel

Я бы эскалацию бы не трогал! Много блокировок = много памяти.

А вот разбить на несколько updae-ов, как советует MasterZiv, это наилучший выход.
Также обезопасите себя от переполнения лога.
Это можно сделать курсором, хотя я не уверен! Курсор может накладывать блокировку не на одну строку, которая изменяется, а на всю выборку, по которой бежит курсор. Это надо проверять!!!
Но не что не мешает сделать это циклом(while), @@rowcount, и select top(в ASE 15 top есть).
...
Рейтинг: 0 / 0
27.08.2010, 09:15
    #36814605
_devel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять блокировки
MasterZiv, cherrex_Den

А можно пример такого Update?
...
Рейтинг: 0 / 0
27.08.2010, 10:01
    #36814704
0rc
0rc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять блокировки
cherrex_Den select top(в ASE 15 top есть).
с 12.5.3 есть
...
Рейтинг: 0 / 0
11.09.2010, 19:41
    #36841970
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять блокировки
_devel wrote:

> А можно пример такого Update?

set rowcount 1000
update theTable
set ...
where <условие>
set rowcount 0
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.09.2010, 22:32
    #36844458
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять блокировки
_develДобрый день всем!

ASE 15

Проблема такая:
Есть таблица(0.5 млн записей). Есть процедура, которая по расписанию апдэйтит в ней 90% записей.

Может быть посмотреть в сторону изменения структуры базы? Что именно обновляется в таблице?
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / И опять блокировки / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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