Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JSON_STORAGE_SIZE() – Finden Sie die Speichergröße eines JSON-Dokuments in MySQL

In MySQL der JSON_STORAGE_SIZE() Die Funktion gibt die Anzahl der Bytes zurück, die zum Speichern der binären Darstellung eines JSON-Dokuments verwendet werden.

Sie geben das JSON-Dokument als Argument an.

Wenn das Argument ein JSON ist -Spalte gibt diese Funktion den Speicherplatz zurück, der zum Speichern des JSON-Dokuments verwendet wurde, als es in die Spalte eingefügt wurde, vor etwaigen nachträglichen Teilaktualisierungen.

Wenn das Argument eine Zeichenfolge ist, gibt die Funktion die Menge an Speicherplatz in der JSON-Binärdarstellung zurück, die erstellt wird, indem die Zeichenfolge als JSON geparst und in eine Binärdatei konvertiert wird.

Syntax

Die Syntax lautet wie folgt:

JSON_STORAGE_SIZE(json_val)

Wobei json_val ist das JSON-Dokument, für das die Speichergröße zurückgegeben werden soll. Dies muss ein gültiges JSON-Dokument oder eine Zeichenfolge sein, die als eine geparst werden kann.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel zur Veranschaulichung.

SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;

Ergebnis:

+--------+
| Result |
+--------+
|     13 |
+--------+

In diesem Fall beträgt die Dokumentgröße 13 Byte.

Hier ist ein etwas größeres JSON-Dokument.

SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;

Ergebnis:

+--------+
| Result |
+--------+
|     29 |
+--------+

Dieser ist also 29 Byte lang.

Und hier ist noch einmal ein größerer.

SET @data = '{
  "Person": {
    "Age": 10,
    "Name": "Bart",
    "Friends": [
      "Bart",
      "Milhouse"
    ]
  }
}';
SELECT JSON_STORAGE_SIZE(@data) Result;

Ergebnis:

+--------+
| Result |
+--------+
|     86 |
+--------+

Beispiel 2 – Datenbankspalten

Hier ist ein Beispiel für das Abrufen der Speichergröße eines JSON-Dokuments, das in einer Datenbankspalte gespeichert ist.

USE Music;
SELECT JSON_STORAGE_SIZE(Contents) Size
FROM Collections
WHERE CollectionId = 1;

Ergebnis:

+------+
| Size |
+------+
|  503 |
+------+

In diesem Fall war die Datenbankspalte eine JSON-Spalte und enthält die folgenden Daten.

USE Music;
SELECT JSON_PRETTY(Contents) Contents
FROM Collections
WHERE CollectionId = 1;

Ergebnis:

[
  {
    "Albums": [
      {
        "AlbumName": "Powerage"
      }
    ],
    "ArtistName": "AC/DC"
  },
  {
    "Albums": [
      {
        "AlbumName": "Ziltoid the Omniscient"
      },
      {
        "AlbumName": "Casualties of Cool"
      },
      {
        "AlbumName": "Epicloud"
      }
    ],
    "ArtistName": "Devin Townsend"
  },
  {
    "Albums": [
      {
        "AlbumName": "Powerslave"
      },
      {
        "AlbumName": "Somewhere in Time"
      },
      {
        "AlbumName": "Piece of Mind"
      },
      {
        "AlbumName": "Killers"
      },
      {
        "AlbumName": "No Prayer for the Dying"
      }
    ],
    "ArtistName": "Iron Maiden"
  }
]

In diesem Fall habe ich JSON_PRETTY() verwendet Funktion, um die Ergebnisse besser lesbar zu machen.