Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

JSON_STORAGE_FREE() – Cari Tahu Berapa Banyak Ruang Penyimpanan yang Dikosongkan Setelah Pembaruan Dokumen JSON di MySQL

Di MySQL, JSON_STORAGE_FREE() fungsi menunjukkan berapa banyak ruang penyimpanan yang dikosongkan setelah Dokumen JSON diperbarui.

Untuk nilai kolom JSON, ini menunjukkan berapa banyak ruang penyimpanan yang dibebaskan dalam representasi binernya setelah diperbarui menggunakan JSON_SET() , JSON_REPLACE() , atau JSON_REMOVE() .

Untuk dokumen JSON (atau string yang dapat diuraikan sebagai satu), fungsi ini mengembalikan 0 .

Sintaks

Sintaksnya seperti ini:

JSON_STORAGE_FREE(json_val)

Dimana json_val mewakili dokumen JSON yang mengembalikan jumlah byte yang dibebaskan setelah pembaruan. Ini bisa menjadi nama kolom. Itu juga bisa berupa dokumen JSON yang valid atau string yang dapat diuraikan sebagai satu—baik sebagai nilai literal atau sebagai nilai variabel pengguna—dalam hal ini fungsi mengembalikan 0 .

Contoh

Kami menjalankan kueri:

SELECT Contents 
FROM Collections 
WHERE CollectionId = 4;

Dan dapatkan data berikut:

+-------------------------------------+
| Contents                            |
+-------------------------------------+
| {"Name": "Homer", "Stupid": "True"} |
+-------------------------------------+

Mari kita periksa ukuran penyimpanan Contents kolom, dan lihat apakah ada ruang yang telah dibebaskan oleh pembaruan.

SELECT 
  JSON_STORAGE_SIZE(Contents) Size,
  JSON_STORAGE_FREE(Contents) Free
FROM Collections
WHERE CollectionId = 4;

Hasil:

+------+------+
| Size | Free |
+------+------+
|   40 |    0 |
+------+------+

Dalam hal ini, data menggunakan hingga 40 byte ruang penyimpanan, dan tidak ada ruang yang dibebaskan oleh pembaruan apa pun.

Tapi kita bisa mengubahnya.

Ayo lakukan pembaruan.

UPDATE Collections
SET Contents = JSON_SET(Contents, "$.Stupid", 1)
WHERE CollectionId = 4;

Hasil:

Query OK, 1 row affected (0.08 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Mari jalankan kueri lain untuk melihat data yang diperbarui.

SELECT Contents 
FROM Collections 
WHERE CollectionId = 4;

Hasil:

+--------------------------------+
| Contents                       |
+--------------------------------+
| {"Name": "Homer", "Stupid": 1} |
+--------------------------------+

Jadi nilainya "True" telah diubah menjadi 1 .

Sekarang mari kita lihat berapa banyak ruang yang dikosongkan dengan pembaruan tersebut.

SELECT 
  JSON_STORAGE_SIZE(Contents) Size,
  JSON_STORAGE_FREE(Contents) Free
FROM Collections
WHERE CollectionId = 4;

Hasil:

+------+------+
| Size | Free |
+------+------+
|   40 |    5 |
+------+------+

Hasil ini menunjukkan bahwa pembaruan sebagian dokumen JSON terjadi, dan ini mengosongkan 5 byte ruang penyimpanan. Hasil dikembalikan oleh JSON_STORAGE_SIZE() tidak berubah oleh pembaruan sebagian.

Pembaruan sebagian didukung untuk pembaruan menggunakan JSON_SET() , JSON_REPLACE() , atau JSON_REMOVE() .

Pembaruan Tidak Sebagian

Penetapan nilai langsung ke kolom JSON tidak dapat diperbarui sebagian, dan oleh karena itu, tidak ada ruang kosong yang dilaporkan.

Hal yang sama berlaku untuk variabel pengguna JSON.

Berikut ini contoh untuk didemonstrasikan.

Pertama kita atur variabelnya:

SET @data = '{"Name": "Homer", "Stupid": "True"}';
SELECT 
  JSON_STORAGE_SIZE(@data) Size,
  JSON_STORAGE_FREE(@data) Free;

Hasil:

+------+------+
| Size | Free |
+------+------+
|   40 |    0 |
+------+------+

Sekarang kami memperbarui variabel menggunakan JSON_SET() :

SET @data = JSON_SET(@data, "$.Stupid", 1);
SELECT 
  JSON_STORAGE_SIZE(@data) Size,
  JSON_STORAGE_FREE(@data) Free;

Hasil:

+------+------+
| Size | Free |
+------+------+
|   35 |    0 |
+------+------+

Jadi dalam hal ini tidak ada ruang yang dibebaskan. Namun, perhatikan juga bahwa JSON_STORAGE_SIZE() function sekarang melaporkan jumlah byte yang lebih rendah (35) yang digunakan untuk menyimpan dokumen.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Neo4j - Hapus Hubungan menggunakan Cypher

  2. TIMESTAMPADD() Contoh – MySQL

  3. TIMEDIFF() Contoh – MySQL

  4. MySQL - ORDER BY nilai dalam IN()

  5. Masukkan ke dalam beberapa tabel dalam satu kueri