show processlist;
show full processlist;
mytop -u root -p
qps 및 프로세스 확인
mysqladmin -uroot -p proc stat
mysqladmin -uroot -p proc stat -i 1
show status like '%connect%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| Aborted_connects | 47 | 실패한 연결 수
| Connections | 4841 | 총 연결 수
| Max_used_connections | 54 | 최대 연결 수
| Threads_connected | 1 | 현재 열려 있는 연결 숫자.
show status like '%Threads%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| Delayed_insert_threads | 0 | 사용 중에 있는 INSERT DELAYED 핸들러 쓰레드 숫자
| Slow_launch_threads | 0 | slow_launch_time 시간보다 더많은 생성 시간이 필요한 쓰레드의 숫자.
| Threads_cached | 7 | 쓰레드 캐시에 있는 쓰레드의 숫자.
| Threads_connected | 2 | 현재 열려 있는 연결 숫자.
| Threads_created | 57 | 연결을 처리하기 위해 생성된 쓰레드의 숫자
| Threads_running | 1 | 슬리핑 (sleeping) 상태가 아닌쓰레드의 숫자.
+------------------------+-------+
dstat
cpu -> dstat -c
memory -> dstat -m
disk -> dstat -d
network -> dstat -n
dstat -c -m -n -d
mysql> show processlist;
* 현재 process의 snapshot이며, 현재 걸려 있는 쿼리를 볼 수 있다.
* slow query가 있는 경우 processlist로 확인해 볼 수 있다.
* processlist 테이블은 information_schema DB에 있다.
SELECT user,LEFT(host, instr(host,':')-1) IP , count(*)
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE user not in ('admin','repl','agent','system user')
GROUP BY LEFT(host, instr(host,':')-1);
* 현재 process의 snapshot을 접속된 client별로 집계해서 보여준다.
* 각 client별로 세션을 몇개 열었는지 알 수 있다.
mysql> show global status;
* 수행되는 쿼리 종류에 따라서 mysql status에 카운트가 누적됨.
* show global status로 com_select, com_update, com_delete ... 이 값을 1분 단위로 추출해서... "증가값 / 60" -> 초당 처리량(qps)을 계산할 수 있다.
* slow_query 값도 모니터링할 수 있다.
yum install -y dstat
show engin innodb status
show processlist
mysqladmin -uroot -p'rpdlaqlf' extended-status -r -i 1 | grep -E 'Com_select |Com_update |Com_insert |Com_delete '
sar -ur -o cpu.log 1 300
sar -f cpu.log
mpstat 1 300
cpu / io check
iostat -c 3
memory check
free -s 2
dstat
cpu -> dstat -c
memory -> dstat -m
disk -> dstat -d
network -> dstat -n
dstat -c -m -n -d
SHOW STATUS / SHOW VARIABLES
쿼리 캐쉬 히트율
Qcache_hits / (Qcache_hits + Com_select)
MyISAM
캐쉬 적중률
100 - ((Key_reads * 100) / Key_read_requests)
버퍼 사용률
100 - ((Key_blocks_unused * key_ cache_block_size) * 100 / key_buffer_size)
테이블 잠금 확인
SHOW OPEN TABLES FROM DB명;
SHOW OPEN TABLES FROM DB명 LIKE 'Table명';
잠금 대기 체크
SELECT
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_thread,
r.trx_query waiting_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread,
b.trx_query blocking_query
FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS w
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX b ON b.trx_id = w.blocking_trx_id
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX r ON r.trx_id = w.requesting_trx_id;
slowquery 확인
mysqldumpslow -r -s c slow-query.log > parsed_slowquery.log
쿼리 실행 횟수(-s c)를 역순(-r)
"mysqldumpslow -r -s c"
쿼리의 잠금 시간
"mysqldumpslow -r -s l"(테이블 수준의 잠금만 해당)
쿼리로 조회한 레코드(row sent)
"mysqldumpslow -r -s r"
tail -f mysql-slow.log | mysql_slow_log_filter -T 0.5 -R 1000
- 0.5초 이상 걸리거나 행을 1000개 이상 access 하는 쿼리만 추출
'연구개발 > MYSQL' 카테고리의 다른 글
mysql 로그 삭제하기 (0) | 2014.09.19 |
---|---|
STATUS Variable (0) | 2014.09.16 |
기초 Admin 10장 테스트 (0) | 2014.09.16 |
기초 Admin 9장 테스트 (0) | 2014.09.16 |
기초 Admin 4장 테스트 (0) | 2014.09.16 |