MySQL unterstützt auch lineares Hashing, das sich vom regulären Hashing insofern unterscheidet, als es einen linearen Zweierpotenz-Algorithmus verwendet, während das reguläre Hashing den Modulus des Werts der Hashing-Funktion benutzt.
          Der einzige syntaktische Unterschied zwischen der linearen und
          der regulären Hash-Partitionierung besteht darin, dass der
          PARTITION BY-Klausel das Schlüsselwort
          LINEAR hinzugefügt wird:
        
CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY LINEAR HASH( YEAR(hired) )
PARTITIONS 4;
          Wenn Sie einen Ausdruck expr haben,
          wird beim linearen Hashing der Datensatz in Partition Nummer
          N von
          num Partitionen gespeichert, wobei
          N nach dem folgenden Algorithmus
          abgeleitet ist:
        
              Finde die nächste Zweierpotenz größer
              num. Wir nennen diesen Wert
              V; er kann folgendermaßen
              berechnet werden:
            
V= POWER(2, CEILING(LOG(2,num)))
              (Nehmen wir beispielsweise an,
              num sei 13. Dann ist
              LOG(2,13) gleich 3.7004397181411.
              CEILING(3.7004397181411) ist 4 und
              V =
              POWER(2,4), was 16 ergibt.)
            
              Setze N =
              F(column_list)
              & (V - 1).
            
              Wobei N >=
              num:
            
                  Setze V =
                  CEIL(V / 2)
                
                  Setze N =
                  N &
                  (V - 1)
                
          Angenommen, die Tabelle t1, die lineare
          Hash-Partitionierung nutzt und 6 Partitionen hat, wird mit
          folgender Anweisung angelegt:
        
CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE)
    PARTITION BY LINEAR HASH( YEAR(col3) )
    PARTITIONS 6;
          Nehmen wir weiterhin an, Sie möchten in t1
          zwei Datensätze einfügen, in denen die Spalte
          col3 die Werte
          '2003-04-14' und
          '1998-10-19' aufweist. Die Partitionsnummer
          für die erste dieser Spalten wird folgendermaßen ermittelt:
        
V= POWER(2, CEILING( LOG(2,7) )) = 8N= YEAR('2003-04-14') & (8 - 1) = 2003 & 7 = 3 (3 >= 6 is FALSE: record stored in partition #3)
Die Partitionsnummer für den zweiten Eintrag wird berechnet mit:
V= 8N= YEAR('1998-10-19') & (8-1) = 1998 & 7 = 6 (6 >= 6 is TRUE: additional step required)N= 6 & CEILING(5 / 2) = 6 & 3 = 2 (2 >= 6 is FALSE: record stored in partition #2)
Der Vorteil einer linearen Hash-Partitionierung besteht darin, dass sich Partitionen weit schneller hinzufügen, löschen, zusammenführen und aufspalten lassen. Das kann ein Segen sein, wenn man mit Tabellen arbeiten muss, die extrem große Datenmengen (Terabytes) enthalten. Der Nachteil ist, dass die Daten wahrscheinlich nicht so gleichmäßig auf die Partitionen verteilt werden wie bei der normalen Hash-Partitionierung.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

