Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Прерывание обновления таблицы при записи в нее из другого приложения

5.1K
18 августа 2010 года
Karrde
88 / / 15.10.2007
Доброго времени суток. возникла проблема: существует база данных, хранящая инфу о звуковых записях в отдельных файлах. при записи нового wav-файла в базе в одной и таблиц идет постоянное обновление длительности этого файла(до тех пор, пока, соответственно, этот файл не перестанет записываться). Но в моем приложении тоже в момент записи надо обратиться к этой таблице и обновить в другом поле инфу. Так вот, как только я обновляю это поле, сразу перестает обновляться поле длительности записи(похоже, что идут два одновременных запроса на изменение таблицы, и сторонняя прога этого не выдерживает). Можно ли это обойти?
385
18 августа 2010 года
SomewherSomehow
477 / / 25.07.2004
Озвучьте СУБД, без этого вам не помогут.
5.1K
21 августа 2010 года
Karrde
88 / / 15.10.2007
Сорри) база данных sql server
385
23 августа 2010 года
SomewherSomehow
477 / / 25.07.2004
Цитата: Karrde
Доброго времени суток. возникла проблема: существует база данных, хранящая инфу о звуковых записях в отдельных файлах. при записи нового wav-файла в базе в одной и таблиц идет постоянное обновление длительности этого файла(до тех пор, пока, соответственно, этот файл не перестанет записываться). Но в моем приложении тоже в момент записи надо обратиться к этой таблице и обновить в другом поле инфу. Так вот, как только я обновляю это поле, сразу перестает обновляться поле длительности записи(похоже, что идут два одновременных запроса на изменение таблицы, и сторонняя прога этого не выдерживает). Можно ли это обойти?


все-таки записи хранятся в отдельных файлах или в поле таблицы?

Два(и много больше) запроса на изменение одной и той же таблицы sql server разруливает нормально. Погуглите на тему серверных блокировок, их уровней и т.д.

Другое дело, с каким уровнем блокировок или изоляции выполняются дествия с клиента? Возможно разрешено "грязное чтение" (хинтом nolock) и из-за этого возникают проблемы, когда клиент пытается считывать данные, которые еще не записались или что-то еще. Тут уже все зависит от вашего клиента и этой "сторонней проги". Советую вооружиться профайлером и смоделировать ситуацию когда такое происходит. Все станет понятно. Если нет, то выкладывайте результаты сюда, подумаем.

5
23 августа 2010 года
hardcase
4.5K / / 09.08.2005
Подозреваю, автор столкнулся с проблемой транзакций при работе с файловой системой (кстати, начиная с Windows Vista NTFS поддерживает транзакции).

Какой смысл непрерывно писать в базу длительность композиции? Лучше периодически (где-нибудь раз в 10-15 секунд) это делать.
5.1K
23 августа 2010 года
Karrde
88 / / 15.10.2007
ну я не сказал, что это сторонняя прога непрерывно пишет. насколько я понял, дискретность где то в 1 секунду))(полной непрерывности логично достичь невозможно). но все равно всегда после обновления другого поля сторонняя прога перестает обновлять свои данные. возможно, просто она поддерживает соединение с базой, и каким то образом мой запрос разрывает это соединение(хотя это странно)
5
24 августа 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Karrde
ну я не сказал, что это сторонняя прога непрерывно пишет. насколько я понял, дискретность где то в 1 секунду))(полной непрерывности логично достичь невозможно). но все равно всегда после обновления другого поля сторонняя прога перестает обновлять свои данные. возможно, просто она поддерживает соединение с базой, и каким то образом мой запрос разрывает это соединение(хотя это странно)


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

385
24 августа 2010 года
SomewherSomehow
477 / / 25.07.2004
Вот именно что странно. А чтобы не гадать - натравите на сервер профайлер, снимите трассу и посмотрите что в реале происходит. Гадать можно долго, и в итоге не угадать даже близко...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог