|
|
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
Всем привет. Не раз обсуждал тему с ведущим программистом (прошлым) по поводу не откатывания изменений при возникновении ошибки в момент миграции баз (yii) на основной сервер. И мне не раз отвечали, что видимо это происходит из-за ошибки на уровне php, а не базы. Ну так, значит так... мне то пофигу... я просто аккуратнее проверяю и всё (фиг знает как там yii внутри это рулит... полагаюсь на опыт более опытного коллеги). Но тут вдруг... сейчас пришлось мне с транзакциями помучиться снова... Я стартую транзакцию... а после её отката (при неудачном выполнении запроса) вижу что всё осталось как есть... Решил вручную каждый шаг провести и проверить... А в момент выполнения запроса оно, блин, пишет данные и не дожидается команды commit :) Тут меня осенило, что что-то не так с транзакциями... и оказалось что MyISAM не поддерживает транзакции. Решил, пока проект только начал делать, перевести все таблицы на движок innoDB, теперь вот возникает вопрос, а какие подводные камни меня могут ждать с непривычки на этом движке. Есть ли какие-то особенности в работе с ним, или рекомендации опытных людей? P.S. Оказывается, иногда достаточно пол часа, что бы мир перевернулся Кстати... я ещё не пробовал AUTOCOMMIT в ноль скидывать в MyISAM... Может он сможет помочь в сохранении целостности данных (если вообще работает) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 13:22:29 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
MyISAM не поддерживает транзакции ни в каком виде, AUTOCOMMIT не спасет. Из широкоупотребимых движков транзакции поддерживает только InnoDB. И вообще, дока рулит - http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 13:31:30 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
Програмёра какие подводные камни меня могут ждать с непривычки на этом движкеКстати, обратите внимание на уровни изоляции транзакций в InnoDB, в т.ч. на тот, который установлен по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 13:38:13 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
А вы хорошо подумали ? Зчем вам в php транзакции? Просто по привычке ? Это же не дельфи. Тут нет постоянно запущенного приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 13:40:50 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
netwindА вы хорошо подумали ? Зчем вам в php транзакции? Просто по привычке ? Это же не дельфи. Тут нет постоянно запущенного приложения.Зачем - как раз понятно. Чтобы в случае внезапной смерти скрипта в базе не оказалась половина заказа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 13:42:42 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
miksoft, чота статистически мне кажется нет там никаких "заказов и клиентов", обычное веб-слесарничество. к тому же скрипты не падают внезапно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 13:50:10 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
netwindmiksoft, чота статистически мне кажется нет там никаких "заказов и клиентов", обычное веб-слесарничество. к тому же скрипты не падают внезапно. Дали заказ на новом месте работы. CMS местная уже есть... Но она непереносимая, потому стоит вопрос в написании новой CMS (не подумайте, прошлую CMS писал не я... она уже более чем десятилетней давности, постоянно дорабатываемая кем-то новым), при этом переносимой и с возможностью модульности и доработки. Транзакции нужны для контроля записи в базу, и в том числе заказов (в будущем). Сейчас всё на этапе построения дерева сайта, так как клиентам (да и мне лично) нравится внешнее представление существующей CMS. Тут всё из себя представляет дерево, что позволяет быстро сориентироваться что и куда хочется добавить или где изменить. Сами же модули привязываются к самому дереву. Потому, для каждой странички/товара/etc. требуется обновление двух таблиц, а этого одним запросом даже в mysql сделать невозможно вроде, не говоря уже про yii модели. Потому хочу быть уверен, что не случится, что данные в дерево сайта записались, а сопутствующие данные модуля были утеряны. Также транзакции я использую для функции переноса веток сайта и добавления тех самых веток, так как дерево хранится в формате nested sets, а потому для врезания новых данных или переноса старых требуется выполнение более чем одного запроса. Не хотелось бы, что бы например индексы сместились, а данные не вставились... Или ещё хуже, учитывая что я левые и правые индексы смещаю в разных запросах, может случиться что левые индексы сместятся, а в момент выполнения смещения правых индексов произойдёт ошибка и всё... дерево сломано... а дальше уже фиг знает чего ожидать :) Если пользователь после этого попробует с деревом что-то сотворить, то оно может не подлежать восстановлению. Так что всё делается в целях безопасности данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 14:35:01 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
netwindА вы хорошо подумали ? Зчем вам в php транзакции? Просто по привычке ? Это же не дельфи. Тут нет постоянно запущенного приложения. Постоянно запущенного? :) А что значит постоянно? считается ли скрипт, который при большой нагрузке на сервер отрабатывается за секунду, постоянно запущенным? )) Ведь я на протяжении всей этой секунды могу периодические запросы в базу кидать, и при этом быть заинтересованным в отсутствии порчи данных :) В то же время как приложение на делфи может быть постоянно запущено, но при этом будет выполнять один единственный запрос в день к базам, и потому его вообще не волнуют транзакции, так как выполнить запрос наполовину не возможно (или если и возможно как-то, то только намеренно и не так уж просто) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 14:40:30 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
Програмёр Постоянно запущенного? :) А что значит постоянно? считается ли скрипт, который при большой нагрузке на сервер отрабатывается за секунду, постоянно запущенным? )) Что написано - то и значит. Это на всякий случай уточнил. Зачастую у людей сползающих с других технологий, странные представления о вебе. И фреймворки настолько скрывают подробности что может возникнуть ложное мнение, о том что транзакции продолжаются между нажатиями на кнопки, как это было в дельфи. автортребуется обновление двух таблиц, а этого одним запросом даже в mysql сделать невозможно вроде Вообще-то можно. Но нужно смотреть конкретику. Вот еще одна характерная черта : перейдя в незнакомую область не попытались поискать альтернативу транзакциям. Ведь в php-mysql люди годами строят решения. Как-то же они должны эксплуатироваться, разве нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 14:53:01 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
miksoftПрограмёра какие подводные камни меня могут ждать с непривычки на этом движкеКстати, обратите внимание на уровни изоляции транзакций в InnoDB, в т.ч. на тот, который установлен по умолчанию. Ранее что-то подобное читал... сейчас ознакомился подробнее... В принципе принятый по умолчанию уровень изоляции (repeatable read) очень удобный. Иногда можно конечно подниматься до Serializable, но я пока не вижу видимой потребности в этом в повседневной жизни. Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 14:54:28 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
авторИногда можно конечно подниматься до Serializable, но я пока не вижу видимой потребности в этом в повседневной жизни. а как же мифическая безопасТность данных ? давайте, поднимайте ! устроим маразм в отдельно взятой отрасли ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 15:02:35 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
netwindПрограмёрПостоянно запущенного? :) А что значит постоянно? считается ли скрипт, который при большой нагрузке на сервер отрабатывается за секунду, постоянно запущенным? )) Что написано - то и значит. Это на всякий случай уточнил. Зачастую у людей сползающих с других технологий, странные представления о вебе. И фреймворки настолько скрывают подробности что может возникнуть ложное мнение, о том что транзакции продолжаются между нажатиями на кнопки, как это было в дельфи. автортребуется обновление двух таблиц, а этого одним запросом даже в mysql сделать невозможно вроде Вообще-то можно. Но нужно смотреть конкретику. Вот еще одна характерная черта : перейдя в незнакомую область не попытались поискать альтернативу транзакциям. Ведь в php-mysql люди годами строят решения. Как-то же они должны эксплуатироваться, разве нет ? По поводу первого - было бы странно иметь такое представление о вэбе спустя 3 года активной работы в данной области :) по второму - задать вопрос на данном форуме и есть поиск альтернативного решения (не просто же так я всю ситуацию с самого начала излагал :) ). Однако склоняюсь что альтернативного решения нету. "Вообще-то можно" - тут неверно выразился... UPDATE двух таблиц то вроде допустим (не помню), а вот insert в две таблицы выдаёт ошибку. "Ведь в php-mysql люди годами строят решения" - я тоже первые года полтора даже не знал что есть такая штука как транзакции... Точнее я что-то слышал, но мне это казалось чем-то излишним и непонятным, потому я даже не интересовался что это такое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 15:06:10 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрПо поводу первого - было бы странно иметь такое представление о вэбе спустя 3 года активной работы в данной области :) Но вы же как-то умудрились на Дефли писать с 2006 и не знать про них ? Всякое бывает. Хороший фреймворк способен годами изолировать программиста от того "как оно на самом деле". по второму - задать вопрос на данном форуме и есть поиск альтернативного решения (не просто же так я всю ситуацию с самого начала излагал :) ). Однако склоняюсь что альтернативного решения нету. все зависит от ситуации : часто бывает, что вебстудии держат сайты клиентов у себя на серверах(обычно вообще на одном). и скрипты, как ни странно, не падают внезапно. В этой ситуации вы сейчас принимаете решение, которое в будущем уменьшит "плотность" сайтов на глаз разика эдак в 4 из-за соответствующих накладных расходов на поддержку транзакций. Если отдельный проект дорогой - это нормально. Если массовые и халтурные - уже не очень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 15:13:10 |
|
||
|
MyISAM не поддерживает транзакции? (( что насчёт innoDB?
|
|||
|---|---|---|---|
|
#18+
netwind, В целом мысль понял ) вот только про делфи не понял :) Про кого я не знал, когда на дэлфи писал? Если вдруг что, на дэлфи это было просто играние. Никаких программ серъёзнее пэинта или имитации солнечной системы средствами openGL я там не писал Тогда я в целом программирование осваивал... в олимпиадах участвовал и т.д. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 15:43:47 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38633194&tid=1834895]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
95ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 349ms |

| 0 / 0 |
