Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Избежание блокировок при работе с tempdb, Варианты решения проблем деревьев 
:(
    Опции темы
CallMeSet
Дата 26.6.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



Доброго времени суток smile

Есть некое дерево типа id_parent, id_child, для получения всех дочерних элементов какой-то ветки используется хранимая процедура, где создаётся временная таблица конструкцией select ... into, а потом в цикле забиваются в неё все элементы нижнего уровня с флагом равным номеру уровня, в итоге получается временная таблица нафаршированная целой кучей идентификаторов ветвей всех уровней вложенности. Работает это изумительно быстро даже для большой вложенности, но появилась проблема блокировки при одновременном использовании этой процедуры множеством процессов, то есть обращений к этой процедуре может быть очень много до 10 в 1 миллисекунду, в этом случае одновременное создание или удаление временной таблицы блокируются на безгранично малый промежуток времени, но и это довольно таки критично для системы вцелом. Как этого избежать не прибегая к разворачиванию дерева в отдельные таблицы, не изменяя структуры дерева и не переписывая серверную логику. То бишь есть ли способ обойти эти блокировки на SQL уровне (запросы, таблицы, настройки SQL-сервера, самих таблиц участвующих в процессе)?
PM MAIL   Вверх
skyboy
Дата 26.6.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



Цитата(CallMeSet @  26.6.2008,  13:35 Найти цитируемый пост)
SQL-сервера

создай TEMPORARY TABLE и не заморачивайся.

Добавлено через 37 секунд
только где сия конструкция окромя MySQL работает - не спршивай. ты же СУБД целевую не назвал  smile 
PM MAIL   Вверх
CallMeSet
Дата 26.6.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



Ну да, под ASE Sybase я такой конструкции не встречал :(

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

Это сообщение отредактировал(а) CallMeSet - 26.6.2008, 17:14
PM MAIL   Вверх
skyboy
Дата 26.6.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



какая СУБД? 
tempdb - это СУБД?
PM MAIL   Вверх
CallMeSet
Дата 27.6.2008, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



Я же уже написал "ASE Sybase"...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.