partitionierte_tabellen_mit_mysql
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| partitionierte_tabellen_mit_mysql [2019-09-09 13:08:42] – manfred | partitionierte_tabellen_mit_mysql [2024-03-28 14:07:29] (aktuell) – [PARTITION BY HASH] manfred | ||
|---|---|---|---|
| Zeile 28: | Zeile 28: | ||
| ===== eine vorhandene Tabelle partitionieren ===== | ===== eine vorhandene Tabelle partitionieren ===== | ||
| + | |||
| + | |||
| + | ==== PARTITION BY RANGE ==== | ||
| Ggf. ist es nötig, bevor man eine vorhandene Tabelle partitionieren kann, den Typ der einiger Spalten anzupassen und oft muss auch der '' | Ggf. ist es nötig, bevor man eine vorhandene Tabelle partitionieren kann, den Typ der einiger Spalten anzupassen und oft muss auch der '' | ||
| Zeile 36: | Zeile 39: | ||
| CHANGE COLUMN `time` `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ' | CHANGE COLUMN `time` `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ' | ||
| ; | ; | ||
| - | | + | |
| ALTER TABLE `datenbank`.`tabelle` | ALTER TABLE `datenbank`.`tabelle` | ||
| DROP PRIMARY KEY, | DROP PRIMARY KEY, | ||
| ADD PRIMARY KEY (`id`, | ADD PRIMARY KEY (`id`, | ||
| ; | ; | ||
| - | | + | |
| ALTER TABLE `datenbank`.`tabelle` | ALTER TABLE `datenbank`.`tabelle` | ||
| PARTITION BY RANGE (UNIX_TIMESTAMP(time)) ( | PARTITION BY RANGE (UNIX_TIMESTAMP(time)) ( | ||
| Zeile 55: | Zeile 58: | ||
| ; | ; | ||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | SICHERE_TAGE=" | ||
| + | |||
| + | DATENBANK=" | ||
| + | TABELLE=" | ||
| + | MYSQL=" | ||
| + | |||
| + | |||
| + | # für jeden Tag eine Partition anlegen | ||
| + | echo " | ||
| + | ALTER TABLE ${DATENBANK}.${TABELLE} | ||
| + | PARTITION BY RANGE (UNIX_TIMESTAMP(datetime)) ( | ||
| + | $(for i in $(seq -7 ${SICHERE_TAGE}) | ||
| + | do | ||
| + | echo " | ||
| + | done | tac) | ||
| + | PARTITION p0 VALUES LESS THAN MAXVALUE | ||
| + | ) | ||
| + | ; | ||
| + | " | ${MYSQL} | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== PARTITION BY HASH ==== | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | Um eine Tabelle nach HASH zu partitionieren, | ||
| + | |||
| + | // | ||
| + | |||
| + | Man sollte die Anzahl der Partitionen als einen Wert von '' | ||
| + | <file SQL Tabelle_partitionieren_-_HASH.sql> | ||
| + | ALTER TABLE `promotion_tracking_backend`.`CrossSiteTrackingData` | ||
| + | PARTITION BY HASH (id) | ||
| + | PARTITIONS 16; | ||
| + | </ | ||
| + | |||
| + | SELECT TABLE_SCHEMA, | ||
| + | |||
| + | |||
| + | ==== PARTITION BY LINEAR HASH ==== | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | **LINEAR HASH Partitioning: | ||
| + | MySQL unterstützt auch lineares Hashing, das sich von regulärem Hashing darin unterscheidet, | ||
| + | |||
| + | //'' | ||
| + | |||
| + | <code sql> | ||
| + | ALTER TABLE `promotion_tracking_backend`.`CrossSiteTrackingData` | ||
| + | PARTITION BY LINEAR HASH (id) | ||
| + | PARTITIONS 16; | ||
| + | </ | ||
| ===== partitionierte Tabelle neu anlegen ===== | ===== partitionierte Tabelle neu anlegen ===== | ||
/home/http/wiki/data/attic/partitionierte_tabellen_mit_mysql.1568034522.txt · Zuletzt geändert: von manfred
