Eddie: MyISAM vs. InnoDB - und beide Typen in derselben DB

Hallo allerseits,

ich habe eine Frage zu den beiden Tabellentypen MyISAM und InnoDB. Leider habe ich nichts darüber gefunden, ob es Probleme gibt, wenn ich die Typen in einem Projekt vermische - und wie ich das am besten mache.

Im konkreten Fall habe ich
A) eine sehr große Tabelle (> 6.000.000 Einträge), die praktisch ausschließlich SELECTs bedienen muss. Das wäre dann wohl ein Indikator fuer MyISAM.
B) viele weitere, kleinere Tabellen, einige mit fast nur SELECT-Zugriffen, andere, die auch  INSERTs oder UPDATEs abbekommen.

Und natürlich sind alle mittels Fremdschlüsseln verbunden, die ja aber von MyISAM nicht realisiert werden:

B1------>A1------>B2
InnoDB    MyISAM   InnoDB

Wie wirkt sich das dann aus? Bekomme ich da Probleme, oder kann ich mit so einem Aufbau problemlos arbeiten?

Mir ist ehrlich gesagt nicht ganz klar, an welcher Stelle die Fremdschlüssel verwaltet werden: bei der Quelltabelle (B1) oder bei der Zieltabelle (A1)? Oder dazwischen? Mmmhh...

Danke für eure Hilfe,
Eddie

--
Old men and far travforelers may lie with authority.
  1. hi,

    A) eine sehr große Tabelle (> 6.000.000 Einträge), die praktisch ausschließlich SELECTs bedienen muss. Das wäre dann wohl ein Indikator fuer MyISAM.
    B) viele weitere, kleinere Tabellen, einige mit fast nur SELECT-Zugriffen, andere, die auch  INSERTs oder UPDATEs abbekommen.

    Und natürlich sind alle mittels Fremdschlüsseln verbunden, die ja aber von MyISAM nicht realisiert werden

    Also kannst du die Nutzung von Fremdschlüssel knicken.

    B1------>A1------>B2
    InnoDB    MyISAM   InnoDB

    Mir ist ehrlich gesagt nicht ganz klar, an welcher Stelle die Fremdschlüssel verwaltet werden: bei der Quelltabelle (B1) oder bei der Zieltabelle (A1)? Oder dazwischen? Mmmhh...

    Du kannst keinen Fremdschlüssel haben, der sich von einer MyISAM- auf eine InnoDB-Tabelle bezieht oder umgekehrt.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      A) eine sehr große Tabelle (> 6.000.000 Einträge), die praktisch ausschließlich SELECTs bedienen muss. Das wäre dann wohl ein Indikator fuer MyISAM.
      B) viele weitere, kleinere Tabellen, einige mit fast nur SELECT-Zugriffen, andere, die auch  INSERTs oder UPDATEs abbekommen.

      Und natürlich sind alle mittels Fremdschlüsseln verbunden, die ja aber von MyISAM nicht realisiert werden

      Also kannst du die Nutzung von Fremdschlüssel knicken.

      Geht es hier nicht um referentielle Integrität, die durch das DBMS realisiert werden soll? Fremdschlüssel ist eine Definitionssache... solange die ohne DBMS-Unterstützung laufen, sehe ich da keine Abhängigkeiten.

      B1------>A1------>B2
      InnoDB    MyISAM   InnoDB

      Mir ist ehrlich gesagt nicht ganz klar, an welcher Stelle die Fremdschlüssel verwaltet werden: bei der Quelltabelle (B1) oder bei der Zieltabelle (A1)? Oder dazwischen? Mmmhh...

      Du kannst keinen Fremdschlüssel haben, der sich von einer MyISAM- auf eine InnoDB-Tabelle bezieht oder umgekehrt.

      Warum nicht?

      Ich vermute, Du meinst, eine durch das DBMS gegebene RI funktioniert nicht mit MyISAM- und InnoDB-Tabellen gemischt...

      Nick

      --
      --------------------------------------------------
      http://www.xilp.eu
      XILP Internet Links People
      Dein persoenliches privates Netzwerk
      aus Freunden, Verwandten, Bekannten und Kollegen.
      --------------------------------------------------
      Hamburg Berlin München
      1. hi,

        Geht es hier nicht um referentielle Integrität, die durch das DBMS realisiert werden soll? Fremdschlüssel ist eine Definitionssache... solange die ohne DBMS-Unterstützung laufen, sehe ich da keine Abhängigkeiten.

        Ich gehe schon davon aus, dass Foreign Key Constraints nach der Definition von MySQL gemeint sein sollten.

        Ich vermute, Du meinst, eine durch das DBMS gegebene RI funktioniert nicht mit MyISAM- und InnoDB-Tabellen gemischt...

        Ja, genau das.
        Oder hast du gegenteilige Info?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Geht es hier nicht um referentielle Integrität, die durch das DBMS realisiert werden soll? Fremdschlüssel ist eine Definitionssache... solange die ohne DBMS-Unterstützung laufen, sehe ich da keine Abhängigkeiten.

          Ich gehe schon davon aus, dass Foreign Key Constraints nach der Definition von MySQL gemeint sein sollten.

          Okay.

          Ich vermute, Du meinst, eine durch das DBMS gegebene RI funktioniert nicht mit MyISAM- und InnoDB-Tabellen gemischt...

          Ja, genau das.
          Oder hast du gegenteilige Info?

          Nein, weder noch. Sonst hätte ich dazu etwas geschrieben.

          Mir ging es nur darum, zu klären, was genau gemeint war, da der OP von Fremdschlüsseln ohne weitere Erläuterung gesprochen hat.

          Und ein normaler Bezug ohne RI/FKC sollte ja funktionieren...

          Nick

          --
          --------------------------------------------------
          http://www.xilp.eu
          XILP Internet Links People
          Dein persoenliches privates Netzwerk
          aus Freunden, Verwandten, Bekannten und Kollegen.
          --------------------------------------------------
          Hamburg Berlin München