मैं कैसे बता सकता हूं कि मेरा अमेज़ॅन आरडीएस डेटाबेस (MySQL) कितना बड़ा है?


13

मेरे पास RDS का उपयोग करके अमेज़न AWS पर होस्ट की गई मेरी वेबसाइट के लिए MySQL डेटाबेस है। इसमें 5GB स्टोरेज उपलब्ध है। मैं कैसे बता सकता हूं कि वास्तव में इसमें कितना बड़ा डेटा है (और इसलिए मेरे पास कितना 5GB कोटा बचा है)?

जवाबों:


13

यहां INFORMATION_SCHEMA के खिलाफ और अधिक संगठित प्रश्न हैं

भंडारण इंजन द्वारा आकार

SELECT
    IFNULL(B.engine, 'Total') "Storage Engine",
    CONCAT(LPAD(REPLACE(FORMAT(B.DSize / POWER(1024, pw), 3), ',', ''), 17, ' '), ' ', SUBSTR(' KMGTP', pw + 1, 1), 'B') "Data Size",
    CONCAT(LPAD(REPLACE( FORMAT(B.ISize / POWER(1024, pw), 3), ',', ''), 17, ' '), ' ', SUBSTR(' KMGTP', pw + 1, 1), 'B') "Index Size",
    CONCAT(LPAD(REPLACE( FORMAT(B.TSize / POWER(1024, pw), 3), ',', ''), 17, ' '), ' ', SUBSTR(' KMGTP', pw + 1, 1), 'B') "Table Size" 
FROM
    (SELECT
            engine,
            SUM(data_length) DSize,
            SUM(index_length) ISize,
            SUM(data_length + index_length) TSize 
        FROM
            information_schema.tables 
        WHERE
            table_schema NOT IN ('mysql', 'information_schema', 'performance_schema')
            AND engine IS NOT NULL 
        GROUP BY engine WITH ROLLUP
    ) B,
    (SELECT 3 pw) A 
ORDER BY TSize;

डेटाबेस द्वारा आकार

SELECT
    dbname,
    Concat(Lpad(Format(sdsize / Power(1024, pw), 3), 17, ' '), ' ', Substr(' KMGTP', pw + 1, 1), 'B') "Data Size",
    Concat(Lpad(Format(sxsize / Power(1024, pw), 3), 17, ' '), ' ', Substr(' KMGTP', pw + 1, 1), 'B') "Index Size",
    Concat(Lpad(Format(stsize / Power(1024, pw), 3), 17, ' '), ' ', Substr(' KMGTP', pw + 1, 1), 'B') "Total Size" 
FROM
    (SELECT
            Ifnull(db, 'All Databases') DBName,
            Sum(dsize) SDSize,
            Sum(xsize) SXSize,
            Sum(tsize) STSize 
        FROM (SELECT
                    table_schema DB,
                    data_length DSize,
                    index_length XSize,
                    data_length + index_length TSize 
                FROM information_schema.tables 
                WHERE table_schema NOT IN ('mysql','information_schema','performance_schema')
            ) AAA 
        GROUP BY db WITH rollup
    ) AA,
    (SELECT 3 pw) BB 
ORDER BY ( sdsize + sxsize ); 

डेटाबेस / संग्रहण इंजन द्वारा आकार

SELECT
    Statistic,
    DataSize "Data Size",
    IndexSize "Index Size",
    TableSize "Table Size" 
FROM
    (SELECT
            IF(ISNULL(table_schema) = 1, 10, 0) schema_score,
            IF(ISNULL(engine) = 1, 10, 0) engine_score,
            IF(ISNULL(table_schema) = 1, 'ZZZZZZZZZZZZZZZZ', table_schema) schemaname,
            IF(ISNULL(B.table_schema) + ISNULL(B.engine) = 2, "Storage for All Databases", IF(ISNULL(B.table_schema) + ISNULL(B.engine) = 1, CONCAT("Storage for ", B.table_schema), CONCAT(B.engine, " Tables for ", B.table_schema))) Statistic,
            CONCAT(LPAD(REPLACE(FORMAT(B.DSize / POWER(1024, pw), 3), ',', ''), 17, ' '), ' ', SUBSTR(' KMGTP', pw + 1, 1), 'B') DataSize,
            CONCAT(LPAD(REPLACE( FORMAT(B.ISize / POWER(1024, pw), 3), ',', ''), 17, ' '), ' ', SUBSTR(' KMGTP', pw + 1, 1), 'B') IndexSize,
            CONCAT(LPAD(REPLACE(FORMAT(B.TSize / POWER(1024, pw), 3), ',', ''), 17, ' '), ' ', SUBSTR(' KMGTP', pw + 1, 1), 'B') TableSize 
        FROM
            (SELECT
                    table_schema,
                    engine,
                    SUM(data_length) DSize,
                    SUM(index_length) ISize,
                    SUM(data_length + index_length) TSize 
                FROM
                    information_schema.tables 
                WHERE
                    table_schema NOT IN ('mysql', 'information_schema', 'performance_schema')
                    AND engine IS NOT NULL 
                GROUP BY
                    table_schema, engine WITH ROLLUP
            ) B,
            (SELECT 3 pw) A
    ) AA 
ORDER BY schemaname, schema_score, engine_score;

चेतावनी

तीन (3) प्रश्नों में से प्रत्येक में, आप देखेंगे (SELECT 3 pw)pw1024 के पावर के लिए खड़ा विशिष्ट इकाइयों में परिणाम प्रदर्शित करने के:

  • (SELECT 0 pw) बाइट्स में रिपोर्ट प्रदर्शित करेगा
  • (SELECT 1 pw) KiloBytes में रिपोर्ट प्रदर्शित करेगा
  • (SELECT 2 pw) MegaBytes में रिपोर्ट प्रदर्शित करेगा
  • (SELECT 3 pw) GigaBytes में रिपोर्ट प्रदर्शित करेगा
  • (SELECT 4 pw) TeraBytes में रिपोर्ट प्रदर्शित करेगा
  • (SELECT 5 pw) पेटाबीट्स में रिपोर्ट प्रदर्शित करेगा (यदि आप इसे चलाते हैं तो कृपया मुझसे संपर्क करें)

यहाँ एक रिपोर्ट क्वेरी है जिसमें थोड़ा कम फ़ॉर्मेटिंग है KB:

SELECT
    IFNULL(db, 'Total') "Database",
    datsum / power(1024, pw) "Data Size",
    ndxsum / power(1024, pw) "Index Size",
    totsum / power(1024, pw) "Total" 
FROM
    (
        SELECT
            db,
            SUM(dat) datsum,
            SUM(ndx) ndxsum,
            SUM(dat + ndx) totsum 
        FROM
            (
                SELECT table_schema db, data_length dat, index_length ndx 
                FROM information_schema.tables 
                WHERE engine IS NOT NULL AND table_schema NOT IN ('information_schema', 'mysql')
            ) AA 
        GROUP BY db WITH ROLLUP
    ) A,
    (SELECT 1 pw) B;

कोशिश तो करो !!!


तुम कमाल हो!
प्लेयर 1

7

अंत में मुझे कुछ क्लिकों के साथ अमेज़न से सीधे यह जानकारी प्राप्त करने का आसान तरीका मिल गया।

  1. RDS प्रबंधन डैशबोर्ड में प्रवेश करें
  2. "DB उदाहरण" पर क्लिक करें
  3. उस उदाहरण पर क्लिक करें जिसमें आप रुचि रखते हैं। इसका विस्तार करना चाहिए और इसके बारे में अधिक जानकारी दिखानी चाहिए।
  4. बाईं ओर "निगरानी" टैब देखें (इसे डिफ़ॉल्ट रूप से चुना जाना चाहिए)
  5. एक "स्टोरेज" मॉनीटर है जो बताता है कि वह कितनी जगह का उपयोग करता है और कितना उपलब्ध है का एक ग्राफ दिखाता है:

यहाँ छवि विवरण दर्ज करें


RDS डॉक्स से, फ़्रीएबल मेमोरी "मेगाबाइट्स में DB उदाहरण पर कितनी रैम उपलब्ध है", उदाहरण के भंडारण उपयोग नहीं है: docs.aws.amazon.com/AmazonRDS/latest/Userbuide/…
इवान क्रॉस्के

@ EvanKroske ऐसा लगता है कि "फ्री स्टोरेज स्पेस" वास्तव में वह मीट्रिक है जो मुझे चाहिए। डॉक्टर लिंक के लिए धन्यवाद।
स्टीफन Ostermiller

ऐसा लगता है कि जब से मैंने यह उत्तर लिखा है, तब से AWS ने पूरे इंटरफ़ेस को नया बना दिया है। मैंने आज जो देखा है, उसके आधार पर मैंने इसे अपडेट किया है।
स्टीफन Ostermiller

ऐसा लगता है कि वे इसे फिर से नया कर सकते हैं, मैं एक निगरानी टैब नहीं देखता। और भंडारण केवल आवंटित कुल आकार को सूचीबद्ध करता है।
ब्रायन थॉमस

2

show table status from mydatabsename; जहाँ mydatabasename आपका डेटाबेस नाम है।

यह आपको मीट्रिक Data_length और Index_length प्रति तालिका और अन्य मीट्रिक दिखाता है। आपको इन कॉलमों को पूरा करना होगा और याद रखना होगा कि वे बाइट्स में हैं इसलिए आपको केबी प्राप्त करने के लिए 1024 से विभाजित करना होगा और फिर 1024 के लिए megs प्राप्त करना होगा और फिर 1024 के द्वारा फिर से gigs प्राप्त करना होगा। यह आपके सूचकांक / डेटाबेस आवंटन के भीतर मुक्त स्थान को भी दिखाता है।

यदि आप अन्वेषण करना चाहते हैं तो आप अधिक दानेदार और राशि प्राप्त कर सकते हैं: http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html

SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS;

सूचकांक / डेटाबेस आवंटन में शेष स्थान दिखाता है ...

SELECT SUM(Data_length) FROM INFORMATION_SCHEMA.PARTITIONS;

SELECT SUM(Index_length) FROM INFORMATION_SCHEMA.PARTITIONS;

... उपयोग किए गए डेटा और सूचकांक आकार दिखाता है (आपको उन्हें कुल आवंटन के लिए जोड़ना होगा)

यदि आप चीजों को थोड़ा और अलग करना चाहते हैं ...

select sum(Data_length) from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA = "myschema";

select sum(Index_length) from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA = "myschema";

select sum(DATA_FREE) from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA = "myschema";

select sum(Data_length) from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA = "myschema" and TABLE_NAME = "aspecifictable";

select sum(Index_length) from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA = "myschema" and TABLE_NAME = "aspecifictable";

निश्चित रूप से आप MySQL वर्कबेंच का उपयोग कर सकते हैं जैसे मैं यहाँ पाया जाता है: http://dev.mysql.com/downloads/tools/workbench/ लेकिन यह मानता है कि आपके डेटाबेस सर्वर में पोर्ट एक्सेस है। फिर भी, आप डाउनलोड के लायक बहुत ऑफ़लाइन भी कर सकते हैं। कृपया ध्यान दें कि कार्यक्षेत्र का योग नहीं है () आवंटन जो मेरे लिए कोई मतलब नहीं है। लेकिन फिर, मेरे पास नवीनतम संस्करण नहीं है।


मैं इस RDS उदाहरण में 100 से अधिक डेटाबेस है। क्या उन सभी को क्वेरी करने और सब कुछ योग करने का एक सुविधाजनक तरीका है?
स्टीफन Ostermiller

@ स्टीफन ओस्टरमिलर 100 डेटाबेस या 100 टेबल? एक डेटाबेस में एक या अधिक स्कीमा होते हैं। एक स्कीमा आम तौर पर संबंधित तालिकाओं के साथ एक विषय क्षेत्र है।
क्लोसेट्नोक

लगभग 20 तालिकाओं के साथ 100 डेटाबेस।
स्टीफन Ostermiller

मैं उस पृष्ठ पर उदाहरण के साथ प्रयोग कर रहा हूं जिसका मैंने उल्लेख किया है ... आपको एक सेकंड में वापस मिल जाएगा।
क्लोजनेटॉक

@ स्टेफेन ओस्टरमिलर ने जवाब अपडेट किया। उम्मीद है की यह मदद करेगा।
क्लोजेटनॉक

1

2019 : MySQL और MariaDB के लिए कृपया इस AWS प्रदान लिंक का संदर्भ लें: https://aws.amazon.com/premiumsupport/knowledge-center/view-storage-rds-mysql-mariadb/


यह जानने के लिए उपयोगी है कि भंडारण का उपयोग क्या है, लेकिन मेरी समस्या सिर्फ यह जानना था कि मैंने कितना भंडारण छोड़ा था।
स्टीफन Ostermiller

1
आप RDS की निगरानी में FreeStorageSpace मीट्रिक देख सकते हैं और इसका उल्लेख दस्तावेज़ में भी किया गया है।
विग्नेश्वर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.