MySQL Database Now Provides Full Transaction Support

Romantik

TeaM PHPClub
MySQL Database Now Provides Full Transaction Support

Вот... теперь InnoDB стандарт в MySQL для тех, кто использует транзакции. Теперь развитие BerkeleyDB не будет далее. О как :( Раньше было наоборот. Так что переводим таблицы на новый тип :)
 

lyonchik

Guest
А вот графики по скорости:

http://common.ziffdavisinternet.com/util_get_image/0/0,3363,sz=1&i=9899,00.jpg

http://common.ziffdavisinternet.com/util_get_image/0/0,3363,sz=1&i=9898,00.jpg

впечатляет!
 

Romantik

TeaM PHPClub
это ж на простых запросах. И вообще, кто платит, тот и выигрывает тесты :)
 

lyonchik

Guest
Ты хочешь сказать MySQL дал "на лапу" дядькам из eweek? :)
 

rudik

Developer
Вполне возможно, в таких случаях подбираются специально запросы которые обрабатываются одной БД быстрее чем другой.
 

rudik

Developer
А что вобще такое транзакции? В двух словах. Потому как в мануале определения этого слова - нет.
 

DVA

Guest
Пакет запросов, обрабатывающийся как один запрос...
(6 слов :))
 

rudik

Developer
А это так называется запрос, внутри которого есть другой запрос? Если да то я понял, очень хорошо и содержательно объяснил. Спасибо.
 

su1d

Старожил PHPClubа
объяснил-то он правильно, но ты понял неверно =)
транзакция - это несколько запросов (например SELECT, после которого идёт DELETE), выполняющихся атомарно - как один. Это значит, что между запросами в транзакции никто не влезет со своими изменениями в таблицу.
 

Larson

Новичок
Автор оригинала: su1d
Это значит, что между запросами в транзакции никто не влезет со своими изменениями в таблицу.
Немножко не так - если хотя бы один не выполнился, то остальные и предыдушие отменяются.
 

Poltergeist

Guest
ТРАНЗАКЦИЯ - это логическая единица работы, составленная из одного или нескольких предложений SQL. Транзакция - это атомарная единица; результаты всех предложений SQL, составляющих транзакцию, должны быть либо все ПОДТВЕРЖДЕНЫ (применены к базе данных), либо все ОТМЕНЕНЫ.
 

Poltergeist

Guest
Во загнул (скопировал) :cool: Пора бросать пить :cool:
 

rudik

Developer
А как же может выглядеть такой запрос?
INSERT INTO table VALUES(SELECT * FROM table 1);
- этот запрос является транзакцией?
 

Romantik

TeaM PHPClub
Открой любую доку по SQL и посмотри...
В кратце клиент А платит клиенту Б, с банка А снимается в банк Б ложится. Если сняв с банка А произойдет сбой, то в банк Б ничего не дойдет, а с клиента А уже снято. Вот для этого и существуют транзакции. В данном случае произойдет откат и деньги с А не снимутся. И будет мир между А и Б :)
 

mahoune

Guest
To rudik, а то, что ты спрашиваешь, это подзапросы вида
SELECT * FROM ( SELECT * FROM MyTable)
 

rudik

Developer
ОК, а пример может кто-нибудь привести такого запроса, хоть самый маленький.
 

Romantik

TeaM PHPClub
$db->autoCommit(false);
$sql= "INSERT INTO $dt_......";
$res= $db->query($sql);
$sql_ind= "UPDATE $dt_....";
$res_ind= $db->query($sql_ind);
$sql_upd= "UPDATE $dt_.......";
$res_upd= $db->query($sql_upd);
if(($res)AND($res_ext)AND($res_upd))
{
$db->commit();
}
else
{
echo $error["trans"];
$db->rollback();
}
Взято с рабочего скрипта
База MySQL. API for DB- PEAR. type=BerkeleyDB
 
Сверху