MySQL тъпо InnoDB

9 отговора 635 прегледа
#1

MySQL тъпо InnoDB

Стигам до следния извод:
ако имаш база със 100 таблици от които
99 от тип InnoDB и 1 от тип MyISAM,
тогава транзакциите неработят в цялата база!!

Правилно ли съм открил топлата вода или още никой не се е сблъскал с този проблем?

Много тъпо от страна на MySQL-а....

asl-bg.com - шантаво като теб ;)
Отговор
в отговор на нeщacтeн #2

Re: MySQL тъпо InnoDB

Какво разбираш под "неработят"?

salle.online.bg/sig

Редактирано от salle на

Отговор
в отговор на salle #3

Re: MySQL тъпо InnoDB

Неработят - просто няма транзакции все едно всичките таблици са от тип MyISAM.
Дали аз бъркам нещо? Имаш ли база с двата типа таблици в която използваш транзакции (и си работят)?

asl-bg.com - шантаво като теб ;)
Отговор
в отговор на нeщacтeн #4

Re: MySQL тъпо InnoDB

Ами аз лично смятам, че ако някой е решил да прави подобно нещо с няколко вида таблици, ще трябва да си понесе и последствията. Ползваш InnoDB - имаш транзакции, не го ползваш - нямаш транзакции.
За конкретния твой случай, транзакциите ще засягат само InnoDB таблиците, но не съм 100 % сигурен, не ми е хрумвало да правя така.

Отговор
в отговор на Noxie #5

Re: MySQL тъпо InnoDB

Ако сам си правиш базата ок. Правиш ги всичките InnoDB и готово.
Но ако имаш (както е при мен) един скрипт който създава таблица от "стария" тип MyISAM в база с InnoDB таблици и хоп - изненада, транзакциите спират да работят. Върви се сети каква е причината.
Освен това аз държа да имам таблици от тип Heap. Трябва да пробвам дали и при тях се получава този гаден страничен ефект. Ако е така ще се наложи да ги преместя в отделна база.
Молбата ми към всички е, ако имате възможност да създадете таблица от тип Heap (или MyISAM) в база където всички други таблици са от тип InnoDB и да пробвате дали транзакциите продължават да работят.
Благодаря!


asl-bg.com - шантаво като теб ;)

Редактирано от нeщacтeн на

Отговор
в отговор на нeщacтeн #6

Re: MySQL тъпо InnoDB

Значи пробвах го. InnoDB таблиците са си под транзакции, действат си върху тях. Ако изпълниш rollback, изписва съобщение, че не всички таблици ще бъдат засегнати от това. Данните въведени в InnoDB се rollback-ват, тези от MyISAM не. Съвсем логично струва ми се.
3.23.56-max-log
Slackware Linux

Отговор
в отговор на Noxie #7

Re: само да добавя ...

Транзакциите работят:
1. Винаги!
2. Само за таблиците, които ги поддържат

1. AND 2.

Както чудесно ти отговори Noxie ако имаш транзакция, която променя няколко таблици от различен тип и направиш ROLLBACK ще получиш съобщение, че някои от таблиците не го поддържат. (в случай на COMMIT няма никакво значение)

salle.online.bg/sig
Отговор
в отговор на Noxie #8

Re: MySQL тъпо InnoDB

Noxie мерси за пробата и на salle за отговора. Значи при вас няма проблем. Все пак оставам със съмнения, че при голямо натоварване (таблици с над 1-2 милиона реда) транзакциите на mySQL-а не се държат прилично :) И се мъча да си обесня това поведение, затова и повдигнах въпроса. Продължавам да тествам и ще ви информирам, ако открия нещо интересно.
Поздрави!

asl-bg.com - шантаво като теб ;)
Отговор
в отговор на нeщacтeн #9

Re: Ама дай нещо конкретно ...

Кажи защо така смяташ? Дай някаква интифа за какво иде реч.
Ако е бъг да го оправим. На всичкото отгоре транзакциите по дефиниция или успяват (commit) или не (rollback). Не може да има такова животно като "не съвсем добра" транзакция.

salle.online.bg/sig
Отговор
в отговор на нeщacтeн #10

Re: MySQL тъпо InnoDB

Работи си в смесен режим без никакви грижи!

Да не би да забравяш да пуснеш BEGIN и след това COMMIT (или ROLLBACK)?

Имам точно такъв сценарий - една ДБ, повечето таблици са MyISAM, а няколко са BDB. Направил съм го така за да е по-икономично от към ресурси, а и MyISAM май имаха некои предимства (вече не помня точно какво четох из хелповете).

Та значи BDB таблиците ми са логически свързани и инфото което се вкарва в тях трябва или да влезе във всичките едновременно и успешно или изобщо да не влиза. До сега не съм имал никакви проблеми. Вярно - не съм ги подлагал на зверски натоварвания, но вярвам че ще издържат.

Отговор