MySQL-Partitionierung für große Datensätze

MySQLMySQLBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie MySQL-Partitionierung für große Datensätze implementieren, um die Abfrageleistung und die Datenverwaltung zu verbessern. Das Lab konzentriert sich auf die Partitionierung einer Tabelle nach Bereich, insbesondere unter Verwendung der Spalte sale_date einer sales-Tabelle.

Sie beginnen, indem Sie sich mit dem MySQL-Server verbinden und eine sales_data-Datenbank erstellen. Anschließend erstellen Sie die sales-Tabelle und partitionieren sie nach dem Jahr der sale_date in Partitionen für 2020, 2021, 2022, 2023 und eine zukünftige Partition. In den folgenden Schritten wird das Abfragen von Daten aus bestimmten Partitionen, die Neuorganisation von Partitionen mit ALTER TABLE und die Überprüfung der Auswirkungen der Partitionierung auf die Abfragetempo behandelt.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/DatabaseFunctionsandDataTypesGroup(["Database Functions and Data Types"]) mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/use_database("Database Selection") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_database("Database Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_table("Table Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/alter_table("Table Modification") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/DatabaseFunctionsandDataTypesGroup -.-> mysql/date("Date Type") subgraph Lab Skills mysql/use_database -.-> lab-550912{{"MySQL-Partitionierung für große Datensätze"}} mysql/create_database -.-> lab-550912{{"MySQL-Partitionierung für große Datensätze"}} mysql/create_table -.-> lab-550912{{"MySQL-Partitionierung für große Datensätze"}} mysql/alter_table -.-> lab-550912{{"MySQL-Partitionierung für große Datensätze"}} mysql/select -.-> lab-550912{{"MySQL-Partitionierung für große Datensätze"}} mysql/date -.-> lab-550912{{"MySQL-Partitionierung für große Datensätze"}} end

Partitionieren einer Tabelle nach Bereich

In diesem Schritt lernen wir, wie man in MySQL eine Tabelle nach Bereich partitioniert. Die Partitionierung nach Bereich ist nützlich, wenn Sie Ihre Daten basierend auf einem Wertebereich, wie z. B. Daten, IDs oder anderen numerischen Daten, in logische Gruppen aufteilen möchten. Dies kann die Abfrageleistung verbessern und die Datenverwaltung vereinfachen.

Zunächst verbinden wir uns mit dem MySQL-Server. Öffnen Sie ein Terminal in der LabEx VM. Sie sollten sich bereits im Verzeichnis ~/project befinden.

mysql -u root -p

Geben Sie bei entsprechender Aufforderung das Root-Passwort ein. Wenn Sie kein Root-Passwort festgelegt haben, drücken Sie einfach die Eingabetaste.

Jetzt erstellen wir eine Datenbank namens sales_data:

CREATE DATABASE sales_data;
USE sales_data;

Als Nächstes erstellen wir eine Tabelle namens sales mit Spalten für sale_id, sale_date und amount. Wir partitionieren diese Tabelle nach der Spalte sale_date.

CREATE TABLE sales (
    sale_id INT PRIMARY KEY,
    sale_date DATE NOT NULL,
    amount DECIMAL(10, 2) NOT NULL
)
PARTITION BY RANGE (YEAR(sale_date)) (
    PARTITION p2020 VALUES LESS THAN (2021),
    PARTITION p2021 VALUES LESS THAN (2022),
    PARTITION p2022 VALUES LESS THAN (2023),
    PARTITION p2023 VALUES LESS THAN (2024),
    PARTITION pFuture VALUES LESS THAN MAXVALUE
);

Lassen Sie uns diese CREATE TABLE-Anweisung analysieren:

  • PARTITION BY RANGE (YEAR(sale_date)): Dies gibt an, dass wir die Tabelle nach Bereich partitionieren, indem wir das Jahr der Spalte sale_date verwenden.
  • PARTITION p2020 VALUES LESS THAN (2021): Dies erstellt eine Partition namens p2020, die alle Zeilen enthalten wird, bei denen das Jahr von sale_date kleiner als 2021 ist (d. h. das Jahr 2020).
  • PARTITION p2021 VALUES LESS THAN (2022): Dies erstellt eine Partition namens p2021, die alle Zeilen enthalten wird, bei denen das Jahr von sale_date kleiner als 2022 ist (d. h. das Jahr 2021).
  • PARTITION p2022 VALUES LESS THAN (2023): Dies erstellt eine Partition namens p2022, die alle Zeilen enthalten wird, bei denen das Jahr von sale_date kleiner als 2023 ist (d. h. das Jahr 2022).
  • PARTITION p2023 VALUES LESS THAN (2024): Dies erstellt eine Partition namens p2023, die alle Zeilen enthalten wird, bei denen das Jahr von sale_date kleiner als 2024 ist (d. h. das Jahr 2023).
  • PARTITION pFuture VALUES LESS THAN MAXVALUE: Dies erstellt eine Partition namens pFuture, die alle Zeilen enthalten wird, bei denen das Jahr von sale_date größer oder gleich 2024 ist. MAXVALUE stellt sicher, dass alle zukünftigen Jahre in diese Partition aufgenommen werden.

Jetzt fügen wir einige Beispieldaten in die sales-Tabelle ein:

INSERT INTO sales (sale_id, sale_date, amount) VALUES
(1, '2020-12-31', 100.00),
(2, '2021-01-15', 150.00),
(3, '2021-12-25', 200.00),
(4, '2022-06-01', 120.00),
(5, '2022-12-31', 180.00),
(6, '2023-03-10', 250.00),
(7, '2023-09-20', 300.00),
(8, '2024-01-01', 350.00);

Um zu überprüfen, ob die Daten in die richtigen Partitionen eingefügt wurden, können Sie die EXPLAIN PARTITIONS-Anweisung verwenden. Beispielsweise:

EXPLAIN PARTITIONS SELECT * FROM sales WHERE sale_date BETWEEN '2021-01-01' AND '2021-12-31';

Dies zeigt Ihnen, welche Partition(en) MySQL zur Ausführung der Abfrage verwenden wird. Sie sollten sehen, dass nur die p2021-Partition verwendet wird.

Sie können auch die Anzahl der Zeilen in jeder Partition mit der folgenden Abfrage überprüfen:

SELECT
    PARTITION_NAME,
    TABLE_ROWS
FROM
    INFORMATION_SCHEMA.PARTITIONS
WHERE
    TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';

Diese Abfrage ruft den Partitionennamen und die Anzahl der Zeilen in jeder Partition für die sales-Tabelle in der sales_data-Datenbank ab.

+----------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+----------------+------------+
| p2020          |          1 |
| p2021          |          2 |
| p2022          |          2 |
| p2023          |          2 |
| pFuture        |          1 |
+----------------+------------+

Dies bestätigt, dass die Daten basierend auf dem sale_date korrekt partitioniert wurden.

Abfragen von Daten aus einer bestimmten Partition

In diesem Schritt lernen wir, wie man in MySQL Daten aus einer bestimmten Partition abfragt. Dies kann nützlich sein, wenn Sie nur Daten aus einem bestimmten Zeitraum oder Wertebereich abrufen müssen, da es die Abfrageleistung erheblich verbessern kann, indem es die Menge an Daten beschränkt, die MySQL scannen muss.

Stellen Sie zunächst sicher, dass Sie mit dem MySQL-Server verbunden sind und die sales_data-Datenbank verwenden. Wenn Sie die Verbindung im vorherigen Schritt geschlossen haben, verbinden Sie sich erneut mit:

mysql -u root -p

Geben Sie bei entsprechender Aufforderung das Root-Passwort ein. Wählen Sie dann die sales_data-Datenbank aus:

USE sales_data;

Jetzt fragen wir Daten aus der p2021-Partition ab. Wir können dies tun, indem wir eine WHERE-Klausel hinzufügen, die die Daten basierend auf dem Partitionierungsschlüssel filtert. In unserem Fall ist der Partitionierungsschlüssel das Jahr des sale_date.

SELECT * FROM sales WHERE YEAR(sale_date) = 2021;

Diese Abfrage ruft alle Zeilen aus der sales-Tabelle ab, bei denen das Jahr des sale_date 2021 ist. Da die Tabelle nach Jahr partitioniert ist, muss MySQL nur die p2021-Partition scannen, um diese Abfrage auszuführen.

Sie können dies überprüfen, indem Sie die EXPLAIN PARTITIONS-Anweisung verwenden:

EXPLAIN PARTITIONS SELECT * FROM sales WHERE YEAR(sale_date) = 2021;

Die Ausgabe dieser Anweisung zeigt Ihnen, welche Partition(en) MySQL zur Ausführung der Abfrage verwenden wird. Sie sollten sehen, dass nur die p2021-Partition verwendet wird.

+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----------------------------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | Extra                             |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----------------------------------+
|  1 | SIMPLE      | sales | p2021      | ALL  | NULL          | NULL | NULL    | NULL |    2 | Using where                       |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----------------------------------+

Wie Sie sehen können, zeigt die Spalte partitions p2021, was darauf hinweist, dass nur die p2021-Partition zugriffen wurde.

Sie können auch Daten aus mehreren Partitionen abfragen, indem Sie den IN-Operator in der WHERE-Klausel verwenden:

SELECT * FROM sales WHERE YEAR(sale_date) IN (2021, 2022);

Diese Abfrage ruft alle Zeilen aus der sales-Tabelle ab, bei denen das Jahr des sale_date entweder 2021 oder 2022 ist. MySQL wird sowohl die p2021- als auch die p2022-Partition scannen, um diese Abfrage auszuführen.

Wieder können Sie dies mit EXPLAIN PARTITIONS überprüfen:

EXPLAIN PARTITIONS SELECT * FROM sales WHERE YEAR(sale_date) IN (2021, 2022);

Die Ausgabe wird zeigen, dass sowohl die p2021- als auch die p2022-Partitionen zugriffen werden.

+----+-------------+-------+---------------+------+---------------+------+---------+------+------+-----------------------------------+
| id | select_type | table | partitions    | type | possible_keys | key  | key_len | ref  | rows | Extra                             |
+----+-------------+-------+---------------+------+---------------+------+---------+------+------+-----------------------------------+
|  1 | SIMPLE      | sales | p2021,p2022   | ALL  | NULL          | NULL | NULL    | NULL |    4 | Using where                       |
+----+-------------+-------+---------------+------+---------------+------+---------+------+------+-----------------------------------+

Durch das Abfragen von Daten aus bestimmten Partitionen können Sie die Menge an Daten, die MySQL verarbeiten muss, erheblich reduzieren, was zu schnelleren Abfrageausführungszeiten führt. Dies ist besonders vorteilhaft für große Tabellen mit Millionen oder Milliarden von Zeilen.

Partitionen mit ALTER TABLE neu organisieren

In diesem Schritt lernen wir, wie man Partitionen in MySQL mit der ALTER TABLE-Anweisung neu organisiert. Das Neuorganisieren von Partitionen kann aus verschiedenen Gründen nützlich sein, wie z. B. das Zusammenführen von Partitionen, das Aufteilen von Partitionen oder das Hinzufügen neuer Partitionen.

Stellen Sie zunächst sicher, dass Sie mit dem MySQL-Server verbunden sind und die sales_data-Datenbank verwenden. Wenn Sie die Verbindung im vorherigen Schritt geschlossen haben, verbinden Sie sich erneut mit:

mysql -u root -p

Geben Sie bei entsprechender Aufforderung das Root-Passwort ein. Wählen Sie dann die sales_data-Datenbank aus:

USE sales_data;

Beginnen wir damit, eine neue Partition für das Jahr 2024 hinzuzufügen. Derzeit werden alle Verkaufsdaten ab 2024 in der pFuture-Partition gespeichert. Wir können eine spezifische Partition für 2024 mit der ALTER TABLE-Anweisung und der ADD PARTITION-Klausel erstellen:

ALTER TABLE sales ADD PARTITION (PARTITION p2024 VALUES LESS THAN (2025));

Diese Anweisung fügt eine neue Partition namens p2024 hinzu, die alle Zeilen enthalten wird, bei denen das Jahr des sale_date kleiner als 2025 ist (d. h. das Jahr 2024). Nach dem Hinzufügen der Partition müssen wir die pFuture-Partition neu organisieren, um das Jahr 2024 auszuschließen.

ALTER TABLE sales REORGANIZE PARTITION pFuture INTO (
    PARTITION p2025 VALUES LESS THAN (2026),
    PARTITION pFuture VALUES LESS THAN MAXVALUE
);

Dieser Befehl teilt die pFuture-Partition in die p2025- und eine neue pFuture-Partition auf. p2025 wird die Daten für das Jahr 2025 enthalten, und die neue pFuture wird die Daten für 2026 und später enthalten.

Jetzt überprüfen wir die Partitionstruktur:

SELECT
    PARTITION_NAME,
    TABLE_ROWS
FROM
    INFORMATION_SCHEMA.PARTITIONS
WHERE
    TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';

Sie sollten in der Ausgabe die neuen p2024-, p2025- und die aktualisierte pFuture-Partition sehen.

+----------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+----------------+------------+
| p2020          |          1 |
| p2021          |          2 |
| p2022          |          2 |
| p2023          |          2 |
| p2024          |          1 |
| p2025          |          0 |
| pFuture        |          0 |
+----------------+------------+

Als Nächstes sehen wir uns an, wie man Partitionen zusammenführt. Angenommen, wir möchten die p2020- und p2021-Partitionen in eine einzelne Partition namens p2020_2021 zusammenführen. Wir können dies mit der ALTER TABLE-Anweisung und der REORGANIZE PARTITION-Klausel tun:

ALTER TABLE sales REORGANIZE PARTITION p2020, p2021 INTO (
    PARTITION p2020_2021 VALUES LESS THAN (2022)
);

Diese Anweisung führt die p2020- und p2021-Partitionen in eine neue Partition namens p2020_2021 zusammen. Die VALUES LESS THAN (2022)-Klausel gibt an, dass diese Partition alle Zeilen enthalten wird, bei denen das Jahr des sale_date kleiner als 2022 ist.

Jetzt überprüfen wir die Partitionstruktur erneut:

SELECT
    PARTITION_NAME,
    TABLE_ROWS
FROM
    INFORMATION_SCHEMA.PARTITIONS
WHERE
    TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';

Sie sollten sehen, dass die p2020- und p2021-Partitionen durch die p2020_2021-Partition ersetzt wurden.

+------------------+------------+
| PARTITION_NAME   | TABLE_ROWS |
+------------------+------------+
| p2020_2021       |          3 |
| p2022            |          2 |
| p2023            |          2 |
| p2024            |          1 |
| p2025            |          0 |
| pFuture          |          0 |
+------------------+------------+

Schließlich sehen wir uns an, wie man eine Partition löscht. Angenommen, wir möchten die p2025-Partition entfernen. Wir können dies mit der ALTER TABLE-Anweisung und der DROP PARTITION-Klausel tun:

ALTER TABLE sales DROP PARTITION p2025;

Jetzt überprüfen wir die Partitionstruktur ein letztes Mal:

SELECT
    PARTITION_NAME,
    TABLE_ROWS
FROM
    INFORMATION_SCHEMA.PARTITIONS
WHERE
    TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';

Sie sollten sehen, dass die p2025-Partition entfernt wurde.

+------------------+------------+
| PARTITION_NAME   | TABLE_ROWS |
+------------------+------------+
| p2020_2021       |          3 |
| p2022            |          2 |
| p2023            |          2 |
| p2024            |          1 |
| pFuture          |          0 |
+------------------+------------+

Durch die Verwendung der ALTER TABLE-Anweisung mit verschiedenen Klauseln können Sie Ihre Partitionen leicht neu organisieren, um Ihren sich ändernden Datenverwaltungsanforderungen gerecht zu werden.

Überprüfen der Auswirkungen von Partitionierung auf die Abfragegeschwindigkeit

In diesem Schritt werden wir untersuchen, wie die Partitionierung die Abfragegeschwindigkeit in MySQL beeinflusst. Obwohl unser aktuelles Datenset klein ist, sind die hier gezeigten Prinzipien für das Verständnis der Vorteile der Partitionierung bei größeren Datensätzen von entscheidender Bedeutung.

Stellen Sie zunächst sicher, dass Sie mit dem MySQL-Server verbunden sind und die sales_data-Datenbank verwenden. Wenn Sie die Verbindung im vorherigen Schritt geschlossen haben, verbinden Sie sich erneut mit:

mysql -u root -p

Geben Sie bei entsprechender Aufforderung das Root-Passwort ein. Wählen Sie dann die sales_data-Datenbank aus:

USE sales_data;

Um die Ausführungszeit von Abfragen zu messen, verwenden wir den Befehl SET profiling = 1;. Dies aktiviert die Profiling-Funktion, die es uns ermöglicht, die von jeder Abfrage verwendeten Ressourcen zu sehen.

SET profiling = 1;

Jetzt führen wir eine Abfrage aus, die auf eine bestimmte Partition abzielt. Wir wählen alle Verkäufe aus dem Jahr 2023 aus:

SELECT * FROM sales WHERE YEAR(sale_date) = 2023;

Als Nächstes führen wir eine Abfrage aus, die möglicherweise alle Partitionen scannen würde (obwohl es bei unseren begrenzten Daten noch optimiert werden könnte). Wir wählen alle Verkäufe mit einem Betrag größer als 200 aus:

SELECT * FROM sales WHERE amount > 200;

Jetzt untersuchen wir die Profiling-Informationen, um die Ausführungszeit jeder Abfrage zu sehen. Wir können dies mit dem Befehl SHOW PROFILES; tun:

SHOW PROFILES;

Die Ausgabe zeigt eine Liste der Abfragen, die mit aktivierter Profiling-Funktion ausgeführt wurden, zusammen mit ihrer Dauer.

+----------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Um detailliertere Informationen zu einer bestimmten Abfrage zu erhalten, verwenden Sie den Befehl SHOW PROFILE [query_id];, wobei Sie [query_id] durch die ID der Abfrage ersetzen, die Sie untersuchen möchten. Sie können die Abfrage-ID aus der Ausgabe von SHOW PROFILES entnehmen. Wenn beispielsweise die Abfrage-ID für die erste Abfrage 1 war, würden Sie ausführen:

SHOW PROFILE 1;

Dies zeigt eine Aufschlüsselung der Abfrageausführung, einschließlich der Zeit, die in jeder Phase (z. B. Vorbereitung, Datenübertragung usw.) verbracht wurde.

Durch den Vergleich der Profiling-Informationen für Abfragen, die auf bestimmte Partitionen abzielen, mit Abfragen, die alle Partitionen scannen, können Sie die Auswirkungen der Partitionierung auf die Abfragegeschwindigkeit beobachten. Beachten Sie, dass bei einem kleinen Datenset die Unterschiede möglicherweise minimal sind. Bei größeren Datensätzen können die Leistungseinsparungen durch die Partitionierung jedoch erheblich sein.

Schließlich deaktivieren Sie die Profiling-Funktion:

SET profiling = 0;

Dieser Schritt hat gezeigt, wie man MySQL-Profiling verwendet, um die Abfrageausführungszeit zu analysieren und die Leistungsvorteile der Partitionierung zu verstehen. Denken Sie daran, dass die Wirksamkeit der Partitionierung von der Größe Ihrer Daten und der Art der von Ihnen ausgeführten Abfragen abhängt.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man eine Tabelle in MySQL nach Bereich (range) partitioniert, wobei wir uns auf die Verbesserung der Abfrageleistung und der Datenverwaltung konzentriert haben. Wir haben uns mit dem MySQL-Server verbunden, eine Datenbank namens sales_data erstellt und dann eine Tabelle namens sales erstellt, die nach dem Jahr der Spalte sale_date partitioniert ist. Dies beinhaltete die Definition von Partitionen für bestimmte Jahresbereiche (2020, 2021, 2022, 2023) und eine zukünftige Partition für Werte, die die definierten Bereiche überschreiten.

Die CREATE TABLE-Anweisung hat gezeigt, wie man PARTITION BY RANGE verwendet, um Daten basierend auf dem Jahr des sale_date aufzuteilen und Zeilen basierend auf ihrem Jahr bestimmten Partitionen zuzuweisen. Diese Partitionierungsstrategie ermöglicht eine effizientere Abfrage und Verwaltung großer Datensätze, indem Daten logisch basierend auf Datumsbereichen gruppiert werden.