2009-05-08 13 views
5

Bei Verwendung von MySQL 5.1 Enterprise nach Jahren der Verwendung anderer Datenbankprodukte wie Sybase, Infomix, DB2; Ich stoße auf Dinge, die MySQL einfach nicht tut. Zum Beispiel kann es nur einen EXPLAIN-Abfrageplan für SELECT-Abfragen generieren.MySQL-Einschränkungen

Welche anderen Dinge sollte ich beachten?

+1

Das kursiv geschriebene Wort "real" wird diese Frage als subjektiv und argumentativ abgeschlossen. – chaos

+0

ok, geändert * real * zu closed-source –

+0

Ich würde vorschlagen, diese Phrase vollständig zu entfernen. "Jahre der Verwendung von Datenbankprodukten wie ..." –

Antwort

4

Volle äußere Verbindungen. Aber Sie können immer noch eine linke äußere Join Union rechts äußere Join tun.

7

Sie können hier einen Blick auf lange Liste nehmen: MySQL Gotchas

+0

Gute Liste, aber möglicherweise nicht 100% genau für MySQL 5.0. –

+0

richtig, ich habe die mysql-version oben geklärt –

1

Lassen Sie für Rollen oder Gruppen

1

Es ist nicht ein Vermögen kosten. Versuchen Sie, eine geclusterte Website auf mehreren Computern mit mehreren Kernen in einer Oracle-Datenbank zu erstellen. Autsch.

1

Es tut immer noch nicht CHECK-Einschränkungen!

2

Eine Sache, die ich spät in einem Projekt lief, ist, dass MySQL-Datumstypen keine Millisekunden speichern können. Datums- und Zeitstempel werden nur in Sekunden aufgelöst! Ich kann mich nicht an die genauen Umstände erinnern, dass dies aufkam, aber ich musste schließlich ein int speichern, das in ein Datum (komplett mit Millisekunden) in meinem Code umgewandelt werden konnte.

Die MySQL-JDBC-Treiber-Cache-Ergebnisse standardmäßig, bis zu dem Punkt, dass Ihr Programm nicht mehr genügend Arbeitsspeicher (OutOfMemory-Ausnahmen). Sie können deaktivieren, aber Sie müssen es tun, indem sie einige ungewöhnliche Parameter in der Anweisung vorbei, wenn Sie es schaffen:

Statement sx = c.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,java.sql.ResultSet.CONCUR_READ_ONLY); 
sx.setFetchSize(Integer.MIN_VALUE); 

Wenn Sie das tun, wird der JDBC-Treiber nicht Cache-Ergebnisse im Speicher und Sie kann große Anfragen ABER was tun, wenn Sie ein ORM-System verwenden? Sie erstellen die Anweisungen nicht selbst und können daher nicht zwischenspeichern. Was im Grunde bedeutet, dass Sie völlig verwirrt sind, wenn Sie ORM-System versuchen, etwas mit vielen Datensätzen zu tun.

Wenn sie etwas Sinn hatten, würden sie das durch die JDBC-URL konfigurierbar machen. Naja.