본문으로 건너뛰기

[L] mysql pager 명령어를 통한 결과값 페이지 단위 확인

💡 요약 정리

  • MySQL 결과값이 길 때 pager 명령어로 페이지 단위 확인 가능
  • pager more -d 명령으로 페이저 활성화
  • nopager 명령으로 페이저 해제
  • Space 키로 다음 페이지, q로 종료

MySQL을 사용하다 보면 쿼리 결과가 한 화면을 넘어서 처음 부분을 확인하지 못하는 상황이 발생합니다.

이럴 때 pager 명령어를 사용하면 페이지 단위로 결과를 확인할 수 있습니다.


1. pager 명령어란?

① 개요

pager 명령어는 MySQL 클라이언트에서 긴 쿼리 결과를 페이지 단위로 나눠서 보여주는 기능입니다.

주요 용도:

  • 긴 테이블 목록 조회
  • 많은 변수(variables) 확인
  • 대량의 레코드 조회
  • 스키마 정보 확인

② 장점

페이저 사용 시:

  • ✅ 결과를 한 페이지씩 확인 가능
  • ✅ 스크롤 없이 처음부터 끝까지 확인
  • ✅ 필요한 부분만 빠르게 탐색
  • ✅ 터미널 버퍼 초과 방지

2. pager 활성화

① 기본 명령

mysql> pager more -d

실행 결과:

PAGER set to 'more -d'

설명:

  • pager: 페이저 모드 활성화
  • more -d: Unix/Linux의 more 명령 사용
  • -d: 페이지 전환 도움말 표시

② 다른 페이저 프로그램 사용

less 사용 (더 많은 기능):

mysql> pager less

tail과 조합 (마지막 줄만):

mysql> pager tail -n 20

grep과 조합 (필터링):

mysql> pager grep 'pattern'

3. pager 사용 예시

① 긴 변수 목록 확인

mysql> pager more -d
PAGER set to 'more -d'

mysql> show variables;

출력:

+-----------------------------------------+----------------------------------+
| Variable_name                           | Value                            |
+-----------------------------------------+----------------------------------+
| auto_increment_increment                | 1                                |
| auto_increment_offset                   | 1                                |
| automatic_sp_privileges                 | ON                               |
| back_log                                | 50                               |
| basedir                                 | /usr/                            |
| bdb_cache_size                          | 8384512                          |
| bdb_home                                | /var/lib/mysql/                  |
| bdb_log_buffer_size                     | 262144                           |
| bdb_logdir                              |                                  |
--More--[Press space to continue, 'q' to quit.]

조작 방법:

  • Space 키: 다음 페이지로 이동
  • q 키: 페이저 종료 (쿼리 결과 종료)
  • Enter 키: 한 줄씩 스크롤
  • / 키: 검색 모드 (less 사용 시)

② 테이블 목록 확인

mysql> show tables;

테이블이 많을 경우:

+-------------------+
| Tables_in_mydb    |
+-------------------+
| users             |
| products          |
| orders            |
| order_details     |
| categories        |
| reviews           |
| shipping          |
| payments          |
--More--[Press space to continue, 'q' to quit.]

③ 테이블 구조 확인

mysql> desc large_table;

컬럼이 많은 테이블:

+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| id             | int(11)      | NO   | PRI | NULL    | auto_increment |
| user_id        | int(11)      | NO   | MUL | NULL    |                |
| product_id     | int(11)      | NO   | MUL | NULL    |                |
| quantity       | int(11)      | NO   |     | 1       |                |
| price          | decimal(10,2)| NO   |     | NULL    |                |
--More--[Press space to continue, 'q' to quit.]

4. pager 해제

① nopager 명령

mysql> nopager

실행 결과:

PAGER set to stdout

설명:

  • 페이저 모드 비활성화
  • 결과가 한 번에 출력됨
  • 기본 동작으로 복귀

② 언제 해제해야 하나?

해제가 필요한 경우:

  • 짧은 결과 조회 시
  • 결과를 복사해야 할 때
  • 스크립트 실행 시
  • 자동화된 작업 수행 시

5. 고급 활용

① less를 사용한 향상된 탐색

mysql> pager less -S

less 옵션:

  • -S: 긴 줄을 잘라서 표시 (가로 스크롤 가능)
  • -i: 대소문자 구분 없이 검색
  • -N: 줄 번호 표시

less 내부 명령:

  • j / k: 한 줄씩 위/아래 이동
  • f / b: 한 페이지씩 앞/뒤 이동
  • /pattern: 패턴 검색
  • n / N: 다음/이전 검색 결과
  • G: 파일 끝으로 이동
  • g: 파일 처음으로 이동

② grep으로 필터링

특정 문자열만 보기:

mysql> pager grep 'InnoDB'
mysql> show variables;

출력:

innodb_adaptive_hash_index         | ON
innodb_additional_mem_pool_size    | 1048576
innodb_autoextend_increment        | 8
innodb_buffer_pool_size            | 134217728

대소문자 구분 없이:

mysql> pager grep -i 'timeout'

③ 파일로 저장

mysql> pager tee /tmp/mysql_output.txt
mysql> show variables;

설명:

  • 결과를 화면에 표시하면서 동시에 파일에 저장
  • 로그 기록이 필요할 때 유용

6. 활용 사례

① 프로덕션 환경에서 변수 확인

시나리오:

  • 운영 서버의 MySQL 설정 확인
  • 200개 이상의 변수 존재
  • 특정 값만 빠르게 확인 필요

방법:

mysql> pager grep -i 'buffer'
mysql> show variables;

② 대용량 테이블 스키마 확인

시나리오:

  • 100개 이상의 컬럼을 가진 테이블
  • 특정 컬럼 정보만 확인

방법:

mysql> pager less -S
mysql> desc huge_table;

③ 프로세스 목록 모니터링

시나리오:

  • 실행 중인 쿼리 확인
  • 많은 연결이 있는 서버

방법:

mysql> pager less
mysql> show processlist;

7. 문제 해결

① pager 설정이 적용되지 않음

원인:

  • MySQL 클라이언트가 아닌 다른 도구 사용
  • 윈도우 환경에서 more 명령 미지원

해결:

  • MySQL 공식 클라이언트 사용 확인
  • 윈도우는 PowerShell이나 Git Bash 사용

② 페이저에서 빠져나올 수 없음

원인:

  • q 키를 눌렀지만 여전히 페이저 모드

해결:

mysql> nopager

③ 한글이 깨져서 표시됨

원인:

  • 터미널 인코딩 문제

해결:

# 터미널 인코딩 확인
echo $LANG

# UTF-8로 설정
export LANG=ko_KR.UTF-8

8. 모범 사례

① 세션별로 설정

접속 시마다 자동 설정:

# ~/.my.cnf 파일에 추가
[mysql]
pager=less -S

② 용도에 맞는 페이저 선택

간단한 확인:

pager more -d

상세한 탐색:

pager less -S

필터링 필요:

pager grep 'pattern'

③ 필요 시에만 사용

짧은 결과는 페이저 없이:

mysql> select count(*) from users;

긴 결과만 페이저 사용:

mysql> pager less
mysql> show create table large_table;
mysql> nopager

9. 주의사항

① 자동화 스크립트에서 사용 금지

문제:

  • 페이저가 활성화되면 스크립트가 멈춤

해결:

# 스크립트에서는 --skip-pager 옵션 사용
mysql --skip-pager -e "show variables"

② 파이프라인에서 주의

문제:

mysql -e "show tables" | wc -l

페이저가 활성화되어 있으면 파이프가 제대로 작동하지 않을 수 있음

해결:

mysql> nopager

참고 자료