Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

JSON_STORAGE_FREE () - पता करें कि MySQL में JSON दस्तावेज़ के अपडेट के बाद कितना संग्रहण स्थान खाली हो गया था

MySQL में, JSON_STORAGE_FREE() फ़ंक्शन दिखाता है कि JSON दस्तावेज़ अपडेट होने के बाद कितना संग्रहण स्थान खाली हो गया था।

JSON कॉलम मान के लिए, यह दिखाता है कि JSON_SET() का उपयोग करके इसे अपडेट करने के बाद इसके बाइनरी प्रतिनिधित्व में कितना संग्रहण स्थान मुक्त किया गया था। , JSON_REPLACE() , या JSON_REMOVE()

JSON दस्तावेज़ (या एक स्ट्रिंग जिसे एक के रूप में पार्स किया जा सकता है) के लिए, यह फ़ंक्शन 0 देता है ।

सिंटैक्स

वाक्य रचना इस प्रकार है:

JSON_STORAGE_FREE(json_val)

जहां json_val JSON दस्तावेज़ का प्रतिनिधित्व करता है जिसके लिए अद्यतन के बाद मुक्त बाइट्स की मात्रा वापस करना है। यह एक कॉलम नाम हो सकता है। यह एक वैध JSON दस्तावेज़ या एक स्ट्रिंग भी हो सकता है जिसे एक के रूप में पार्स किया जा सकता है - या तो शाब्दिक मान के रूप में या उपयोगकर्ता चर के मान के रूप में - जिस स्थिति में फ़ंक्शन 0 देता है ।

उदाहरण

हम एक क्वेरी चलाते हैं:

SELECT Contents 
FROM Collections 
WHERE CollectionId = 4;

और निम्न डेटा प्राप्त करें:

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

आइए Contents के संग्रहण आकार की जांच करें कॉलम, और देखें कि क्या अपडेट द्वारा कोई स्थान खाली किया गया है।

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

परिणाम:

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

इस मामले में, डेटा 40 बाइट्स के संग्रहण स्थान का उपयोग करता है, और किसी भी अद्यतन द्वारा कोई स्थान खाली नहीं किया गया है।

लेकिन हम इसे बदल सकते हैं।

चलिए एक अपडेट करते हैं।

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

परिणाम:

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

आइए अपडेट किए गए डेटा को देखने के लिए एक और क्वेरी चलाते हैं।

SELECT Contents 
FROM Collections 
WHERE CollectionId = 4;

परिणाम:

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

तो मान "True" 1 . में बदल दिया गया है ।

अब देखते हैं कि उस अपडेट से कितनी जगह खाली हुई है।

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

परिणाम:

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

इस परिणाम से पता चलता है कि JSON दस्तावेज़ का आंशिक अद्यतन हुआ, और इसने 5 बाइट्स संग्रहण स्थान को मुक्त कर दिया। JSON_STORAGE_SIZE() . द्वारा लौटाया गया परिणाम आंशिक अद्यतन द्वारा अपरिवर्तित है।

JSON_SET() . का उपयोग करके अपडेट के लिए आंशिक अपडेट समर्थित हैं , JSON_REPLACE() , या JSON_REMOVE()

गैर-आंशिक अपडेट

किसी JSON कॉलम के मान का सीधा असाइनमेंट आंशिक रूप से अपडेट नहीं किया जा सकता है, और इसलिए इसके परिणामस्वरूप कोई खाली स्थान रिपोर्ट नहीं किया जाएगा।

JSON उपयोगकर्ता चर के लिए भी यही सच है।

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।

पहले हम वेरिएबल सेट करते हैं:

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

परिणाम:

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

अब हम JSON_SET() . का उपयोग करके वेरिएबल को अपडेट करते हैं :

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

परिणाम:

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

तो इस मामले में कोई स्थान खाली नहीं किया गया था। हालांकि, यह भी ध्यान दें कि JSON_STORAGE_SIZE() फ़ंक्शन अब दस्तावेज़ को संग्रहीत करने के लिए उपयोग किए जाने वाले बाइट्स (35) की कम संख्या की रिपोर्ट करता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्लाउड में वर्डप्रेस MySQL डेटाबेस कैसे सेटअप करें

  2. गंभीर त्रुटि:अपरिभाषित फ़ंक्शन को कॉल करें session_register ()

  3. ProxySQL ऑडिट लॉग को समझना

  4. MySQL यूनियन क्लॉज

  5. SQLSTATE [HY000] [2002] एक कनेक्शन प्रयास विफल रहा.. - स्थानीय से दूरस्थ सर्वर से कनेक्ट करने का प्रयास करते समय