![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
CallMeSet |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
Доброго времени суток
![]() Есть некое дерево типа id_parent, id_child, для получения всех дочерних элементов какой-то ветки используется хранимая процедура, где создаётся временная таблица конструкцией select ... into, а потом в цикле забиваются в неё все элементы нижнего уровня с флагом равным номеру уровня, в итоге получается временная таблица нафаршированная целой кучей идентификаторов ветвей всех уровней вложенности. Работает это изумительно быстро даже для большой вложенности, но появилась проблема блокировки при одновременном использовании этой процедуры множеством процессов, то есть обращений к этой процедуре может быть очень много до 10 в 1 миллисекунду, в этом случае одновременное создание или удаление временной таблицы блокируются на безгранично малый промежуток времени, но и это довольно таки критично для системы вцелом. Как этого избежать не прибегая к разворачиванию дерева в отдельные таблицы, не изменяя структуры дерева и не переписывая серверную логику. То бишь есть ли способ обойти эти блокировки на SQL уровне (запросы, таблицы, настройки SQL-сервера, самих таблиц участвующих в процессе)? |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
||||
|
||||
CallMeSet |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
Ну да, под ASE Sybase я такой конструкции не встречал :(
Была идея сделать обычную таблицу, и работать с ней как с временной, но по умолчанию при апдейт операциях она всё равно будет блокироваться. Тут вроде бы на помощь приходят настройки Lock scheme, но никогда их не изменял, что предполагает наличие тестов, а чтобы воспроизвести нагрузку, которую мне обеспечивает сторонняя нужно писать хитроумный тестировщик, на что опять-таки не хотелось бы отвлекаться... Это сообщение отредактировал(а) CallMeSet - 26.6.2008, 17:14 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
какая СУБД?
tempdb - это СУБД? |
|||
|
||||
CallMeSet |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
Я же уже написал "ASE Sybase"...
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |