Database/MySQL

mysqlslap

catchv 2022. 11. 25. 09:43
반응형

1. mysqlslap

mysqlslap는 mysql 서버에 부하를 발생시켜 서버의 성능 및 벤치마크를 확인 할 수 있는 프로그래입니다.

mysqlslap --delimiter=";"	\
  --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)"	\
  --query="SELECT * FROM a" --concurrency=50 --iterations=200

mysql.com에 올라온 샘플을 우선 보면 a라는 테이블을 만들고 a에 23을 넣은 후에

"SELECT * FROM a"를 50개의 세션에서 200번 수행하는 것입니다.

Benchmark
        Average number of seconds to run all queries: 0.003 seconds
        Minimum number of seconds to run all queries: 0.002 seconds
        Maximum number of seconds to run all queries: 0.009 seconds
        Number of clients running queries: 50
        Average number of queries per client: 1

결과는 위와 같이 평균 최소 최대 실행시간을 표시해 줍니다. 서버의 CPU 등과 함께 모니터링을 할 수 있습니다.

여기서 하나 더 확인이 필요한 것이 해당 서버의 어떤 데이터베이스를 사용하여 a라는 테이블을 만드냐입니다.

mysqlslap는 "mysqlslap" 라는 데이터베이스를 자동으로 생성합니다. 만약 다른 데이터베이스를 사용하고자 하면 --create-schema=[데이터베이스명] 옵션을 사용할 수 있습니다. 그런데 문제는 mysqlslap를 사용 후 데이터베이스를 삭제합니다. 그러므로 이미 존재하는 데이터베이스를 사용하는 경우 데이터베이스가 삭제 되는 문제가 발생합니다. 

-- mysql에서 database를 생성한다.
mysql> create database testdb;
mysql> create table t1( col1 INT );

-- mysqlslap를 사용하여 테스트를 진행한다.
$ mysqlslap -uroot -p --delimiter=";" --query="SELECT * FROM t1" \
--concurrency=50 --iterations=200 \
--create-schema=testdb \

-- 데이터베이스를 확인하면 testdb가 삭제 되어 있다.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

운영중인 서버에서 만약 사용한다면 데이터베이스가 삭제 되는 큰 문제가 있습니다. 다행히도 --no-drop옵션을 제공합니다. 해당 옵션으로 쿼리만 실행해서 확인해 볼 수 있습니다.

$ mysqlslap -uroot -p --delimiter=";" --query="SELECT * FROM t1" \
--concurrency=50 --iterations=200 \
--create-schema=testdb \
--no-drop

 

 

 

반응형

'Database > MySQL' 카테고리의 다른 글

ibd2sdi  (0) 2022.11.25
mysqlshow  (0) 2022.11.25
MySQL Shell (1) - 설치  (0) 2022.11.21
mysqlcheck  (0) 2022.11.18
mysqladmin  (0) 2022.11.17