JSON_STORAGE_SIZE() în MySQL

JSON: căutare și validare MySQL 5.7.22+ (JSON_STORAGE_FREE: 8.0.2+)

Câți octeți ocupă un document JSON stocat binar; JSON_STORAGE_FREE arată spațiul eliberat după actualizări parțiale.

Sintaxă
JSON_STORAGE_SIZE(valoare)
JSON_STORAGE_FREE(coloana)

Ce face JSON_STORAGE_SIZE()

MySQL stochează coloanele JSON într-un format binar optimizat. JSON_STORAGE_SIZE() arată mărimea acestui format, util când estimezi spațiul ocupat de un tabel.

JSON_STORAGE_FREE() arată câți octeți au rămas liberi într-o valoare după o actualizare parțială pe loc (cu JSON_SET(), JSON_REPLACE() sau JSON_REMOVE()). Pentru valori noi este 0.

Parametri

Parametru Descriere
valoare / coloana Documentul sau coloana JSON analizată.

Ce returnează

Un număr de octeți.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE profiluri (
  id INT PRIMARY KEY,
  date JSON
);

INSERT INTO profiluri VALUES
  (1, '{"nume": "Ana", "oras": "Iași", "varsta": 31, "hobby": ["citit", "înot"], "adresa": {"strada": "Lăpușneanu", "nr": 12}}'),
  (2, '{"nume": "Dan", "oras": "Cluj", "varsta": 45, "hobby": ["ciclism"]}'),
  (3, '{"nume": "Ioana", "oras": "Iași", "varsta": 27, "hobby": []}');

Exemplul 1: Mărimea profilurilor

SELECT id, JSON_STORAGE_SIZE(date) AS octeti, JSON_STORAGE_FREE(date) AS liberi
FROM profiluri
ORDER BY id;

Rezultat

+----+--------+--------+
| id | octeti | liberi |
+----+--------+--------+
|  1 |    136 |      0 |
|  2 |     76 |      0 |
|  3 |     68 |      0 |
+----+--------+--------+

Greșeli frecvente

  • Compari JSON_STORAGE_SIZE() cu lungimea textului. Formatul binar are alt overhead, deci cele două valori diferă.

Comenzi înrudite

  • JSON_LENGTH(): Numărul de elemente al unei liste sau numărul de chei al unui obiect JSON.
  • LENGTH(): Returnează lungimea unui text în octeți (bytes), nu în caractere.