MyISAM / InnoDB mixed?

MyISAM / InnoDB mixed?

am 08.03.2007 11:32:46 von Jens Riedel

Hallo,

ich bin gerade dabei, eine sehr große MySQL5-DB auf einen neuen Server
zu hieven.
Dabei sollen eigentlich alle Tabellen von MyISAM nach InnoDB umgestellt
werden sowie der Zeichensatz von latin1 nach utf8.

Problem: Es sind einige Tabellen dabei, welche Text-Felder mit FULL
INDEX haben, was ja auf InnoDB nicht möglich ist, soweit ich weiß.
Da diese Tabellen eigentlich kein RowLocking benötigen, überlege ich
nun, sie im MyISAM-Format zu lassen.

Ist es aus irgendeinem Grund problematisch, in einer DB InnoDB- und
MyISAM-Tabellen zu mischen?

Vielen Dank und Gruß,
Jens

Re: MyISAM / InnoDB mixed?

am 08.03.2007 11:58:24 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: MyISAM / InnoDB mixed?

am 08.03.2007 12:26:22 von Christian Kirsch

Am 08.03.2007 11:32 schrieb Jens Riedel:
> Hallo,
>
> ich bin gerade dabei, eine sehr große MySQL5-DB auf einen neuen Server
> zu hieven.
> Dabei sollen eigentlich alle Tabellen von MyISAM nach InnoDB umgestellt
> werden sowie der Zeichensatz von latin1 nach utf8.
>

Warum?

> Problem: Es sind einige Tabellen dabei, welche Text-Felder mit FULL
> INDEX haben, was ja auf InnoDB nicht möglich ist, soweit ich weiß.
> Da diese Tabellen eigentlich kein RowLocking benötigen, überlege ich
> nun, sie im MyISAM-Format zu lassen.
>
> Ist es aus irgendeinem Grund problematisch, in einer DB InnoDB- und
> MyISAM-Tabellen zu mischen?

AFAIK: Nein.

--
Christian Kirsch
Heise Zeitschriften Verlag * iX-Magazin
Tel +49-511-5352-590 Fax +49-30-78702289
KEINE ANNAHME VON DOC-DATEIEN * NO DOC FILES, PLEASE

Mindestinformationen im geschäftlichen E-Mail-Verkehr nach §37a HGB:
Heise Zeitschriften Verlag GmbH & Co. KG
Registergericht: Amtsgericht Hannover HRA 26709

Persönlich haftende Gesellschafterin:
Heise Zeitschriften Verlag Geschäftsführung GmbH
Registergericht: Amtsgericht Hannover, HRB 60405
Geschäftsführer: Ansgar Heise, Steven P. Steinkraus, Dr. Alfons Schräder

Re: MyISAM / InnoDB mixed?

am 08.03.2007 13:04:28 von Jens Riedel

Christian Kirsch schrieb:

>> Dabei sollen eigentlich alle Tabellen von MyISAM nach InnoDB umgestellt
>> werden sowie der Zeichensatz von latin1 nach utf8.
>
> Warum?

Weil wir nun teilweise Daten bekommen, die in latin1 seltsam aussehen
und die Software, die die DB benutzt, um Transaktionen erweitert wurde
(die aber nur auf einigen Tabellen ausgeführt werden).

Gruß,
Jens

Re: MyISAM / InnoDB mixed?

am 08.03.2007 16:08:57 von Andreas Scherbaum

Jens Riedel wrote:
> Christian Kirsch schrieb:
>
>>> Dabei sollen eigentlich alle Tabellen von MyISAM nach InnoDB umgestellt
>>> werden sowie der Zeichensatz von latin1 nach utf8.
>>
>> Warum?
>
> Weil wir nun teilweise Daten bekommen, die in latin1 seltsam aussehen
> und die Software, die die DB benutzt, um Transaktionen erweitert wurde
> (die aber nur auf einigen Tabellen ausgeführt werden).

Dann wollt ihr aber keine Transaktionen haben. Entweder alles in eine
Transaktion oder gar nichts: nur die Hälfte, die in transaktionsfähigen
Tabellen geschrieben wird, macht keinen Sinn.

Das ist genau das Problem, das du erhälst, wenn du InnoDB und MyISAM
Tabellen miteinander mischt.


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)

Re: MyISAM / InnoDB mixed?

am 08.03.2007 17:03:21 von Florian Laws

On 2007-03-08, Andreas Scherbaum wrote:
> Jens Riedel wrote:
>> Christian Kirsch schrieb:
>>
>>>> Dabei sollen eigentlich alle Tabellen von MyISAM nach InnoDB umgestellt
>>>> werden sowie der Zeichensatz von latin1 nach utf8.
>>>
>>> Warum?
>>
>> Weil wir nun teilweise Daten bekommen, die in latin1 seltsam aussehen
>> und die Software, die die DB benutzt, um Transaktionen erweitert wurde
>> (die aber nur auf einigen Tabellen ausgeführt werden).
>
> Dann wollt ihr aber keine Transaktionen haben. Entweder alles in eine
> Transaktion oder gar nichts: nur die Hälfte, die in transaktionsfähigen
> Tabellen geschrieben wird, macht keinen Sinn.

Solange die Transaktionen nur transaktionsfähige Tabellen berühren,
sehe ich das Problem nicht.

Grüße,

Florian

Re: MyISAM / InnoDB mixed?

am 08.03.2007 17:38:48 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: MyISAM / InnoDB mixed?

am 08.03.2007 18:36:58 von Robert Klemme

On 08.03.2007 17:38, Andreas Kretschmer wrote:
> begin Florian Laws wrote:
>>> Dann wollt ihr aber keine Transaktionen haben. Entweder alles in eine
>>> Transaktion oder gar nichts: nur die Hälfte, die in transaktionsfähigen
>>> Tabellen geschrieben wird, macht keinen Sinn.
>
>> Solange die Transaktionen nur transaktionsfähige Tabellen berühren,
>> sehe ich das Problem nicht.

Die Datenbank wird damit kein Problem haben. Wenn aber die Anwendung
davon ausgeht, dass alle Änderungen transaktional gemacht werden, können
ganz schön seltsame Sachen passieren...

> Dann aber auch dem Kunden erklären, daß das Program nur a bissl
> transaktionssicher ist: nicht bei Nebel und nur im Temperaturbereich von
> 12-16°C oder so...

Genau!
http://de.wikipedia.org/wiki/ACID_%28Informatik%29

Ciao

robert

Re: MyISAM / InnoDB mixed?

am 08.03.2007 20:44:41 von Stefan+Usenet

On Thu, 8 Mar 2007 17:38:48 +0100 Andreas Kretschmer wrote:
> > Solange die Transaktionen nur transaktionsfähige Tabellen berühren,
> > sehe ich das Problem nicht.

> Dann aber auch dem Kunden erklären, daß das Program nur a bissl
> transaktionssicher ist:

Naja, wenn Du zB. ein Katalogsystem hast, aus dem bestellt wird,
dann ist ein Volltext-Index auf den Produktdaten etwas feines.
Transaktionen werden aber zB nur fuer die Bestelldaten benoetigt,
die man ohne weiteres allesamt in InnoDB-Tabellen halten kann.

Nachdenken sollte man jedenfalls genauer darueber, das schon.

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich

Der glitzernde Chef will Stefan. Das muß ja wohl einen Grund haben?
(Sloganizer)

Re: MyISAM / InnoDB mixed?

am 08.03.2007 23:03:58 von Florian Laws

On 2007-03-08, Robert Klemme wrote:
> On 08.03.2007 17:38, Andreas Kretschmer wrote:
>> begin Florian Laws wrote:
>>>> Dann wollt ihr aber keine Transaktionen haben. Entweder alles in eine
>>>> Transaktion oder gar nichts: nur die Hälfte, die in transaktionsfähigen
>>>> Tabellen geschrieben wird, macht keinen Sinn.
>>
>>> Solange die Transaktionen nur transaktionsfähige Tabellen berühren,
>>> sehe ich das Problem nicht.
>
> Die Datenbank wird damit kein Problem haben. Wenn aber die Anwendung
> davon ausgeht, dass alle Änderungen transaktional gemacht werden, können
> ganz schön seltsame Sachen passieren...

Man muss dann halt ein bisschen nachdenken beim Anwendung programmieren,
anstatt einfach von was auszugehen.

Grüße,

Florian

Re: MyISAM / InnoDB mixed?

am 09.03.2007 07:08:30 von Jens Riedel

Andreas Scherbaum schrieb:

> Dann wollt ihr aber keine Transaktionen haben.

Doch.

> Entweder alles in eine
> Transaktion oder gar nichts: nur die Hälfte, die in transaktionsfähigen
> Tabellen geschrieben wird, macht keinen Sinn.

Das ist mir schon klar. Bei den MyISAM-Tabellen handelt es sich um
Tabellen, in die sehr große Datenmengen aus Logfiles geschrieben und
dann weiter gefiltert werden, wobei Indizes auf TEXT-Felder genutzt
werden etc., was InnoDB hier ungünstig erscheinen lässt.
Auf diese Tabellen werden keine Transaktionen ausgeführt, alle anderen
Tabellen sind dagegen InnoDB-Tabellen.

> Das ist genau das Problem, das du erhälst, wenn du InnoDB und MyISAM
> Tabellen miteinander mischt.

Aber wenn ich MyISAM nur für die Nicht-Transaktions-Tabellen ausführe,
habe ich keins, oder? Das ist ja genau meine Frage, ob die Datenbank
irgendwas gegen das bloße Mischen der Tabellentypen hat.

Gruß,
Jens

Re: MyISAM / InnoDB mixed?

am 09.03.2007 08:35:16 von Kai Ruhnau

Jens Riedel wrote:
> Ist es aus irgendeinem Grund problematisch, in einer DB InnoDB- und
> MyISAM-Tabellen zu mischen?

Nein.
Es gibt sogar gar nicht so unügliche Replikationssetups, in denen der
Master InnoDB benutzt, der Slave dagegen für die gleiche Tabelle MyISAM
um Fulltext-Indizes nutzen zu können. Gelesen wird dann vom Slave,
geschrieben mit aller Transaktionssicherheit auf den Master.

Grüße
Kai

Re: MyISAM / InnoDB mixed?

am 09.03.2007 11:04:05 von Axel Schwenke

Jens Riedel wrote:
> Andreas Scherbaum schrieb:
>
>> Dann wollt ihr aber keine Transaktionen haben.
....

>> Das ist genau das Problem, das du erhälst, wenn du InnoDB und MyISAM
>> Tabellen miteinander mischt.
>
> Aber wenn ich MyISAM nur für die Nicht-Transaktions-Tabellen ausführe,
> habe ich keins, oder? Das ist ja genau meine Frage, ob die Datenbank
> irgendwas gegen das bloße Mischen der Tabellentypen hat.

Laß dich nicht von den Andreassen aufziehen.

Es ist vollkommen legitim und sogar empfohlene Praxis, verschiedene
Tabellen-Typen zu mischen bzw. sich für jede Tabelle die jeweils am
besten passende Engine herauszusuchen. Genau dafür *hat* MySQL ja
die verschiedenen Engines.

Da PostgreSQL nur einen Tabellen-Typ kennt, muß ein PostgreSQL-Troll
das natürlich auch als Vorteil herausstellen.


XL

Re: MyISAM / InnoDB mixed?

am 09.03.2007 12:04:52 von Andreas Scherbaum

Florian Laws wrote:
> On 2007-03-08, Robert Klemme wrote:
>>
>> Die Datenbank wird damit kein Problem haben. Wenn aber die Anwendung
>> davon ausgeht, dass alle Änderungen transaktional gemacht werden, können
>> ganz schön seltsame Sachen passieren...
>
> Man muss dann halt ein bisschen nachdenken beim Anwendung programmieren,
> anstatt einfach von was auszugehen.

Du, mal eine Frage: wozu habe ich denn eine Datenbank?
Um mir trotzdem in meiner Anwendung die Frage zu stellen, ob jetzt alle meine
Daten sicher zurückgerollt werden oder vielleicht doch nur einige?


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)

Re: MyISAM / InnoDB mixed?

am 09.03.2007 12:07:55 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: MyISAM / InnoDB mixed?

am 09.03.2007 12:09:11 von Andreas Scherbaum

Jens Riedel wrote:
> Andreas Scherbaum schrieb:
>
>> Das ist genau das Problem, das du erhälst, wenn du InnoDB und MyISAM
>> Tabellen miteinander mischt.
>
> Aber wenn ich MyISAM nur für die Nicht-Transaktions-Tabellen ausführe,
> habe ich keins, oder? Das ist ja genau meine Frage, ob die Datenbank
> irgendwas gegen das bloße Mischen der Tabellentypen hat.

Nein, du kannst die Tabellentypen parallel in einer Datenbank
nebeneinander nutzen.


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)

Re: MyISAM / InnoDB mixed?

am 09.03.2007 12:16:43 von Andreas Scherbaum

Axel Schwenke wrote:
>
> Laß dich nicht von den Andreassen aufziehen.
>
> Es ist vollkommen legitim und sogar empfohlene Praxis, verschiedene
> Tabellen-Typen zu mischen bzw. sich für jede Tabelle die jeweils am
> besten passende Engine herauszusuchen. Genau dafür *hat* MySQL ja
> die verschiedenen Engines.
>
> Da PostgreSQL nur einen Tabellen-Typ kennt, muß ein PostgreSQL-Troll
> das natürlich auch als Vorteil herausstellen.

Hey, Axel, kannst du auch mal irgendwann aufhören, jedem mit Querschüssen
zu belegen, der etwas gegen dein ach so heiliges Datenbanksystem sagt?

Wenn du nicht dazu in der Lage sein solltest, unterlege doch deine Aussagen,
das ich hier irgendwo PostgreSQL herausstelle, bitte mit Msg-IDs. Danke.

Bis dahin: du trollst hier.


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)