Resumo : neste tutorial você aprenderá como utilizar a JSON_STORAGE_FREE()
função MySQL para obter o tamanho de armazenamento de uma coluna JSON que foi liberada após sua atualização.
Introdução à função JSON_STORAGE_FREE do MySQL
A JSON_STORAGE_FREE
função é usada para obter o espaço (em bytes) de uma coluna JSON que foi liberada em sua apresentação binária após ter sido atualizada pela função JSON_SET()
, JSON_REPLACE()
ou JSON_REMOVE()
.
Aqui está a sintaxe da JSON_STORAGE_FREE()
função:
JSON_STORAGE_FREE(json_val)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
json_val
é um documento JSON válido ou uma string que pode ser um documento JSON válido.
A JSON_STORAGE_FREE()
função retornará um valor positivo diferente de zero se a coluna JSON que foi atualizada ocupar menos espaço do que antes da atualização.
Se a coluna JSON ocupar o mesmo ou mais espaço do que antes de ser atualizada, a JSON_STORAGE_FREE()
função retornará 0.
Se json_val
for NULL
, a JSON_STORAGE_FREE()
função retorna NULL
.
Exemplo de função MySQL JSON_STORAGE_FREE
Usaremos a employees
tabela do banco de dados de exemplo para a demonstração.
Primeiro, crie uma tabela chamada employee_results
:
DROP TABLE IF EXISTS employee_results;
CREATE TABLE employee_results(
id INT PRIMARY KEY,
data JSON
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O employee_results
tem duas colunas:
id
: esta é a coluna da chave primária.data
: esta é a coluna JSON que armazenará os dados JSON.
Segundo, insira dados na employee_results
tabela a partir dos dados da employees
tabela usando a instrução INSERT INTO SELECT :
INSERT INTO employee_results(id, data)
SELECT
employeeNumber,
JSON_OBJECT(
'firstName', firstName, 'lastName', lastName, 'email', email
)
FROM
employees;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, consulte os dados da employee_results
tabela:
SELECT * FROM employee_results;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+------+-----------------------------------------------------------------------------------------------+
| id | data |
+------+-----------------------------------------------------------------------------------------------+
| 1002 | {"email": "[email protected]", "lastName": "Murphy", "firstName": "Diane"} |
| 1056 | {"email": "[email protected]", "lastName": "Patterson", "firstName": "Mary"} |
| 1076 | {"email": "[email protected]", "lastName": "Firrelli", "firstName": "Jeff"} |
...
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Quarto, atualize o sobrenome do número do funcionário 1056
de Patterson
para Doe
:
UPDATE
employee_results
SET
data = JSON_SET(data, '$.lastName', 'Doe')
WHERE
id = 1056;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por fim, pegue o espaço que foi liberado pela JSON_SET
atualização:
SELECT
JSON_STORAGE_FREE(data)
FROM
employee_results
WHERE
id = 1056;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-------------------------+
| JSON_STORAGE_FREE(data) |
+-------------------------+
| 6 |
+-------------------------+
1 row in set (0.01 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A saída mostra que o espaço liberado pela atualização é de 6 bytes.
Resumo
- Use a função MySQL
JSON_STORAGE_FREE()
para obter quanto espaço de uma coluna JSON foi liberado após sua atualização.