mysql 벤치 마크 툴인 DBT2에 대해서 설정하고, 서버의 성능에 대하여 측정 해본다.
테스트에 사용된 DB : MySQL 5.7.28
DBT2 : dbt2-0.37.50.15
DBT2의 다운로드 사이트 : https://dev.mysql.com/downloads/benchmarks.html
해당 사이트에서 툴을 다운로드 받은 후 테스트 할 서버로 업로드를 한다.
해당 툴의 압축을 해제 한다.
> cd cd /data/mytmp
> tar xzvf dbt2-0.37.50.15.tar.gz
해제한 툴을 설치 한다.
> cd /data/mytmp/dbt2-0.37.50.15/
> ./configure --with-mysql=/db/mysql/
> make
데이터 생성 및 데이터 로딩
> mkdir -p /data/mytmp/dbt2-0.37.50.15/output
> ./src/datagen -w 30 -d /data/mytmp/dbt2-0.37.50.15/output --mysql
mysql 에서 테스트에 사용할 유저 생성
> create user test@'localhost';
> grant all privileges on *.* to test@'localhost';
> create user test2@'%' identified by 'test2';
> grant all privileges on *.* to test2@'%';
> create user test2@'localhost' identified by 'test2';
> grant all privileges on *.* to test2@'localhost';
mysql 에 테스트 데이터 생성
> ./scripts/mysql/mysql_load_db.sh --mysql-path /db/mysql/bin/mysql --database dbt2 --path /data/mytmp/dbt2-0.37.50.15/output --socket /tmp/mysql.sock --user test --verbose
위와 같이 에러가 발생하는데 스크립트 상에 오류와 데이터에 문제가 좀 있어 수정이 필요하다.
mysql_load_db.sh 파일을 열어 다음 부분을 찾아 수정한다.
변경 전 | command_exec "$MYSQL $DB_NAME -e \"LOAD DATA $LOCAL INFILE \\\"$DB_PATH/$FN.data\\\" \ INTO TABLE $TABLE FIELDS TERMINATED BY '\t' ${COLUMN_NAMES} \"" |
젼경 후 | command_exec "$MYSQL $DB_NAME -e \"LOAD DATA LOCAL INFILE \\\"$DB_PATH/$FN.data\\\" \ INTO TABLE $TABLE character set latin1 FIELDS TERMINATED BY '\t' ${COLUMN_NAMES} \"" |
그리고 다시 수행
> ./scripts/mysql/mysql_load_db.sh --mysql-path /db/mysql/bin/mysql --database dbt2 --path /data/mytmp/dbt2-0.37.50.15/output --socket /tmp/mysql.sock --user test --verbose
프로시저 생성
> ./scripts/mysql/mysql_load_sp.sh --database dbt2 --sp-path ./storedproc/mysql/ --client-path /db/mysql/bin/ --user test2 --password test2
벤치마크 툴 수행
> ./scripts/run_mysql.sh -u test2 --password test2 -d dbt2 -s /tmp/mysql.sock -w 3 -t 300 -c 50 --lib-client-path /db/mysql/bin/mysql --verbose
워크로드가 적어 성능 측정이 되지 않는다.
적절하게 값을 늘려본다.
> ./scripts/run_mysql.sh -u test2 --password test2 -d dbt2 -s /tmp/mysql.sock -w 50 -t 300 -c 50 --lib-client-path /db/mysql/bin/mysql --verbose
해당 서버는 사양이 좋지 않아 분당 약 40 의 주문 트랜잭션 처리가 가능하다.
'MySQL' 카테고리의 다른 글
binlog2sql: Binlog를 이용한 Point In Time Recovery (0) | 2020.08.04 |
---|---|
mysql 벤치 마크 툴 sysbench (0) | 2020.04.16 |
optimizer trace (0) | 2019.11.26 |
MySQL EXPLAIN ANALYZE (0) | 2019.10.02 |
MySQL Hash Join Optimization (0) | 2019.10.02 |