sysbench 1.0.20 를 이용한 MySQL 성능 (performance) 테스트
sysbench 는 설치된 MySQL DB 서버의 성능을 확인하는 도구 입니다.
아래는 Rocky Linux 8.6 환경에서 테스트 하였습니다.
1. 설치
# yum -y install sysbench
2. 테스트 DB 생성
데이터를 쓰고 읽을 테스트용 DB 를 하나 만들어 줍니다.
mysql> create database test;
Query OK, 0 rows affected (0.01 sec)
3. 테스트 데이터 준비
# sysbench \
--mysql-host=localhost \
--mysql-port=3306 \
--mysql-socket=/tmp/mysql.sock \
--mysql-user=root \
--mysql-password=12345678 \
--mysql-db=test \
--table-size=1000000 \
--tables=5 \
/usr/share/sysbench/oltp_read_only.lua \
prepare
(결과)
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Creating table 'sbtest1'...
Inserting 1000000 records into 'sbtest1'
Creating a secondary index on 'sbtest1'...
Creating table 'sbtest2'...
Inserting 1000000 records into 'sbtest2'
Creating a secondary index on 'sbtest2'...
Creating table 'sbtest3'...
Inserting 1000000 records into 'sbtest3'
Creating a secondary index on 'sbtest3'...
Creating table 'sbtest4'...
Inserting 1000000 records into 'sbtest4'
Creating a secondary index on 'sbtest4'...
Creating table 'sbtest5'...
Inserting 1000000 records into 'sbtest5'
Creating a secondary index on 'sbtest5'...
* 참고1
명령 실행시 마지막줄 prepare 는 sysbench 에서 지원하는 명령어이며 사용 가능한 명령어 종류는 아래와 같습니다.
prepare, prewarm, run, cleanup, help
주로 사용하는 옵션
- prepare : 테스트를 준비합니다. test 데이터베이스에 테스트할 임시 데이터를 넣어 놓습니다.
- run : 실제적인 퍼포먼스 테스트를 진행 합니다.
- cleanup : 테스트 하면서 생성된 테이블 및 레코드를 삭제합니다.
* 참고2
/usr/share/sysbench 디렉토리에는 데이터 insert, read, delete 등의 테스트를 할 수 있는 파일이 준비되어 있습니다.
아래에서 순차적으로 실행해 보도록 하겠습니다.
(확인)
테스트 DB 에 테이블 생성 및 데이터 입력이 확인되었습니다.
mysql> show tables;
+--------------------+
| Tables_in_sysbench |
+--------------------+
| sbtest1 |
| sbtest2 |
| sbtest3 |
| sbtest4 |
| sbtest5 |
+--------------------+
5 rows in set (0.00 sec)
mysql> select count(*) from sbtest1;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (0.75 sec)
4. 테스트 실행
# sysbench \
--mysql-host=localhost \
--mysql-port=3306 \
--mysql-socket=/tmp/mysql.sock \
--mysql-user=root \
--mysql-password=12345678 \
--mysql-db=test \
--table-size=1000000 \
--tables=5 \
/usr/share/sysbench/oltp_read_only.lua \
run
(결과)
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Initializing worker threads...
Threads started!
SQL statistics:
queries performed:
read: 145838
write: 0
other: 20834
total: 166672
transactions: 10417 (1041.42 per sec.)
queries: 166672 (16662.68 per sec.) // 초당 16,662 개의 read 쿼리가 실행되었습니다.
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 10.0010s
total number of events: 10417
Latency (ms):
min: 0.91
avg: 0.96
max: 1.87
95th percentile: 1.01
sum: 9995.05
Threads fairness:
events (avg/stddev): 10417.0000/0.00
execution time (avg/stddev): 9.9950/0.00
(결과2)
oltp_insert.lua 파일로 쓰기 테스트를 한 경우는 아래와 같은 결과가 나왔습니다.
transactions: 56036 (5602.54 per sec.)
queries: 56036 (5602.54 per sec.) // 초당 5,602 개의 write 쿼리가 실행되었습니다.
(결과3)
oltp_delete.lua 파일로 삭제 테스트를 한 경우는 아래와 같은 결과가 나왔습니다.
transactions: 87458 (8744.05 per sec.)
queries: 87458 (8744.05 per sec.) // 초당 8,744 개의 records 를 삭제 하였습니다.
5. 테스트 데이터 삭제
테스트를 마쳤으면 용량 확보를 위해 테스트 데이터를 삭제 합니다.
# sysbench \
--mysql-host=localhost \
--mysql-port=3306 \
--mysql-socket=/tmp/mysql.sock \
--mysql-user=root \
--mysql-password=12345678 \
--mysql-db=test \
--table-size=1000000 \
--tables=5 \
/usr/share/sysbench/oltp_read_only.lua \
cleanup
(결과)
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Dropping table 'sbtest1'...
Dropping table 'sbtest2'...
Dropping table 'sbtest3'...
Dropping table 'sbtest4'...
Dropping table 'sbtest5'...
테스트 DB 도 같이 삭제해 줍니다.
mysql> drop database test;
Query OK, 0 rows affected (0.01 sec)
'리눅스 > MySQL' 카테고리의 다른 글
mariabackup 을 이용한 MariaDB 10.6.9 Replication 구성하기 (0) | 2022.09.19 |
---|---|
Rocky Linux 8.6 에서 MariaDB 10.9.2 소스 설치하기 (with InnoDB 이노디비 설정) (0) | 2022.09.13 |
Rocky Linux 8.6 에서 MySQL 8.0.30 소스 설치하기 (with InnoDB 이노디비 설정) (0) | 2022.08.11 |
MySQL 테이블별 용량 및 레코드 수 조회하기 (0) | 2022.08.09 |
xtrabackup 을 이용한 MySQL 8.0.28 Replication 구성하기 (0) | 2022.07.28 |