Amazon RDS veritabanımın (MySQL) ne kadar büyük olduğunu nasıl anlayabilirim?


13

RDS kullanarak Amazon AWS'de barındırılan web sitem için bir MySQL veritabanım var. 5 GB depolama alanına sahiptir. İçindeki verilerin gerçekte ne kadar büyük olduğunu (ve dolayısıyla 5 GB'lık kotanın ne kadarını bıraktığımı) nasıl anlayabilirim?

Yanıtlar:


13

BİLGİ_SCHEMA'sına karşı daha düzenli sorgular

Depolama Motoruna Göre Boyutlar

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;

Veritabanına Göre Boyutlar

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 ); 

Veritabanına / Depolama Motoruna Göre Boyutlar

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;

UYARI

Üç (3) sorgunun her birinde göreceksiniz (SELECT 3 pw). pw1024 Of Power standları belirli birimlerinde sonuçlarını görüntülemek için:

  • (SELECT 0 pw) Raporu Bayt Olarak Gösterir
  • (SELECT 1 pw) Raporu Kilobayt Olarak Gösterecek
  • (SELECT 2 pw) Raporu MegaBytes'te Gösterecek
  • (SELECT 3 pw) Raporu GigaBytes'te Gösterecek
  • (SELECT 4 pw) Raporu TeraBytes'te Gösterecek
  • (SELECT 5 pw) Raporu PetaBytes'te görüntüler (bunu çalıştırırsanız lütfen benimle iletişime geçin)

İşte biraz daha az biçimlendirmeye sahip bir rapor sorgusu 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;

Bir şans ver !!!


Harikasın!
Player1

7

Sonunda bu bilgileri birkaç tıklama ile doğrudan Amazon'dan almanın kolay yolunu buldum.

  1. İçine Günlüğü RDS yönetimi pano
  2. "DB Bulut Sunucuları" nı tıklayın
  3. İlgilendiğiniz örneği tıklayın. Bu onu genişletmeli ve hakkında daha fazla bilgi göstermelidir.
  4. Soldaki "İzleme" sekmesini görüntüleyin (varsayılan olarak seçilmelidir)
  5. Ne kadar alan kullandığını söyleyen ve ne kadar kullanılabilir olduğunu gösteren bir grafik gösteren bir "Depolama" monitörü vardır:

resim açıklamasını buraya girin


RDS belgelerinden, boş bellek, örneğin depolama alanı kullanımı değil, "DB örneğinde megabayt olarak ne kadar RAM kullanılabilir" olduğudur
Evan Kroske

@EvanKroske "Boş Depolama Alanı" aslında istediğim metrik gibi görünüyor. Doküman bağlantısı için teşekkürler.
Stephen Ostermiller

Bu cevabı yazdığımdan beri AWS tüm arayüzü yeniledi. Bugün gördüklerime dayanarak güncelledim.
Stephen Ostermiller

Görünüşe göre tekrar yenilendiler, bir izleme sekmesi görmüyorum. ve depolama alanı ayrılan toplam boyutu listeler.
Brian Thomas

2

show table status from mydatabsename; burada mydatabasename veritabanı adınızdır.

Bu, tablo başına Veri_uzunluğu ve Dizin_uzunluğu metriklerini ve diğer metrikleri gösterir. Bu sütunları toplamalı ve bayt cinsinden olduklarını hatırlamanız gerekir, böylece kb almak için 1024'e, sonra da meg almak için tekrar 1024'e ve konser almak için tekrar 1024'e bölmeniz gerekir. Bu ayrıca dizin / veritabanı ayırmanızdaki boş alanı da gösterir.

Keşfetmek isterseniz daha ayrıntılı ve toplam () alabilirsiniz: http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html

SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS;

Dizin / veritabanı ayırmada kalan alanı gösterir ...

SELECT SUM(Data_length) FROM INFORMATION_SCHEMA.PARTITIONS;

SELECT SUM(Index_length) FROM INFORMATION_SCHEMA.PARTITIONS;

... kullanılan verileri ve dizin boyutunu gösterir (toplam ayırma için eklemeniz gerekir)

Eğer şeyleri biraz daha incelemek istiyorsanız ...

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";

Tabii ki burada bulduğum gibi MySQL Workbench'i de kullanabilirsiniz: http://dev.mysql.com/downloads/tools/workbench/, ancak veritabanı sunucunuza port erişiminiz olduğunu varsayar. Yine de, indirmeye değer çok çevrimdışı yapabilirsiniz. Lütfen çalışma tezgahının benim için anlamlı olmayan tahsisleri () toplamadığını unutmayın. Ama yine de, en son sürüme de sahip değilim.


Bu RDS örneğinde 100'den fazla veritabanım var. Hepsini sorgulamanın ve her şeyi özetlemenin uygun bir yolu var mı?
Stephen Ostermiller

@Stephen Ostermiller 100 veritabanı veya 100 tablo mu? Bir veritabanı bir veya daha fazla şemadan oluşur. Şema tipik olarak ilişkili tabloları olan bir konu alanıdır.
closetnoc

Her biri yaklaşık 20 tablo ile 100 veritabanı.
Stephen Ostermiller

Bahsettiğim sayfadaki örneği deniyorum ... bir saniye içinde size geri döneceğim.
closetnoc

@Stephen Ostermiller Cevabı güncelledi. Bu yardımcı olur umarım.
closetnoc

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.