Wechsel des Tabellentypes

Wechsel des Tabellentypes

am 25.06.2006 21:21:16 von matchello

Hallo zusammen,

ich habe folgendes Problem, ich würde gern alte von mir erstellte
Tabellen vom Typ MyISAM nach BDB ändern, derzeit habe ich MySQL 4.0.18
laufen (ein Wechsel nach PostgreSQL ist leider auf dem Server nicht
möglich).
Meine Frage nun, sollte dies problemlos klappen, oder gibt es irgendwas
das ich wissen sollte?
Der Wechsel selber lässt sich ja ganz einfach über ALTER TABLE
`tabelle` TYPE =3D bdb durchführen.


Vielen Dank im Vorraus,

Marcel

Re: Wechsel des Tabellentypes

am 25.06.2006 22:49:41 von Axel Schwenke

"matchello" wrote:
>
> ich habe folgendes Problem, ich würde gern alte von mir erstellte
> Tabellen vom Typ MyISAM nach BDB ändern

Zwischenfrage: Warum denn gerade BDB?

> derzeit habe ich MySQL 4.0.18
> laufen (ein Wechsel nach PostgreSQL ist leider auf dem Server nicht
> möglich).
> Meine Frage nun, sollte dies problemlos klappen, oder gibt es irgendwas
> das ich wissen sollte?

- BDB verwendet page-level-locking, das Locking-Verhalten ist also
etwas besser als bei MyISAM aber doch schlechter als bei InnoDB.

- BDB implementiert sekundäre Indizes als Verweise auf den PK. Du
solltest also einen möglichst kurzen PK verwenden. Gleiches Verhalten
bei InnoDB übrigens.

- Ebenfalls wie InnoDB unterstützt BDB keine Volltext- und Geo-Indizes.

- Da BDB mittlerweile Oracle gehört, wird die BDB-Unterstützung in
MySQL über kurz oder lang wohl wegfallen. Totes Pferd und so ;-)


XL

Re: Wechsel des Tabellentypes

am 25.06.2006 22:50:04 von Dominik Echterbruch

matchello wrote:
^^^^^^^^^
Wer?

> ich habe folgendes Problem, ich würde gern alte von mir erstellte
> Tabellen vom Typ MyISAM nach BDB ändern, derzeit habe ich MySQL 4.0.18

Warum BDB und nicht InnoDB?

> Meine Frage nun, sollte dies problemlos klappen, oder gibt es irgendwas
> das ich wissen sollte?

Ich habe vor einiger Zeit mal mit BDB rumgespielt und dabei so manches
seltsames Verhalten gehabt (z.B. waren Daten plötzlich nicht mehr da,
die nach einer erneuten Umwandlung in MyISAM aber wieder erschienen
usw.). Wenn sich da also in den letzten Jahren nicht massiv etwas getan
hat, kann ich von BDB nur abraten.

> Der Wechsel selber lässt sich ja ganz einfach über ALTER TABLE
> `tabelle` TYPE = bdb durchführen.

Gut, InnoDB ist etwas aufwändiger, weil du erst ein bißchen Konfig
schrauben mußt, aber dafür ist es mittlerweile der offiziell von MySQL
genutzte Tabellentyp. Gibt es die Möglichkeit, auf dem Server InnoDB zu
verwenden? Dann würde ich dazu raten.


Grüße,
Dominik
--
Norbert Melzer in d.c.d.mysql:
F: Wie verstehe ich diese FAQ am besten?
A: Studieren Sie Datanbank-Design und lesen Sie anschliessend alles nochmal

Re: Wechsel des Tabellentypes

am 25.06.2006 23:12:52 von Peter Marbaise

matchello schrieb:
> Hallo zusammen,
>
> ich habe folgendes Problem, ich würde gern alte von mir erstellte
> Tabellen vom Typ MyISAM nach BDB ändern, derzeit habe ich MySQL 4.0.18
> laufen (ein Wechsel nach PostgreSQL ist leider auf dem Server nicht
> möglich).

im laufenden Betrieb der Tabelle würde mich das wundern, aber warum
nicht ein dump auf die Tabelle und neu erstellen als Type=bdb und Daten
neu einlesen?

ciao Peter
--
WWW: http://www.marbaise.de Uptime: 109 Days 23 Hours

Re: Wechsel des Tabellentypes

am 26.06.2006 12:02:30 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: Wechsel des Tabellentypes

am 26.06.2006 15:20:33 von Axel Schwenke

Andreas Kretschmer wrote:
> begin Axel Schwenke schrieb:
>> - Da BDB mittlerweile Oracle gehört, wird die BDB-Unterstützung in
>> MySQL über kurz oder lang wohl wegfallen. Totes Pferd und so ;-)
>
> Bzgl. InnoDB bist Du jetzt aber auf sehr, sehr dünnem Eis. Wenn da das
> Pferd reinfällt, ist es auch tot.

Nope. Mit InnoBase hat MySQL AB einen Vertrag, der es MySQL einerseits
gestattet, InnoDB kommerziell zu vetreiben und andererseits Support
(Bugfixes etc.) seitens InnoBase garantiert. Für BDB gab es niemals
einen derartigen Vertrag, deswegen ist BDB auch ausschließlich in den
GPL-Builds von MySQL drin.

Außerdem ist InnoDB zumindest derzeit die beste Storage Engine für
MySQL und eine Menge Kunden setzen es ein. BDB war eher proof-of-
concept (im wesentlichen wollte man wohl die Tauglichkeit der SE-
Architektur testen/demonstrieren). Ich kenne auch niemanden, der MySQL
mit BDB ernsthaft einsetzt.

Somit hat MySQL AB ein deutlich größeres Interesse daran, InnoDB weiter
zu unterstützen, als BDB. Langfristig wird MySQL aber wohl eher die
eigenen Engines (z.B. das auf der UC vorgestellte [1] Falcon) pushen.
Aber irgendwann werden auch Altlasten entsorgt werden (müssen). Und je
kleiner Featureset und Userbasis einer Engine sind, desto eher wird es
sie treffen.

[1] http://mike.kruckenberg.com/archives/2006/04/jim_starkey_int .html


XL