Collections:
JSON_STORAGE_SIZE() - Storage Size of JSON Value
How to calculate the storage size of a JSON (JavaScript Object Notation) value using the JSON_STORAGE_SIZE() function?
✍: FYIcenter.com
JSON_STORAGE_SIZE(json) is a MySQL built-in function that
calculates the storage size of a JSON (JavaScript Object Notation) value
or table column.
For example:
SELECT JSON_STORAGE_SIZE('[100, "sakila", [1, 3, 5], 425.05]') AS A, JSON_STORAGE_SIZE('{"a": 1000, "b": "a", "c": "[1, 3, 5, 7]"}') AS B, JSON_STORAGE_SIZE('{"a": 1000, "b": "wxyz", "c": "[1, 3, 5, 7]"}') AS C, JSON_STORAGE_SIZE('[100, "json", [[10, 20, 30], 3, 5], 425.05]') AS D; -- +----+----+----+----+ -- | A | B | C | D | -- +----+----+----+----+ -- | 45 | 44 | 47 | 56 | -- +----+----+----+----+ SELECT JSON_STORAGE_SIZE('[100, "FYI", [1, 3, 5], 425.05]'); -- +------------------------------------------------------+ -- | JSON_STORAGE_SIZE('[100, "FYI", [1, 3, 5], 425.05]') | -- +------------------------------------------------------+ -- | 42 | -- +------------------------------------------------------+
Note that the storage size of a JSON column is not changed, if it is reduced after a partially updated with less data. For example:
CREATE TABLE jtable (jcol JSON); INSERT INTO jtable VALUES ('{"a": 1000, "b": "FYIcenter", "c": "[1, 3]"}'); SELECT jcol, JSON_STORAGE_SIZE(jcol) AS Size FROM jtable; -- +----------------------------------------------+------+ -- | jcol | Size | -- +----------------------------------------------+------+ -- | {"a": 1000, "b": "FYIcenter", "c": "[1, 3]"} | 46 | -- +----------------------------------------------+------+ UPDATE jtable SET jcol = JSON_SET(jcol, "$.b", "FYI"); SELECT jcol, JSON_STORAGE_SIZE(jcol) AS Size FROM jtable; -- +----------------------------------------+------+ -- | jcol | Size | -- +----------------------------------------+------+ -- | {"a": 1000, "b": "FYI", "c": "[1, 3]"} | 46 | -- +----------------------------------------+------+ UPDATE jtable SET jcol = JSON_SET(jcol, "$.b", "FYIcenter.com"); SELECT jcol, JSON_STORAGE_SIZE(jcol) AS Size FROM jtable; -- +--------------------------------------------------+------+ -- | jcol | Size | -- +--------------------------------------------------+------+ -- | {"a": 1000, "b": "FYIcenter.com", "c": "[1, 3]"} | 50 | -- +--------------------------------------------------+------+
In order to see the actual JSON value size, we can call JSON_STORAGE_SIZE() to obtain the free space in a JSON column and subtract it from the storage size. For example:
SELECT JSON_STORAGE_SIZE(jcol) AS StorageSize, JSON_STORAGE_FREE(jcol) AS FreeSpace, JSON_STORAGE_SIZE(jcol) - JSON_STORAGE_FREE(jcol) AS ActualSize FROM jtable; -- +-------------+-----------+------------+ -- | StorageSize | FreeSpace | ActualSize | -- +-------------+-----------+------------+ -- | 50 | 0 | 50 | -- +-------------+-----------+------------+ UPDATE jtable SET jcol = JSON_SET(jcol, "$.b", "FYI"); SELECT JSON_STORAGE_SIZE(jcol) AS StorageSize, JSON_STORAGE_FREE(jcol) AS FreeSpace, JSON_STORAGE_SIZE(jcol) - JSON_STORAGE_FREE(jcol) AS ActualSize FROM jtable; -- +-------------+-----------+------------+ -- | StorageSize | FreeSpace | ActualSize | -- +-------------+-----------+------------+ -- | 50 | 10 | 40 | -- +-------------+-----------+------------+
Reference information of the JSON_STORAGE_SIZE() function:
JSON_STORAGE_SIZE(json): int Calculates the storage size of a JSON (JavaScript Object Notation) value or table column. Arguments, return value and availability: json: Required. The JSON value or column to be examined. int: Return value. The number of types used by the JSON value. Available since MySQL 5.7.
Related MySQL functions:
⇒ JSON_TABLE() - Inline Table with JSON Array
⇐ JSON_SET() - Inserting/updating JSON Child Members
2025-03-12, 758🔥, 0💬
Popular Posts:
What Is a Dynamic Performance View in Oracle? Oracle contains a set of underlying views that are mai...
How To Generate CREATE TABLE Script on an Existing Table in SQL Server? If you want to know how an e...
How To Turn on mysql Extension on the PHP Engine in MySQL? The "mysql" API extension is provided as ...
How To Create a Dynamic Cursor with the DYNAMIC Option in SQL Server Transact-SQL? If the underlying...
How To Drop an Index in Oracle? If you don't need an existing index any more, you should delete it w...