Як я можу сказати, наскільки велика моя база даних RDS Amazon (MySQL)?


12

У мене є база даних MySQL для мого веб-сайту, розміщеного на Amazon AWS за допомогою RDS. У нього є 5 Гб пам’яті. Як я можу сказати, наскільки насправді є ці дані (і, отже, скільки в мене залишилось квоти на 5 ГБ)?

Відповіді:


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). На pwстендах для потужності 1024 , щоб відобразити результати в певних одиницях виміру:

  • (SELECT 0 pw) відобразить звіт у байтах
  • (SELECT 1 pw) відобразить звіт у KiloBytes
  • (SELECT 2 pw) відобразить звіт у MegaBytes
  • (SELECT 3 pw) відобразить звіт у GigaBytes
  • (SELECT 4 pw) відобразить звіт у TeraBytes
  • (SELECT 5 pw) відобразить звіт у PetaBytes (зв’яжіться зі мною, якщо ви запускаєте цей)

Ось запит звіту з трохи меншим форматуванням 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;

Спробувати !!!


Ти неймовірний!
Player1

7

Нарешті я знайшов простий спосіб отримати цю інформацію безпосередньо від Amazon за пару кліків.

  1. Увійдіть у приладну панель управління RDS
  2. Натисніть "Екземпляри БД"
  3. Клацніть на екземпляр, який цікавить вас. Це повинно розширити його і показати набагато більше інформації про нього.
  4. Перейдіть на вкладку "Моніторинг" зліва (її слід вибрати за замовчуванням)
  5. Є монітор "Зберігання", який повідомляє, скільки місця він використовує, і показує графік, скільки доступно:

введіть тут опис зображення


З документів RDS вільна пам'ять - це "скільки оперативної пам’яті доступно для екземпляра БД в мегабайти", а не використання примірника для зберігання: docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Еван Кроске

@EvanKroske Схоже, що "Безкоштовне місце для зберігання" - це фактично той показник, який я хочу. Дякуємо за посилання doc.
Стівен Остерміллер

Схоже, AWS оновив весь інтерфейс з моменту написання цієї відповіді. Я оновив його на основі того, що бачу сьогодні.
Стівен Остерміллер

схоже, що вони, можливо, оновили його знову, я не бачу вкладку моніторингу. а в пам’яті просто перелічено загальний розмір, що виділяється
Брайан Томас

2

show table status from mydatabsename; де mydatabasename - ваше ім’я бази даних.

Це показує показники Data_length та Index_length на таблицю та інші показники. Вам потрібно буде скласти ці стовпці і пам’ятати, що вони знаходяться в байтах, тому вам доведеться розділити на 1024, щоб отримати kb, а потім на 1024 знову, щоб отримати меги, а потім на 1024 знову, щоб отримати концерти. Це також показує вільний простір у межах розподілу вашого індексу / бази даних.

Ви можете отримати більш детальну та суму (), якщо хочете вивчити: http://dev.mysql.com/doc/refman/5.5/uk/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 Workbench, як я знайшов тут: http://dev.mysql.com/downloads/tools/workbench/, але це передбачає, що у вас є доступ до порту на ваш сервер бази даних. Тим не менш, ви можете зробити багато в режимі офлайн, так що варто завантажити. Зверніть увагу, що верстат не підсумовує () виділення, що не має для мене сенсу. Але знову ж таки, у мене немає і останньої версії.


У цьому екземплярі RDS у мене понад 100 баз даних. Чи є зручний спосіб запитати їх і підсумувати все?
Стівен Остерміллер

@Stephen Ostermiller 100 баз даних або 100 таблиць? База даних складається з однієї або декількох схем (ив). Зазвичай схема є предметною областю із пов'язаними таблицями.
closetnoc

100 баз даних, що містять приблизно 20 таблиць.
Стівен Остерміллер

Я експериментую з прикладом на сторінці, про яку я згадував ..., повернеться вам за секунду.
closetnoc

@Stephen Ostermiller Оновлено відповідь. Сподіваюсь, це допомагає.
closetnoc

1

2019 : Для MySQL та MariaDB перейдіть за цим посиланням AWS: https://aws.amazon.com/premiumsupport/knowledge-center/view-storage-rds-mysql-mariadb/


Корисно знати, що використовує сховище, але моя проблема полягала лише в тому, що я знаю, скільки пам’яті у мене залишилось.
Стівен Остерміллер

1
Ви можете переглянути метрику FreeStorageSpace в моніторингу RDS для цього, і це також було зазначено в документі.
Vigneshwar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.