powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MyISAM не поддерживает транзакции? (( что насчёт innoDB?
14 сообщений из 14, страница 1 из 1
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633150
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Не раз обсуждал тему с ведущим программистом (прошлым) по поводу не откатывания изменений при возникновении ошибки в момент миграции баз (yii) на основной сервер. И мне не раз отвечали, что видимо это происходит из-за ошибки на уровне php, а не базы.
Ну так, значит так... мне то пофигу... я просто аккуратнее проверяю и всё (фиг знает как там yii внутри это рулит... полагаюсь на опыт более опытного коллеги).

Но тут вдруг... сейчас пришлось мне с транзакциями помучиться снова... Я стартую транзакцию... а после её отката (при неудачном выполнении запроса) вижу что всё осталось как есть... Решил вручную каждый шаг провести и проверить... А в момент выполнения запроса оно, блин, пишет данные и не дожидается команды commit :) Тут меня осенило, что что-то не так с транзакциями... и оказалось что MyISAM не поддерживает транзакции.

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

P.S. Оказывается, иногда достаточно пол часа, что бы мир перевернулся Кстати... я ещё не пробовал AUTOCOMMIT в ноль скидывать в MyISAM... Может он сможет помочь в сохранении целостности данных (если вообще работает) :)
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633176
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MyISAM не поддерживает транзакции ни в каком виде, AUTOCOMMIT не спасет.
Из широкоупотребимых движков транзакции поддерживает только InnoDB.

И вообще, дока рулит - http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633190
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёра какие подводные камни меня могут ждать с непривычки на этом движкеКстати, обратите внимание на уровни изоляции транзакций в InnoDB, в т.ч. на тот, который установлен по умолчанию.
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633194
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы хорошо подумали ? Зчем вам в php транзакции? Просто по привычке ?
Это же не дельфи. Тут нет постоянно запущенного приложения.
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633196
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindА вы хорошо подумали ? Зчем вам в php транзакции? Просто по привычке ?
Это же не дельфи. Тут нет постоянно запущенного приложения.Зачем - как раз понятно. Чтобы в случае внезапной смерти скрипта в базе не оказалась половина заказа.
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633211
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft, чота статистически мне кажется нет там никаких "заказов и клиентов", обычное веб-слесарничество. к тому же скрипты не падают внезапно.
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633282
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindmiksoft, чота статистически мне кажется нет там никаких "заказов и клиентов", обычное веб-слесарничество. к тому же скрипты не падают внезапно.

Дали заказ на новом месте работы. CMS местная уже есть... Но она непереносимая, потому стоит вопрос в написании новой CMS (не подумайте, прошлую CMS писал не я... она уже более чем десятилетней давности, постоянно дорабатываемая кем-то новым), при этом переносимой и с возможностью модульности и доработки.

Транзакции нужны для контроля записи в базу, и в том числе заказов (в будущем). Сейчас всё на этапе построения дерева сайта, так как клиентам (да и мне лично) нравится внешнее представление существующей CMS. Тут всё из себя представляет дерево, что позволяет быстро сориентироваться что и куда хочется добавить или где изменить. Сами же модули привязываются к самому дереву. Потому, для каждой странички/товара/etc. требуется обновление двух таблиц, а этого одним запросом даже в mysql сделать невозможно вроде, не говоря уже про yii модели. Потому хочу быть уверен, что не случится, что данные в дерево сайта записались, а сопутствующие данные модуля были утеряны.

Также транзакции я использую для функции переноса веток сайта и добавления тех самых веток, так как дерево хранится в формате nested sets, а потому для врезания новых данных или переноса старых требуется выполнение более чем одного запроса. Не хотелось бы, что бы например индексы сместились, а данные не вставились... Или ещё хуже, учитывая что я левые и правые индексы смещаю в разных запросах, может случиться что левые индексы сместятся, а в момент выполнения смещения правых индексов произойдёт ошибка и всё... дерево сломано... а дальше уже фиг знает чего ожидать :) Если пользователь после этого попробует с деревом что-то сотворить, то оно может не подлежать восстановлению.

Так что всё делается в целях безопасности данных.
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633287
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindА вы хорошо подумали ? Зчем вам в php транзакции? Просто по привычке ?
Это же не дельфи. Тут нет постоянно запущенного приложения.

Постоянно запущенного? :) А что значит постоянно? считается ли скрипт, который при большой нагрузке на сервер отрабатывается за секунду, постоянно запущенным? )) Ведь я на протяжении всей этой секунды могу периодические запросы в базу кидать, и при этом быть заинтересованным в отсутствии порчи данных :) В то же время как приложение на делфи может быть постоянно запущено, но при этом будет выполнять один единственный запрос в день к базам, и потому его вообще не волнуют транзакции, так как выполнить запрос наполовину не возможно (или если и возможно как-то, то только намеренно и не так уж просто) :)
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633300
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр
Постоянно запущенного? :) А что значит постоянно? считается ли скрипт, который при большой нагрузке на сервер отрабатывается за секунду, постоянно запущенным? ))
Что написано - то и значит.
Это на всякий случай уточнил. Зачастую у людей сползающих с других технологий, странные представления о вебе. И фреймворки настолько скрывают подробности что может возникнуть ложное мнение, о том что транзакции продолжаются между нажатиями на кнопки, как это было в дельфи.


автортребуется обновление двух таблиц, а этого одним запросом даже в mysql сделать невозможно вроде
Вообще-то можно. Но нужно смотреть конкретику.
Вот еще одна характерная черта : перейдя в незнакомую область не попытались поискать альтернативу транзакциям.
Ведь в php-mysql люди годами строят решения. Как-то же они должны эксплуатироваться, разве нет ?
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633305
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftПрограмёра какие подводные камни меня могут ждать с непривычки на этом движкеКстати, обратите внимание на уровни изоляции транзакций в InnoDB, в т.ч. на тот, который установлен по умолчанию.

Ранее что-то подобное читал... сейчас ознакомился подробнее... В принципе принятый по умолчанию уровень изоляции (repeatable read) очень удобный. Иногда можно конечно подниматься до Serializable, но я пока не вижу видимой потребности в этом в повседневной жизни.

Спасибо :)
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633325
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИногда можно конечно подниматься до Serializable, но я пока не вижу видимой потребности в этом в повседневной жизни.

а как же мифическая безопасТность данных ? давайте, поднимайте ! устроим маразм в отдельно взятой отрасли !
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633332
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindПрограмёрПостоянно запущенного? :) А что значит постоянно? считается ли скрипт, который при большой нагрузке на сервер отрабатывается за секунду, постоянно запущенным? ))
Что написано - то и значит.
Это на всякий случай уточнил. Зачастую у людей сползающих с других технологий, странные представления о вебе. И фреймворки настолько скрывают подробности что может возникнуть ложное мнение, о том что транзакции продолжаются между нажатиями на кнопки, как это было в дельфи.


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

По поводу первого - было бы странно иметь такое представление о вэбе спустя 3 года активной работы в данной области :)
по второму - задать вопрос на данном форуме и есть поиск альтернативного решения (не просто же так я всю ситуацию с самого начала излагал :) ). Однако склоняюсь что альтернативного решения нету.

"Вообще-то можно" - тут неверно выразился... UPDATE двух таблиц то вроде допустим (не помню), а вот insert в две таблицы выдаёт ошибку.

"Ведь в php-mysql люди годами строят решения" - я тоже первые года полтора даже не знал что есть такая штука как транзакции... Точнее я что-то слышал, но мне это казалось чем-то излишним и непонятным, потому я даже не интересовался что это такое :)
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633343
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрПо поводу первого - было бы странно иметь такое представление о вэбе спустя 3 года активной работы в данной области :)

Но вы же как-то умудрились на Дефли писать с 2006 и не знать про них ?
Всякое бывает. Хороший фреймворк способен годами изолировать программиста от того "как оно на самом деле".

по второму - задать вопрос на данном форуме и есть поиск альтернативного решения (не просто же так я всю ситуацию с самого начала излагал :) ). Однако склоняюсь что альтернативного решения нету.

все зависит от ситуации :
часто бывает, что вебстудии держат сайты клиентов у себя на серверах(обычно вообще на одном). и скрипты, как ни странно, не падают внезапно. В этой ситуации вы сейчас принимаете решение, которое в будущем уменьшит "плотность" сайтов на глаз разика эдак в 4 из-за соответствующих накладных расходов на поддержку транзакций.
Если отдельный проект дорогой - это нормально. Если массовые и халтурные - уже не очень.
...
Рейтинг: 0 / 0
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
    #38633402
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind,

В целом мысль понял ) вот только про делфи не понял :) Про кого я не знал, когда на дэлфи писал?
Если вдруг что, на дэлфи это было просто играние. Никаких программ серъёзнее пэинта или имитации солнечной системы средствами openGL я там не писал Тогда я в целом программирование осваивал... в олимпиадах участвовал и т.д. :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MyISAM не поддерживает транзакции? (( что насчёт innoDB?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]