Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.19;
Скачать: CL | DM;

Вниз

Как избежать зависания при 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.034 c
1-1102349535
avsam
2004-12-06 19:12
2004.12.19
ASCII UTF-8 ANSI


14-1101456985
gn
2004-11-26 11:16
2004.12.19
SN Hotmail - взломали или пошутили?


1-1101935725
Tack
2004-12-02 00:15
2004.12.19
THotKey.Eanbled - лучше и не пробовать... :-(


14-1101493824
Alexander Panov
2004-11-26 21:30
2004.12.19
consts.pas из Delphi3.


3-1101154960
Hmm
2004-11-22 23:22
2004.12.19
Статья по Midas. Проблемма с настройкой SocketConnection.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский