2017-01-03 1 views
0

Solange alle Tabellen in meiner Datenbank nicht nach utf8mb4 migriert werden, besteht die Gefahr, dass Sie weiterhin eine utf8-Verbindung verwenden?Kann ich sicher eine utf8-Verbindung mit utf8mb4-Spalten verwenden?

Ich dachte, die utf8-Verbindung zu behalten, bis alle Tabellen migriert sind.

Die zugrunde liegende Frage ist: Wie lange dauert es, um Änderungen an sehr großen Tabellen (Hunderte von GB) vorzunehmen?

Antwort

0

Solange alle Daten in der 3-Byte-Teilmenge utf8 sind, sind utf8 und utf8mb4 identisch.

Die Verbindungsparameter (einschließlich SET NAMES) geben die Codierung im Client an. Die Spalten-/Tabellendefinition gibt an, welche Codierung in den Spalten gehandhabt wird. MySQL wird zwischen Ihnen konvertieren, wie Sie INSERT oder SELECT. Solange alle Daten utf8-Teilmengen sind, ist die Umwandlung möglich (effektiv ein No-Op).

2

Einige Beispiele dafür, wie MySQL führt die Konvertierung, wenn Sie den Satz einzufügen versuchen:
«Das Emoji ist eine Katze»

1 - mit einer UTF-8-Verbindung in einer Tabelle utf8: MySQL kürzt die Zeichenfolge Zeichen 4 Bytes:
«Dieses emoji»

2 - mit einer UTF-8-Verbindung in einem utf8mb4 Tabelle: MySQL ersetzt das 4 Byte-Zeichen mit "????"
«diesen emoji ???? ist eine Katze »

3 - mit einer utf8mb4 Verbindung in einer utf8 Tabelle: MySQL ersetzt das 4 Byte Zeichen durch"? "
« Dieses Emoji? eine Katze »

+0

Gute Beispiele dafür, was passiert, wenn utf8mb4 benötigt wird, aber es gibt eine Diskrepanz zwischen Verbindung und Spalte. –

Verwandte Themen