Просмотр полной версии : Транзакции...
А поддерживает ли MySQL транзакии? И как из под PHP ими воспользоваться?
У меня как то вставал такой вопрос!!!
MySQL вроде бы не поддерживает транзакций... но как сказал один мой знакомый, на вопрос: А не рухнет ли у меня база, от большого числа посетителей???
Если у тебя на сайте будет столько посещений что мускл рухнет... то ты будешь очень богатым человеком и у тебя будут другие проблемы ;)
Парни, но вы даете. Они не знают, что такое транзакции, как же они живут то после этого :)) Итак все во внимание: "Транзакцией называется совокупность операций с базой данных, которая либо выполняется вся полность, либо не выполняется совсем" :)) А транзакции MySQL поддерживает...
Нет в MySQL транзакций, и вообще как это совокупность операций котороя - цитирую - не выполняеться совсем, все операции встают в очередь, и в конце концов выполняються...
Вот вам пример который я прочитал в каком то журнале, который подчеркиает плохую реализацию транзакции:
Покупаешь интернет карту и с двух компов одновременно активизируешь ее, в базу поступают данные активизации и следовательно данную карту надо удалить из базы, так вот вопрос успеет она удалить до того момента как второй комп прошлет запрос на активизацию... оказыветься фокус проходил у какого то провайдера
BRUTALIS
16.11.2001, 12:58
Странно... или я слишком долго не читал новостей или последний ответ неправильный, или mysql начал поддерживать транзакции (что было бы реально неплохо, должен заметить!!!)
Однако, насколько я знаю (и уверен в этом на 100%!) mysql не поддерживает транзакции! Равно как и тирггеры и хранимые процедуры! Зато взамен получили быстрый, многопоточный сервер БД. Если уж действительно необходимы транзакции - некоторые их фичи (не все!) можно и на mysql симулировать. rtfm.
BRUTALIS
16.11.2001, 13:04
subj:
в mysql команды sql выполняются одна за одной и если команда отправлена серверу, то её нельзя уже отменить.
а вот, например, в oracle (или sybase, да и не только в них) можно задать целый набор команд, но пока не будет отдана команда commit нифига не будет, т.е. все sql команды отсылаются серверу БД только после команды commit.
BRUTALIS
16.11.2001, 13:11
2 evgenz:
извини, тут типа пока ответ писал, ты свой вариант ответа отослал, вот и получилась накладка (вот и пример транзакции, а точнее её отсутствия) %)))
мои ответы были направлены для BigIlya
%)
Откроем пункт 7.31 документации по MySQL...Цитирую:
7.31 BEGIN/COMMIT/ROLLBACK Syntax
By default, MySQL runs in autocommit mode. This means that as soon as you execute an update, MySQL will store the update on disk.
If you are using BDB tables, you can put MySQL into non-autocommit mode with the following command:
SET AUTOCOMMIT=0
After this you must use COMMIT to store your changes to disk or ROLLBACK if you want to ignore the changes you have made since the beginning of your transaction.
If you want to switch from AUTOCOMMIT mode for one series of statements, you can use the BEGIN or BEGIN WORK statement:
BEGIN;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;
Note that if you are using non-transaction-safe tables, the changes will be stored at once, independent of the status of the autocommit mode.
К чему бы это они написали? Мне здесь только не понятно, что такое BDB таблицы? Если я не прав, то заранее извиняюсь.
А на счет очереди...так BRUDALIS абсолютно прав!
BRUTALIS
21.11.2001, 12:41
2 BigIlia
Должен принести свои извинения за некорректность своего ответа (хотя ещё в первом месадже этого сабжа я сказал, что могу и ошибаться. см. сабж.) - оказывается, что mysql действительно способен поддерживать транзакции. Тем не менее у хотелось бы высказать следующее по этому поводу:
1. транзакции будут поддерживаться только при работе с BDB tables (Berkley DB tables). Слить дистрибут можно отсюда http://www.sleepycat.com/download.html
2. тем не менее, как я и упоминал транзакции можно сэмитировать sql командами и без наличия BDB - см. LOCK TABLES
3. если вы владелец самого хоста или у вас нет проблем с установкой на хост DBD, то почему бы и нет!!! однако, проблема, когда у вас нет выхода на админа хоста! тогда можно забыть о применении этой технологии.
Не усложняйте себе жизнь проблемами и не изобретайте велосипед - он уже есть и "фунциклирует"! %)))
to BRUTALIS: не, ну просто приятно читать! Ну наконец то правда восторжествовала :)) Хотя могу напомнить довольно таки обидную фразу: "Однако, насколько я знаю (и уверен в этом на 100%!) mysql не поддерживает транзакции!", для разработчиков MySQL, конечно :)) Ладно, ладно, пошутил...
BRUTALIS
21.11.2001, 16:18
2 BigIlya
при всём твоём "торжестве" должен заметить, что несмотря на существование возможности транзакций в mysql они не появятся без BDB, т.е. это значит лишь то, что САМ (!!!) mysql системы транзакций НЕ имеет, а лишь пользуется этим механизмом у BDB.
Таким образом фраза "в mysql НЕТ транзакций" - корректна. Это сказано и в мануалах и в описании этой RDB.
to BRUTALIS: Да я и не "торжествовал" особо.... :)) Я согласен со всем, что ты написал! Жаль конечно, что нет реальной поддержки транзакций, хотя на худой конец можно и LOCK TABLES использовать...но возможно поэтому MySQL так быстро работает и деньги за него не просят.
BRUTALIS
21.11.2001, 17:18
2 BigIlya
вот тут ты истинно сказал - "возможно поэтому MySQL так быстро работает и деньги за него не просят" (хотя деньги за него всё же просят. правда небольшие.) %)
а по этому поводу (печаль из-за отсустсвия этой фичи) см. в одном из предыдущих моих мессаг - "...(что было бы реально неплохо, должен заметить!!!)..."
кстати, а зачем тебе так вот припёрло использование транзакций? неужто в задаче без них никак?
Да нет, пока обходился...пока...А спросил я из чисто познавательного интереса, дабы узнать наконец то правду. А так...ну конечно не Oracle, я это прекрасно понимаю. И даже не Microsoft SQL Server ;-)
kompadre
23.11.2001, 02:31
MYSQL ПОДДЕРЖИВАЕТ ТРАНЗАКЦИИ НАЧИНАЯ (С ПОКА ЕЩЕ БЕТОВОЙ, НО УЖЕ ВПОЛНЕ ИСПОЛЬЗУЕМОЙ ВЕРСИИ 4). А ЕЩЕ ЕСТЬ БЕТА MYSQL_MAX 4 КОТОРОЯ УЖЕ ПОЧТИ ВСЕ ИЗ ANSI SQL.
BRUTALIS
23.11.2001, 15:33
2 kompadre
не спорю!
а теперь немного реализма - а дофига ли вы знаете хостингов с mysql 4 (пусть даже бетовой)???????
Интересная получаеться тема... можно подумать что кто то что то имеет против mySQL, все пользовались пользуются и будут пользоваться, а если вдруг ее улучшили, то это только хорошо... mySQL forev :D er
BRUTALIS
23.11.2001, 15:52
2 evgenz
хммм..... вообще-то я немного иное подразумевал своим последним ответом. А именно то, что mysql версии 4 ещё не сильно распространён, а значит шансов найти хостинг с этой версией mysql на текущий момент либо очень (!!!) мало, либо вообще никаких.
А насчёт применения иных БД серверов у меня лишь такое мнение - если хостинг поддерживает что-то более солидное чем mysql, и это не стоит непомерное количество дензнакофф, то я выберу другую БД.
2 kompadre
Кстати, а в mysql 4 появились триггеры и хранимые процедуры?
И много известно не коммерчиских БД...
А по сути если писать что то очень серьезное где важна транзакция, то все равно лучше заплатить денег и использовать другую БД хотя бы Oracle
kompadre
23.11.2001, 20:20
На самом деле в МайСКЛ не только транзакции но и даже элементарные форейн кизы никому на х*ен не нужны... Вот. И с май-исама я еще не собираюсь никуда перелазить. Но факт остаеться фактом. 4.0 - не далекое размытое будующие а реальность. И через ~ 3 месяца его начнуть юзать.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.