반응형

아래와 같이 접속해있는 MYSQL 인스턴스의 각 논리 데이터베이스 별 오브젝트의 수 정보가 필요할 때가 있다.

  • 디비 마이그레이션 후 오브젝트 수 비교
  • 디비 매니징 등등

아래의 쿼리로 해당 내용을 한 번에 조회할 수 있다.

+--------------+-----------+-----------+-------------+-------------+
| table_schema | table_cnt | event_cnt | routine_cnt | trigger_cnt |
+--------------+-----------+-----------+-------------+-------------+
| ktw          |        47 |      NULL |        NULL |        NULL |
+--------------+-----------+-----------+-------------+-------------+

논리 데이터베이스별 오브젝트 정보 조회 쿼리

SELECT
    t. *,
    events.event_cnt,
    routines.routine_cnt,
    triggers.trigger_cnt
FROM
    (
        SELECT
            table_schema,
            COUNT(table_name) AS table_cnt
        FROM
            information_schema.tables
        GROUP BY
            table_schema
    ) t
    LEFT JOIN (
        SELECT
            trigger_schema,
            COUNT(trigger_name) AS trigger_cnt
        FROM
            information_schema.triggers
        GROUP BY
            trigger_schema
    ) triggers ON t.table_schema = triggers.trigger_schema
    LEFT JOIN (
        SELECT
            event_schema,
            COUNT(event_schema) AS event_cnt
        FROM
            information_schema.events
        GROUP BY
            event_schema
    ) events ON t.table_schema = events.event_schema
    LEFT JOIN (
        SELECT
            routine_schema,
            COUNT(routine_name) AS routine_cnt
        FROM
            information_schema.routines
        GROUP BY
            routine_schema
    ) routines ON t.table_schema = routines.routine_schema
WHERE
    t.table_schema NOT IN (
        'information_schema',
        'db_helper',
        'mysql',
        'performance_schema',
        'sys'
    );
반응형