Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

Как избежать зависания при SQL из таблицы.   Найти похожие ветки 

 
Dmitriy O. ©   (2004-11-18 12:43) [0]

Если ее меняет конкурирущий пользователь.
Т.е. если пытаешься сделать SQL запрос во время как транзакция другого пользователя не завершена прога зависает как этого избежать ?.


 
Polevi ©   (2004-11-18 12:51) [1]

уровень изоляции поменять


 
Dmitriy O. ©   (2004-11-18 13:04) [2]

Я так понял что SQL зависает только если другой пользователь в это время добовляет новые записи. Если просто редактирует то не зависает.
Так вот как избежать зависания SQL во время добовления другим пользователем новых записей ?.
> уровень изоляции поменять

Чтот пока непонятно.


 
Digitman ©   (2004-11-18 13:41) [3]


> Polevi ©   (18.11.04 12:51) [1]
> уровень изоляции поменять


уровень изоляции т/акций не имеет к "вису" никакого отношения


> Dmitriy O. ©   (18.11.04 13:04) [2]


> SQL зависает


SQL не может "зависать" по определению, SQL - это терминологическая аббревиатура, переводимая ка "язык структурированных запросов"

некое же подобие "виса" в IB может наблюдаться лишь при старте/подтверждении транзакции, следующей после исполнения запроса, но никак не при исполнении запроса.

иди на ibase.ru и читай теорию до полного просветления.


 
Johnmen ©   (2004-11-18 13:46) [4]

>Digitman ©   (18.11.04 13:41) [3]
>иди на ibase.ru и читай теорию до полного просветления.

Дмитирий О. не читатель, он - писатель. Очень плодовитый, между прочим...
:)


 
Digitman ©   (2004-11-18 13:51) [5]


> Johnmen ©   (18.11.04 13:46) [4]


ты про Автошему ?)
ну эт да, согласен)


 
Dmitriy O. ©   (2004-11-18 15:04) [6]


> SQL не может "зависать" по определению, SQL

SQL запрос "select * from table" из таблицы куда добавляется запись конкурируещем пользователем.
Зависает конкретно TIBSQL

>  но никак не при исполнении запроса

Именно Команда "Open" и вызывает вис.
query1.Close;
query1.SQL.Clear;
query1.SQL.Add("SELECT DVIG, COUNT( DVIG ) as KVO FROM ZAIAV");
query1.SQL.Add("where data>="+""""+edvig1.Text+""""+"and  data<="+""""+edvig2.Text+""""+"and dvig<>""""  GROUP BY DVIG");
query1.Prepare;
query1.Open;// вот сдесь вис


 
Johnmen ©   (2004-11-18 15:24) [7]

>SQL запрос "select * from table" из таблицы куда добавляется
>запись конкурируещем пользователем.
>Зависает конкретно TIBSQL

Такого не м.б. потому, что не м.б. никогда !
Но если вам это удалось, то поделитесь - как !
:)))


 
Dmitriy O. ©   (2004-11-18 16:06) [8]


> Johnmen ©   (18.11.04 15:24) [7]

Может . Если не может тогда почему ?


 
Digitman ©   (2004-11-18 16:21) [9]


> Dmitriy O


т/акцией, надо понимать, неявно управляешь ?


> query1.Open;// вот сдесь вис


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


 
Vemer ©   (2004-11-18 19:06) [10]

Вот тут, много..

http://www.sql.ru/forum/actualthread.aspx?tid=133250&hl=%ef%ee%eb%e5+%f1%f2%e0%f2%f3%f1%e0


 
Vlad ©   (2004-11-18 19:22) [11]


> Dmitriy O. ©   (18.11.04 15:04) [6]

Хочешь сказать что ты с помощью компонента TIBSql выполняешь select запрос??? Ну-ну. Флаг тебе в руки.


 
Polevi ©   (2004-11-19 09:39) [12]

>Digitman ©   (18.11.04 13:41) [3]
очень даже имеет
достаточно для читающего запроса установить READ UNCOMMITTED


 
Polevi ©   (2004-11-19 09:41) [13]

хотя сорри, IB версионник, я имел в виду MS SQL


 
Digitman ©   (2004-11-19 11:52) [14]

> Именно Команда "Open" и вызывает вис.

в момент Open() у тебя происходит неявный старт читающей транзакции, о чем ты, очевидно, и не подозреваешь .. или вообще не понимаешь, что любой запрос в IB может быть стартован ТОЛЬКО в контексте успешно стартовавшей перед этим транзакции

попробуй выполни перед Open() ЯВНЫЙ старт транзакции

query1.Transaction.StartTransaction

убедись, что "вис" у тебя именно в этот момент происходит


 
Johnmen ©   (2004-11-19 12:01) [15]

Вобщем, Vlad уже сказал [11], в чем дело.
Open у него не метод, а св-во, никакого отношения не имеющее к Open у TIBQuery.
Дмитрий О. просто забыл про кнопу F1


 
Digitman ©   (2004-11-19 12:43) [16]


> Johnmen ©   (19.11.04 12:01) [15]


так-то оно так, но "вис"-то откуда у него берется ? ну прочитал он булево св-во "вхолостую" и тут же дальше поехал ..

скорей всего у него или в совершенно другом месте "вис" или у него все-таки TIBQuery .. шут его знает, что и как он там у себя трассирует пошагово, якобы выясняя строчку с "висом", но в любом случае мозги он нам тут конопатит по полной программе)


 
Dmitriy O. ©   (2004-11-19 13:29) [17]

ТАк проблема с висом проясняется. Дело в том что Вис образуется если перед этим в таблицу другим пользователем были добавленны записи методом INSERT. НО ни Commint ни Rollback вызваны небыли то есть данные вроде есть а вроде нет. Вот Query и незнает что с ними делать толи включать в Select толи не включать.
И ждет пока данная ситуация проеснится. Как только пользователь определится со своим выбором Запрос сразу же кспешно выполняется.

Вот схема: Сдесь пользователь добавляет записи в таблу но транзакцию не завершает.
query1.close;
query1.SQL.Clear;
query1.SQL.Add("Insert into dan (np,razmer,model,cexizgot,dataizg,marka,probeg,defect,cexvin,prim,avtom,vladel,adres,nomzav,datazav)");
query1.SQL.Add("select np,razmer,model,cexizgot,marka,markasb,probeg,defect,cexizgot,cexizgot,avtom,vladel,adres,nomzav,data");
query1.SQL.Add("from zaiav where nomzav="+dzaiav.Text+"and data >="+""""+myform.edata1.Text+""""+"and data<="+""""+myform.edata2.Text+"""");
query1.Prepare;
query1.Open;

Сдесь другой пользователь собирается сделать Select из этой таблы
query1.Close;
query1.SQL.Clear;
query1.SQL.Add("SELECT RECHEN, COUNT( RECHEN ) as kvo FROM DAN");
query1.SQL.Add("where dataprot>="+""""+edvig1.Text+""""+"and  dataprot<="+""""+edvig2.Text+""""+  "GROUP BY RECHEN");
query1.Prepare;
query1.Open;// Вот сдесь Query зависает потому что есть не "утвержденные записи" в табле.

Как этого избежать ?


 
Johnmen ©   (2004-11-19 13:32) [18]

Да-а-а, Дмитрий..... Ты не читатель, это однозначно....


 
Anatoly Podgoretsky ©   (2004-11-19 13:41) [19]

Он художник


 
Digitman ©   (2004-11-19 13:43) [20]


> Dmitriy O. ©   (19.11.04 13:29) [17]


занялся бы ты лучше Автошемой что ли ...

уж такую галиматью несносную городишь - слов нет просто ..

и на ibase.ru, куда тебя уже неоднократно посылали, ну никак не хочешь сходить ... или буквы там сплошь и рядом незнакомые тебе ...


 
Digitman ©   (2004-11-19 13:47) [21]


> Вот сдесь Query зависает потому что есть не "утвержденные
> записи" в табле


ГДЕ ?
ну ГДЕ ты этой хрени набрался ?
на основании ЧЕГО ты сделал свое гениально-безапелляционное "потому что"-умозаключение ?


 
Dmitriy O. ©   (2004-11-19 14:03) [22]


> Digitman ©   (19.11.04 13:47) [21]

И почему тогда "Open" не выполняется до тех пор пока записи вставленные методом "Insert" не потвердятся или не будут отвергнуты Транзакцией ???
И как избежать виса кто нить конкретно ответит ???


 
Digitman ©   (2004-11-19 14:26) [23]


> Dmitriy O. ©   (19.11.04 14:03) [22]
> И почему


да по кочану.

тебе же сказали уже - лапшу ты на уши здесь вешаешь.

TIBSQL.Open - это не метод, а свойство.

и единственное что происходит при обращении по чтению к этому св-ву - считывается значение булева поля объект FOpen. А эта простейшая операция, не может привести к "вису".



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.03 c
14-1101576784
ИМХО
2004-11-27 20:33
2004.12.19
"Особенности национального Интернета" (с) АП


1-1101913844
Суслик
2004-12-01 18:10
2004.12.19
Руссификация MessageDlg


14-1101807672
AlexG
2004-11-30 12:41
2004.12.19
Ваше мнение о дизайне.


1-1102005229
Unknown user
2004-12-02 19:33
2004.12.19
Соответствие классов


1-1102260155
Камиль
2004-12-05 18:22
2004.12.19
Как открыть HTML файл в Delphi6?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский