Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 테이블의 평균 행 길이(AVG_ROW_LENGTH) 확인하는 방법

MySQL에서 특정 테이블의 평균 행 길이를 확인하려면 INFORMATION_SCHEMA.TABLES를 활용하면 됩니다. 이 시스템 뷰에는 테이블 이름, 엔진 종류, 행 수, 평균 행 길이 등 다양한 테이블 메타데이터가 저장되어 있습니다.

1. 예제 테이블 생성

먼저 실습에 사용할 테이블을 생성합니다. 아래 쿼리를 실행해 보세요.

mysql> create table Client_information
-> (
-> Id int,
-> Name varchar(10)
-> );
Query OK, 0 rows affected (0.48 sec)

2. 데이터 삽입

INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into Client_information values(1,'Larry');
Query OK, 1 row affected (0.14 sec)

mysql> insert into Client_information values(2,'Mike');
Query OK, 1 row affected (0.17 sec)

mysql> insert into Client_information values(3,'Sam');
Query OK, 1 row affected (0.19 sec)

3. 저장된 레코드 조회

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from Client_information;

실행 결과는 다음과 같습니다.

+------+-------+
| Id | Name |
+------+-------+
| 1 | Larry |
| 2 | Mike |
| 3 | Sam |
+------+-------+
3 rows in set (0.00 sec)

4. 평균 행 길이 조회하기

이제 information_schema.tables를 조회하여 해당 테이블의 정보를 확인합니다.

mysql> select *from information_schema.tables where table_name='Client_information';

결과 중 AVG_ROW_LENGTH 컬럼이 바로 평균 행 길이를 나타냅니다.

+---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+---------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE | VERSION | ROW_FORMAT | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | MAX_DATA_LENGTH | INDEX_LENGTH | DATA_FREE | AUTO_INCREMENT | CREATE_TIME | UPDATE_TIME | CHECK_TIME | TABLE_COLLATION | CHECKSUM | CREATE_OPTIONS | TABLE_COMMENT |
+---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+---------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+
| def | sample | client_information | BASE TABLE | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | NULL | 2019-03-11 20:02:40 | NULL | NULL | utf8_general_ci | NULL | | |
| def | test | client_information | BASE TABLE | InnoDB | 10 | Dynamic | 3 | 5461 | 16384 | 0 | 0 | 0 | NULL | 2019-04-03 02:28:31 | 2019-04-03 02:29:00 | NULL | utf8mb4_0900_ai_ci | NULL | | |
+---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+---------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+
2 rows in set (0.13 sec)

참고: 필요한 컬럼만 조회하기

모든 컬럼을 조회하면 결과가 방대해지므로, 실무에서는 아래와 같이 필요한 컬럼만 선택하는 것이 좋습니다.

mysql> SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS, AVG_ROW_LENGTH
-> FROM information_schema.tables
-> WHERE table_name = 'Client_information';

이렇게 하면 스키마명, 테이블명, 전체 행 수(TABLE_ROWS), 그리고 평균 행 길이(AVG_ROW_LENGTH)를 한눈에 확인할 수 있습니다.

추가 팁

  • InnoDB 테이블의 경우 통계 정보가 샘플링 기반으로 산출되므로, AVG_ROW_LENGTH 값은 근사치입니다.
  • 정확한 최신 통계를 원한다면 ANALYZE TABLE Client_information;을 먼저 실행하는 것이 좋습니다.
  • 같은 이름의 테이블이 여러 데이터베이스(스키마)에 존재할 수 있으므로, WHERE 절에 table_schema = '데이터베이스명' 조건을 함께 지정하면 더 정확한 결과를 얻을 수 있습니다.