본문 바로가기

Linux/Tip&Tech

MySQL 유용한 명령어 모음 #1 - SHOW

출처 : http://comnic.tistory.com

1. SHOW

 show는 단어 그대로의 의미다. 뭔가를 보여달라는 것으로 원하는 정보를 출력해주는 기능을 한다. 뒤에 붙는 의미에 따라 많은 것을 볼수 있다.
아래는 mysql.com에서 발취한 내용이다.

SHOW CHARACTER SET [like_or_where]
SHOW COLLATION [like_or_where]
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
SHOW CREATE DATABASE db_name
SHOW CREATE FUNCTION funcname
SHOW CREATE PROCEDURE procname
SHOW CREATE TABLE tbl_name
SHOW DATABASES [like_or_where]
SHOW ENGINE engine_name {LOGS | STATUS }
SHOW [STORAGE] ENGINES
SHOW ERRORS [LIMIT [offset,] row_count]
SHOW FUNCTION CODE sp_name
SHOW FUNCTION STATUS [like_or_where]
SHOW GRANTS FOR user
SHOW INDEX FROM tbl_name [FROM db_name]
SHOW INNODB STATUS
SHOW PROCEDURE CODE sp_name
SHOW PROCEDURE STATUS [like_or_where]
SHOW [BDB] LOGS
SHOW MUTEX STATUS
SHOW OPEN TABLES [FROM db_name] [like_or_where]
SHOW PRIVILEGES
SHOW [FULL] PROCESSLIST
SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]
SHOW PROFILES
SHOW [GLOBAL | SESSION] STATUS [like_or_where]
SHOW TABLE STATUS [FROM db_name] [like_or_where]
SHOW TABLES [FROM db_name] [like_or_where]
SHOW TRIGGERS [FROM db_name] [like_or_where]
SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
SHOW WARNINGS [LIMIT [offset,] row_count]

like_or_where:
    LIKE 'pattern'
  | WHERE expr

많은 것들 중 자주 사용되고 유용한 몇가지를 먼저 살펴 보자.


1) SHOW DATABASES : 생성되어 있는 database의 리스트를 보여준다.

 
사용법]

   mysql>show databases;
   mysql>show databases like '%com%';

  결과]

mysql> show databases;
+--------------------+
| Database                |
+--------------------+
| information_schema |
| comnic                  |
| mydb                     |
| mydb_euckr            |
| mydb_utf8               |
| mysql                    |
| test                       |
+-------------------+
7 rows in set (0.00 sec)

mysql> show databases like '%com%';
+--------------------+
| Database (%com%) |
+--------------------+
| comnic                   |
+--------------------+
1 row in set (0.00 sec)

 사용법은 위와 같이 두가지 경우가 있는데 Database가 많지 않다면 기냥 모두 뿌려서 보는 것이 편하며, 많은 Database를 가지고 있다면 LIKE를 이용하는 것이 편리하다.


2) SHOW TABLES : 현재 선택된 Database에 존재하는 테이블을 보여준다.

사용법]

   mysql>show tables;
   mysql>show tables like '%sta%';
   mysql>show tables from DB_NAME;
   mysql>show tables from DB_NAME like '%sta%';

  결과]

mysql> show tables;
+------------------+
| Tables_in_comnic |
+------------------+
| g4_auth               |
| g4_board             |
| g4_board_file       |
| g4_board_good    |
| g4_board_new     |
| g4_config            |
| g4_group            |
| g4_group_member |
| g4_login             |
| g4_mail              |
| g4_member         |
| g4_memo           |
| g4_point            |
| g4_poll              |
| g4_poll_etc        |
| g4_popular        |
| g4_scrap           |
| g4_token           |
| g4_visit             |
| g4_visit_sum      |
| posts                |
+----------------+
21 rows in set (0.01 sec)

mysql> show tables like '%board%';
+-----------------------------+
| Tables_in_comnic (%board%) |
+-----------------------------+
| g4_board                              |
| g4_board_file                        |
| g4_board_good                     |
| g4_board_new                      |
+-----------------------------+
4 rows in set (0.00 sec)

mysql> show tables from mysql;
+-------------------------+
| Tables_in_mysql           |
+-------------------------+
| blog_day_statistics          |
| columns_priv                  |
| db                                 |
| func                              |
| help_category                 |
| help_keyword                 |
| help_relation                   |
| help_topic                      |
| host                              |
| proc                              |
| procs_priv                      |
| tables_priv                     |
| time_zone                      |
| time_zone_leap_second   |
| time_zone_name             |
| time_zone_transition        |
| time_zone_transition_type |
| user                              |
+-------------------------+
18 rows in set (0.00 sec)
mysql> show tables from mysql like '%time%';
+---------------------------+
| Tables_in_mysql (%time%)  |
+---------------------------+
| time_zone                         |
| time_zone_leap_second     |
| time_zone_name                |
| time_zone_transition          |
| time_zone_transition_type   |
+---------------------------+
5 rows in set (0.00 sec)


 위의 결과를 보면 쉽게 이해가 갈 것이다. 특이한점은 from을 사용해서 다른 Database의 Table들을 볼 수 있다는 것이다.


3) SHOW PROCESSLIST : 현재 실행중인 Thread들을 보여 준다. [full]을 사용하면 쿼리의 전체문장을 다 볼 수 있으며, 기본적으로 자신의 계정에 해당하는 프로세스만 보이며, root로 접근하면 모든 프로세스를 다 볼 수 있다. 이 중 중단하고자 하는 프로세스가 있다면 Kill을 이용해 ID를 적어 주면 된다.

사용법]

   mysql>show processlist;
   mysql>show full processlist;

결과]

mysql> show processlist;
+----------+-----------+-----------+-----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| Id       | User      | Host      | db        | Command | Time | State        | Info                                                                                                 |
+----------+-----------+-----------+-----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| 22379391 | webtech   | localhost | webtech   | Query   |    0 | NULL         | show processlist                                                                                     |
| 22379524 | webtech   | localhost | webtech   | Query   |   13 | Sending data | select (sum(today_total)/count(today_total)) as RANK,today_total as DAY_TOTAL,BS_ID,idx as BT_IDX,bl |
+----------+-----------+-----------+-----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)


mysql> show full processlist;
+----------+-----------+-----------+-----------+---------+------+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Id       | User      | Host      | db        | Command | Time | State        | Info                                                                                                                                                                                                                                                                                                                  |
+----------+-----------+-----------+-----------+---------+------+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 22379391 | webtech   | localhost | webtech   | Query   |    0 | NULL         | show full processlist                                                                                                                                                                                                                                                                                                 |
| 22379524 | webtech   | localhost | webtech   | Query   |   14 | Sending data | select (sum(today_total)/count(today_total)) as RANK,today_total as DAY_TOTAL,BS_ID,idx as BT_IDX,name as BT_NAME,url as BT_URL,info as MEMO from (select * from STATISTICS where S_DATE>20080405) a left join aaaa on BS_ID=id where flag <> '0'  GROUP BY BS_ID order by RANK DESC |
+----------+-----------+-----------+-----------+---------+------+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

 결과에서 보는 것과 같이 full을 사용하지 않았을때는 각 문장의 처음 100 charaters만을 보여 준다. 즉, 프로세스마다의 전체 쿼리를 알고 싶다면 full을 사용해야 한다.

참고)계속 프로세스의 리스트를 보고자 한다면, Shell에서 아래와 같이 하면 된다.

[webtech@server1 ~]mysqladmin -uroot -p비밀번호 processlist -i 1

'Linux > Tip&Tech' 카테고리의 다른 글

VirtualBox Kernel Driver Not Installed  (0) 2009.06.23
MySQL 유용한 명령어 모음 #1 - SHOW 2  (0) 2009.06.17
tcpdump  (0) 2009.06.09
커널 파라메터 관련  (0) 2008.12.02
whowatch  (0) 2008.10.09