-1. SHOW 명령어란

MySQL 로그인후 쉘상에서 실행되는 SHOW 명령어로 
Oracle의 show parameter, dbms_metadata 명령어와 동일한 역할 수행
 

-2. SHOW 명령어 리스트

 
1) SHOW DATABASE;
=> 현재 계정이 사용가능한 DATABASE 목록
   
2) SHOW CREATE TABLE db명.TABLE_NAME;
=> 해당 테이블을 만들기 위한 SQL 쿼리문을 출력함
 
3) show tables from db명;
=> 선택 DB의 table 리스트를 출력 
 
4) show index from db명.table;
=> 해당 table의 인덱스 보기
 
5) show columns from db명.테이블명;
=> desc db명.테이블명 과 같은 명령어로 
해당 table의 테이블 구조를 볼 수 있다
 
6) show table status from db명 like 'table_name';
=> 해당 table의 정보를 상세하게 출력
 
※show table status의 항목 설명 
 
MariaDB [(none)]> show table status from testdb like 'test'\G;
*************************** 1. row ***************************
           Name: test
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 13010
 Avg_row_length: 122
    Data_length: 1589248
Max_data_length: 0
   Index_length: 0
      Data_free: 4194304
 Auto_increment: NULL
    Create_time: 2017-10-31 04:58:39
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_bin
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)
 
 
 
 -Name : 테이블 이름 
 -Engine : 해당 테이블의 엔진
 -Row_format : 열저장 형태 (fixed,Dynamic,Compressed) 
 -Rows : 열의 수 
 -Avg_row_length : 열의 평균 길이 
 -Data_length : 데이타파일의 길이 = 위의 Rows * Avg_row_length 값과 근사치
 -Max_data_length : 해당 테이블이 사용할 수 있는 최대 데이터 파일의 크기 => myIsam 엔진 사용 테이블에 해당하는 설정으로 max_rows를 설정하여 제한 가능.
 -Index_length : 인덱스 파일의 길이 
 -Data_free : Max_data_length - Data_length 로 가용공간을 의미 
 -Auto_increment : 다음 자동증가 변수 
 -Create_time : 테이블이 생성된 시간 
 -Update_time : 데이타파일의 마지막 UPDATE 시간 
 -Check_time : 테이블의 마지막 체크시간 
 -Create_options : 테이블 생성시의 기타옵션 
 -Comment : 테이블 생성시의 명령어 
 
 
7) show variables;
=> 서버의 variables(환경 변수 등) 출력
예) show variables like '%buffer%';
buffer 관련 설정들의 값을 확인할 수 있음
 
 
8) show processlist
=> 현재 mysql db server에 연결되어있는 connection ( thread ) 정보를 출력할때 사용.
root로 접속시 모든 사용자의 연결이 보이며 계정사용자는 자신의 연결정보만 보임.
 
MariaDB [(none)]> show processlist\G;
 
*************************** 10. row ***************************
      Id: 2911252
    User: test_app
    Host: 10.10.10.10:49730
      db: test
 Command: Execute
    Time: 0
   State: Sending data
    Info: SELECT test(test.test)
    INTO test
    FROM (
          SELECT DISTINCT test
            FROM (  .....
Progress: 0.000
 
※show processlist의 항목 설명 
 -Id : 해당 커넥션(thread) 의 session id 
 -User : 해당 커넥션의 db계정
 -Host : 해당 커넥션의 접속 IP
 -db : 해당 커넥션이 수행하는 쿼리의 대상 db
 -Command : 해당 커넥션의 현재 command 상태로 execute , sleep 등이 있음
 -Time : 프로세스가 현재 커멘드 상태에서 동작한 시간
 -State : 해당 커넥션 (thread) 의 현재 상태에 대한 정보
 -Info : 현재 실행하고 있는 SQL로 show processlist로는 최대 100자까지 표시됨. 
         전부 표시하려면 show full processlist 커맨드로 수행
 
 
* 갱신되는 processlist 현황 모니터링 방법
 
리눅스쉘상태에서만 실행 가능하며
 
=> mysqladmin -u 아이디 -p패스워드 -i1 processlist
 
해당 계정에서의 processlist를 지속으로 화면에 -i1 1초에 한번씩 새로 화면에 출력하는 커맨드