Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- option pattern
- rc-service
- 옵션 패턴
- elasticSearch
- go
- 맥미니
- 윈도우즈 터미널
- user-secrets
- openrc
- User
- shared_preload_libraries
- vscode
- DotNet
- mysql
- Android
- module upgrade
- docker
- opentelemetry
- IDX Project
- golang
- AnimatedPositioned
- version 2
- 무선 디버깅
- otel
- Flutter
- SQL Server
- pg_stat_statements
- log
- Linux
- sqlc
Archives
- Today
- Total
CATCHV Blog
mysqlslap 본문
반응형
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 |
Comments