
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
23.03.2007, 11:59
|
|||
|---|---|---|---|
|
|||
Вапрос про транзикции |
|||
|
#18+
ситуёвина примерно следующая: есть база на сервере, есть экзешник на клиенте... *клиент юзом открывает таблицы по сетке USE table1 IN 0 USE table2 IN 0 ................ *здесь уже начинается транзакция обработка данных BEGIN TRANSACTION *пусть здесь чёнить типа "вставляем двнные из table1 в table2" END TRANSACTION и БАЦ! во время обработки данных отваливаецца сеть (кабель выдернули, упала атомная бомба :) ) вАпрос: будет окат транзакции или то, что успелось записацца, сохраницца? с одной стороны, кто даст откат? ведь на стороне сервера фокса нет... а сдругой стороны, может будет откат средствами API самой ОС или средствами стека TCP/IP? и вопрос: насколько здесь "сильна" роль самой ОС, API и стека TCP/IP? какова их роль? например, когда я открываю таблицы по сетке, они открываюцца средствами фокса или средствами ОС и самого протокола TCP? (где-то читал, что фокс даёт команду, а открываюцца таблицы уже на сетевом уровне, но не могу вспомнить, где я видел эту статью) буду благодарен за ссылки на статьи по этому вопросу.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.03.2007, 12:18
|
|||
|---|---|---|---|
|
|||
Вапрос про транзикции |
|||
|
#18+
http://forum.foxclub.ru/search.php?29,search=%EE%F2%EA%E0%F2+%F2%F0%E0%ED%E7%E0%EA%F6%E8%E8,page=1,match_type=ALL,match_dates=0,match_forum=ALL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.03.2007, 12:38
|
|||
|---|---|---|---|
|
|||
Вапрос про транзикции |
|||
|
#18+
Спасибо, почитаю на досуге. ну может резюмирует ктонить в паре-тройке предложениях? будет откат транзакции или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.03.2007, 12:53
|
|||
|---|---|---|---|
|
|||
Вапрос про транзикции |
|||
|
#18+
В догонку ссылочке указанной выше ????????и БАЦ! во время обработки данных отваливаецца сеть (кабель выдернули, упала атомная бомба :) ) вАпрос: будет окат транзакции или то, что успелось записацца, сохраницца? Ответ Help к VFPIf the transaction fails (the server fails, the workstation fails, or you exit Visual FoxPro without committing the transaction) or if you issue ROLLBACK, the file or files in the transaction are restored to their original state. ????????с одной стороны, кто даст откат? ведь на стороне сервера фокса нет... а сдругой стороны, может будет откат средствами API самой ОС или средствами стека TCP/IP? В принципе когда вы работаете с буферизированными данными у вас есть несколько уровней "Буферов" 1. Это буфера самого фокса 2. Буфера локальной ОС (в том числе и "сетевые") 3. Буфера сервера (как железа так и его ОС ) Это конечно очень грубо - на самом деле этих уровней больше(на каждом из уровней есть подуровни)- но для понимания достаточно. Так вот когда вы в фоксе начали транзакцию , ничего на сервер не шлеться- все изменения делаются на уровне 1. И только когда вы говорите tableupdate + end tran - начинаеться передача данных по всей цепочке. И если хоть на одном уровне проблема- запись не пройдет. Т.е. в фоксе откат происходит так- если хотим сохранить- пишем , а хотим откатить - просто "убиваем" соответствующие буфера фокса и ничего не пишем. Точно такую-же цепочку строит например и Ворд. Кстати - хороший пример для понимания механизма Открыли файл - транзакция открылась автоматом - изменили его - все изменения на локальной машине Закрытие транзакции - сказали Сохранить - буфера сбрасываються - Нет - иходный файл не "трогаеться" Так что если вы не давали команду на закрыте транзакции и на вас упала бомба- тогда "Шеф все пропало, все пропало" Что собственно произойдет когда эта запись будет "в процессе" т.е. вы все-таки сказали END tran и в это время произойдет сбой- все зависит от того как далеко продвинулись по цепочке. Но в большинстве случаев данные не сохраняються. Кстати даже если вы и не работаете с буфферизацией - все равно буфера 1 уровня у вас есть, только вы ими управляете не так явно - фокс сам их "сбрасывает" ну или вы с помощью FLUSH/USE/Close ????????и вопрос: насколько здесь "сильна" роль самой ОС, API и стека TCP/IP? какова их роль? например, когда я открываю таблицы по сетке, они открываюцца средствами фокса или средствами ОС и самого протокола TCP? (где-то читал, что фокс даёт команду, а открываюцца таблицы уже на сетевом уровне, но не могу вспомнить, где я видел эту статью) Да собственно фокс , впрочем как и большинство программ "сами" ничего не открывают - естественно что открытие происходит по вышеописанной цепочке. Фокс "просит локальную ОС" - а та уже в зависимости где лежит файл строит свою цепочку. И роль каждого из уровней "сильна" одинаково У нас помню "пропадали" данные на новеловском серваке, хотя тот-же tableupdate() возвращал истину.Точнее данные не пропадали , а как-бы появлялись с задержкой и даже FLUSH не помогал. Оказалось что проблема в настройках переодичности сброса буферов самого новела. Схематично это было так Новел кроме "глобальных" буферов память-диск имеет буфера на каждый коннект. Так вот получалось что tableupdate пропихивал данные в буфер коннекта , а в общий буфер и на диск эти данные сразу не попадали . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.03.2007, 23:33
|
|||
|---|---|---|---|
|
|||
Вапрос про транзикции |
|||
|
#18+
т.е. если я меня есть BEGIN TRANSACTION, то откат будет в любом случае (независимо от наличия tableupdate() ), а если его нет, то данные запишуцца.... так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.03.2007, 13:12
|
|||
|---|---|---|---|
Вапрос про транзикции |
|||
|
#18+
????????т.е. если я меня есть BEGIN TRANSACTION, то откат будет в любом случае (независимо от наличия tableupdate() ), а если его нет, то данные запишуцца.... так? не в обиду, ты спе"ЦЦ"ом так пишешь, или для тебя буквосочетания ТСЯ иль ТЬСЯ не существует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.03.2007, 21:02
|
|||
|---|---|---|---|
|
|||
Вапрос про транзикции |
|||
|
#18+
тоже не в обиду.... здесь вАпросы задаю я! так что жду ответов по существу..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.03.2007, 11:05
|
|||
|---|---|---|---|
|
|||
Вапрос про транзикции |
|||
|
#18+
т.е. если я меня есть BEGIN TRANSACTION, то откат будет в любом случае (независимо от наличия tableupdate() ), а если его нет, то данные запишуцца.... так? Не , ну почитайте же хелп и то что вам написали выше. И научитесь задавать вопросы. Ничего не понятно , что вы хотите спросить.Когда запишуться/не запишутся , при каких условиях , при каких командах ??? Если вы имеете ввиду - такой вопрос Сохраняться ли данные при таком варианте ***************** BEGIN TRAN .... tableupdate() && N1 .... В ЭТОТ МОМЕНТ ПРОПАДАЕТ ЭЛЕКТРИЧЕСТВО , РВЕТСЯ СЕТЬ , ПАДАЕТ ЯДРЕННАЯ БОМБА .... tableupdate() && N2 End tran *************** То читаем хелп и находим там однозначный ответ НЕТ - НЕ СОХРАНЯТЬСЯ. Причем пропадут и те , что вы "подперли" tableupdate() && N1 Если так ************** BEGIN TRAN .... tableupdate() .... .... End tran В ЭТОТ МОМЕНТ ПРОПАДАЕТ ЭЛЕКТРИЧЕСТВО , РВЕТСЯ СЕТЬ , ПАДАЕТ ЯДРЕННАЯ БОМБА ************** В принципе данные с высокой степенью вероятности сохранены. НО - все зависит от того ,где лежат данные и успели или нет буфера "физически" сбросится на диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.03.2007, 11:56
|
|||
|---|---|---|---|
|
|||
Вапрос про транзикции |
|||
|
#18+
спасибо! вполне исчерпывающе.... вот именно это и хотелось услышать.... кратно и ясно.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.03.2007, 12:02
|
|||
|---|---|---|---|
|
|||
Вапрос про транзикции |
|||
|
#18+
на этом, я думаю, форум можно закрывать, т.к. на все вопросы уже можно сказать ответили (и не обязательно именно здесь) и на любой вопрос всё чаще и чаще пишут ответы в стиле "читай хелп" и "поиск рулит".... а иногда, просто так хочицца увидеть заветные, приятные глазу обычные "Да" или "Нет" и ничего боле... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.03.2007, 12:33
|
|||
|---|---|---|---|
|
|||
Вапрос про транзикции |
|||
|
#18+
и на любой вопрос всё чаще и чаще пишут ответы в стиле "читай хелп" и "поиск рулит"... Нет это не ответы такие . Это вопросы такие, и это печально. При наличии такого количества книг , причем не только бумажных , но и электронных. При наличии хелпа - причем сейчас на фоксклубе доступна даже русская версия. Все больше и больше вопросов на уровне - читайте хелп... И зачастую вам отвечают так , потому что даже вопросы заданы неправильно- не ясно чего конкретно вопрошающий хочет , где уж на такой ответить Да или Нет. Ведь даже если посмотреть эту ветку - по большому счету я просто пересказал статью из хелпа. + добавил кое-что из "опыта работы". Это не в обиду Вам сказано , но просто хочеться чтобы было поменьше пересказов , а побольше именно "из опыта работы". Так что читайте хелп и .... поиск рулит ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=41&tablet=1&tid=1589654]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 366ms |

| 0 / 0 |
