Weiter Zurück [Inhalt] Online Suche im Handbuch

18. Neuigkeiten bei MySQL 3.23

MySQL 3.23 leutet eine neue Generation von MySQL ein, die nun gänzlich den Kunderschuhen entwachsen ist. Das sieht man daran, daß MySQL nun Eigenschaften besitzt, die man nirgendwo sonst finden kann: Welche SQL Datenbank arbeitet schon mit vollen 64 Bit Breite und Datenbankgrößen, die jenseits des physikalisch machbaren liegt ? Viel Wert wurde auch in die weitere Entwicklung in Richtung ANSI SQL 92 gelegt. So werden nun viele wichtige JOIN-Typen unterstützt. Noch mehr Performance durch die nun fast beliebige Skalierbarkeit (Mehrere CPU´s, Multi Threads, 64 Bit...) machen MySQL inzwischen einzigartig. Hier nun die wesentlichen Änderungen der neuen Generation von MySQL 3.23 gegenüber den älteren Versionen:

  1. Volle Multi-Thread Unterstützung für Kernel-Threads. Das bedeutet, daß MySQL mit der Zahl der CPU´s im System skaliert. Das macht sich insbesondere bei komplexen Select-Statements auf Internet-Servern bemerkbar.
  2. C, C++, Eiffel, Perl, PHP, Python und TCP API´s sind verfügbar. Siehe Kapitel MySQL Client Werkzeuge
  3. MySQL ist auf beliebige Plattformen bereits portiert. Siehe Kapitel Betriebssysteme für MySQL
  4. Viele Typen für Spalten: signed, unsigned integer, 1,2,3,4 und 8 Byte lange Zahlen, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET und ENUM Typen. Siehe Kapitel CREATE
  5. Sehr schnelle JOINS, da eine optimierte "one-sweep multi-join" Routine implementiert ist.
  6. Volle Operatoren und Funktionsunterstützung im SELECT und WHERE Teil der Abfragen. Beispiel:
          mysql> SELECT CONCAT(first_name, " ", last_name) FROM tbl_name
                     WHERE income/dependents > 10000 AND age > 30;
    
  7. SQL Funktionen sind in einer hochoptimierten Klassenbibliothek implementiert und sollten so schnell wie das theoretische Limit der Hardware sein. Normalerweise wird während und nach einer Abfrage kein Speicher angefordert bzw. freigegeben.
  8. Unterstützung für SQL GROUP BY und ORDER BY Ausdrücke. Unterstützung für Aggregatfunktionen, wie COUNT(), AVG(), STD(), SUM(), MAX() und MIN().
  9. Unterstützung für LEFT OUTER JOIN mit ANSI SQL und ODBC Syntax.
  10. Es dürfen Tabellen von verschiedenen Datenbanken in derselben Abfrage erfolgen (Ab Version 3.22).
  11. Das Privilegien und Passwort System ist sehr flexibel und sicher. Es erlaubt HOST basierte Überprüfug der Abfragen. Verschlüsselung der Passworte ist selbstverständlich.
  12. ODBC (Open Database Connectivity) für Windows 95/98/NT (mit Quellcode) ist verfügbar. Volle (und mehr) Unterstützung des ODBC 2.5 Standards von Microsoft. Access Anbindung möglich. Siehe Kapitel ODBC Unterstützung
  13. Sehr schnelle B-TREE disk-tables mit Indexkompression
  14. 16 Indizes pro Tabelle sind erlaubt. Jeder Index kann aus bis zu 15 Spalten oder Teilen von Spalten bestehen. Die maximale Länge ist 256 Bytes, kann aber durch neue Kompilation erweitert werden. Ein Index kann ein Prefix eines CHAR oder VARCHAR Feldes benutzen.
  15. Feste und variable Einträge (Felder) ersparen viele Speicherplatz
  16. Speicherresidente Hashtabellen, die als tempöräre Tabellen abgelegt werden.
  17. Unterstützung für sehr große Datenbanken. Einige Datenbanken enthalten 50.000.000 Einträge.
  18. Alle Spalten besitzen Standard Werte. Der Befehl INSERT, der ein Subset von Spalten in einer Tabelle einfügt, setzt Standard Werte ein, außer wenn explizit angegeben.
  19. Unterstützung für GNU automake, autoconf und libtool für bessere Portabilität
  20. Geschrieben in C und C++. Unterstützung von einer großen Anzahl von Kompilern
  21. Thread basierte Speicheranforderung (malloc)
  22. Keine Speicher Lecks, entsprechend der Analyse mit Purify
  23. MySQL enthält isamchk einem sehr schnellen Werkzeug für die Tabellenüberprüfung, Optimierungen und Reparatur von Tabellen. Siehe Kapitel MySQL installation
  24. Support für ISO-8859-1 Latin1 Format. Alle Vergleiche für normale Spalten von Strings sind case sensitiv.
  25. Die Sortierung von Elementen erfolgt nach dem ISO-8859-1 Latin1 Set. Es ist möglich, dieses im Quellcode zu verändern, um neue Sortierungsreichenfolgen festzulegen. Um ein Beispiel für fortgeschrittene Sortierung zu sehen, sollte man sich einmal die Tschechische Sortierung (Czech) anschauen. MySQL unterstützt verschiedene Character-Sets, die bei der Kompilierung angegeben werden können.
  26. Aliases auf Tabellen und Spalten entsprechen dem SQL92 Standard
  27. DELETE, INSERT, REPLACE und UPDATE geben als Rückgabewert aus, wieviele Reihen von der Änderung betroffen waren.
  28. Funktionsnamen dürfen nicht mit einem Tabellen oder Spaltennamen kollidieren. Z.B. ist ABS eine gültiger Spaltenname. Die einzige Beschränkung ist, daß keine Leerzeichen zwischen dem Funktionsnamen und dem "(", das folgt, sein dürfen. Siehe Kapitel Ist MySQL empfindlich bei reservierten Worten
  29. Alle MySQL Programme (Kommandozeile) können mit den Optionen --help und -? aufgerufen werden. Es wird eine Hilfe ausgegeben.
  30. Der MySQL Server kann Fehlermeldungen in vielen verschiedenen Sprachen an den Client übergeben. Siehe Kapitel Welche Sprachen sind von MySQL unterstützt ?
  31. Clients, die an dem MySQL Server angebunden sind, können über TCP/IP Verbindungen, UNIX Sockets, oder named pipes unter Windows NT den Server kontaktieren.
  32. Das MySQL spezifische Kommando SHOW kann dazu verwendet werden, um Informationen über die Datenbanken, Tabellen und Indizes abzufragen. Der Befehl EXPLAIN, siehe Kapitel EXPLAIN dient dazu, zu bestimmen, wie der Optimizer eine Abfrage durchführt (DEBUGGING)
  33. Ein Hauptunterschied zwischen Version 3.23 und den älteren Versionen ist, daß 3.23 eine neue, viel schnellere ISAM Library (MyISAM) besitzt, die an SQL besser angepasst ist.
  34. BIG File Support für 64 Bit Architekturen. Wer einmal Video digitalisiert hat, der wird festgestellt haben, daß bei einer Filegröße von 2 Gigabyte bzw. 4 Gigabyte als Ausnahme (je nach Filesystem) Schluß ist. Bisher mußten große Datenbankserver entweder mit einem 64 Bit Filesystem ausgestattet sein, oder die Datenbank hat direkt auf das RAW-DEVICE (meist SCSI) geschrieben, indem es quasi ohne Formatierung direkt in den SCSI Controller geschrieben hat. SGI IRIX, SOLARIS 2.7 können nun von Hause aus viel größere Dateien schreiben. LINUX 2.0/2.2 auf DEC ALPHA und LINUX 2.2 auf (ULTRA) SPARC, sowie NetBSD für DEC ALPHA können nun unter Verwendung von GFS (GIGA FILESYSTEM) ebenfalls riesige Files verwalten. MySQL unterstützt nun diese Eigenschaften. Hierzu muß MySQL mit dem GCC Compiler für 64 Bit Architekture mit kleinen Änderungen im Quellcode neu übersetzt werden. Für die Dateigröße können allerdings nur 63 Bit verwendet werden...also nur halb so viel ;-((
  35. Erweiterte Tabellen Typen
  36. Es können im RAM sog. HEAP Tabellen angelegt werden, die extrem schnell arbeiten (ähnlich RAMDISK)
  37. Neuer Befehl LOAD_FILE(filename), um sich nur die Inhaltsangabe (Spaltennamen) einer Tabelle anzuschauen.
  38. Neuer Operator <=>, der genauso, wie = arbeitet, allerdings TRUE zurückliefert, wenn beide Argumente NULL sind, also eine Art XOR Verknüpfung
  39. Unter ODBC 3.0 gibt es nun die Funktion EXTRACT(interval from datetime).
  40. Volle Unterstützung von ODBC 2.5 (Siehe Microsoft)

  41. REPLACE ist nun schneller
  42. LIKE kann nun kleine Unterschiede zwischen Buchstaben, wie é und e als gleich behandeln. Das bedeutet, daß TRUE zurückgegeben wird.
  43. LIKE kann nun mit SHOW STATUS kombiniert werden
  44. SHOW STATUS gibt nun eine Spalte mit Privilegien aus (privilege)
  45. SHOW INDEX gibt die Spalten packed und comment aus
  46. Tabellen können nun zur besseren Dokumentation Kommentare enthalten (CREATE TABLE ... COMMENT "Kommentar"
  47. CREATE TABLE table_name (col int not null UNIQUE) ist nun erlaubt
  48. Neue Syntax: CREATE TABLE SELECT
  49. Neue Syntax: CREATE TABLE IF NOT EXISTS
  50. Anlegen einer Spalte mit CHAR(0) ist nun erlaubt
  51. Neue Syntax: DATE_FORMAT() erfordert nun ein % vor jedem Formatbuchstaben
  52. DELAYED ist nun ein reserviertes Wort
  53. Eine Beispielprozedur ist hinzugefügt worden: Siehe hierzu auch Sql_analyse.c . Diese Prozedur wird die Daten in Ihrer Abfrage beschreiben. Beispiel zur Anwendung:
    SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max elements,[max
    memory]])
    

    Diese Prozedur dient als Beispiel für die Implementierung eigener Prozeduren,

  54. BINARY CAST forciert, das Strings case sensitive verglichen werden
  55. Neue Option --skip-show-databases in mysqld
  56. Die Überprüfung, ob eine Reihe sich verändert hat, funktioniert nun auch mit BLOB/TEXT Spalten
  57. INNER JOIN ist nun erlaubt (INNER ist nun ein reserviertes Wort)
  58. Die Zugriffrechte können sich nun auch neben Hostnamen auch auf Netzmasken (Subnetze) beziehen.
  59. Bei einem Vergleich von NOT NULL DATE/DATETIME Spalten, die IS NULL sind, wird nun mit 0 verglichen, um einige Differenzen mit ODBC auszuschalten.
  60. NULL IN (...) gibt nun NULL anstelle von 0 zurück. Dies dient dazu, daß null_column NOT IN (...) nicht auf NULL Werte zutrifft.
  61. Fehlerkorrektur bei dem Speichern von Fließkommawerten in TIME Spalten
  62. TIME Strings werden nun präziser analysiert:
        [[DAYS] [H]H:]MM:]SS[.fraction] 
        [[[[[H]H]H]H]MM]SS[.fraction]
    

    Der zweite Teil des fraction Abschnittes wird erkannt und ignoriert

  63. LOAD DATA INFILE kann nun auch mit LOW_PRIORITY versehen werden
  64. Der Standard INDEX Name benutzt nun dieselbe Groß/Keinschreibung, wie der Spaltenname
  65. Zahl der maximalen Verbindungen wird auf 100 festgelegt
  66. Größerer Puffer bei LOAD DATA INFILE (schneller)
  67. DECIMAL(x,y) arbeitet nun entsprechend dem ANSI SQL Standard
  68. UDF Aggregatfunktionen wurden hinzugefügt: LAST_INSERT_ID() wird nun bei INSERT INTO ... SELECT geupdatet.
  69. JOINS sind nun schneller
  70. SELECT DISTINCT ist nun viel schneller, da es die neue UNIQUE Funktion in MyISAM verwendet. Die Ausgabe bei DISTINCT wird nun nich mehr sortiert
  71. Temporäre RAM HEAP Tabellen werden nun automatisch in MyIASM Tabellen auf die Festplatte ausgelagert, falls nötig. table is full error sollte somit nicht mehr erscheinen....
  72. Alle C Client API Makro's sind nun Funktionen, damit die shared libraries zuverlässiger arbeiten. Daher ist z.B. der Aufruf einer Funktion: call mysql_num_fields() bei einem MySQL Feld nicht mehr erlaubt. Stattdessen muß das Makro mysql_field_count() verwendet werden.
  73. Benutzung des LIBWRAP nun möglich zur Identifizierung von CLients
  74. AUTO_INCREMENT setzt die Spalten nun automatisch auf NOT NULL
  75. Show NULL ist nun der Standardwert für AUTO_INCREMENT Spalten
  76. Neues Statement: SQL_BIG_RESULT . SQL_SMALL_RESULT ist nun Standard
  77. Shared Lib nun im RPM Format verfügbar
  78. Option --enable-large-files ist nun bei configure möglich
  79. Neue Optionen bei CREATE TABLE: PACK_KEYS und CHECKSUM
  80. Neue Option bei mysqld: --default-table-type


Weiter Zurück [Inhalt] Online Suche im Handbuch