집 >데이터 베이스 >MySQL 튜토리얼 >mysqlslap 사용 소개
mysqlslap은 MySQL 버전 5.1.4부터 공식적으로 제공하는 스트레스 테스트 도구입니다. 스트레스 테스트는 MySQL에 액세스하는 여러 동시 클라이언트를 시뮬레이션하여 수행되며 동일한 환경에서 여러 스토리지 엔진의 동시 스트레스 성능 차이를 잘 비교할 수 있습니다.
mysqlslap 작업은 다음 세 단계로 구성됩니다. <br>1. 단일 연결을 사용하여 스키마, 테이블, 테스트 데이터 등을 생성합니다(MySQL에서는 스키마가 데이터베이스임). 로드 테스트, 여러 동시 클라이언트 연결을 사용할 수 있습니다. <br>3. 테스트 환경 정리(생성된 데이터, 테이블 등 삭제, 연결 끊기), 단일 연결을 사용합니다. <br>
사용 구문은 다음과 같습니다. # mysqlslap [옵션]<br>
공통 매개변수 [옵션] 상세 설명: <br>--auto-generate-sql, -a 자동으로 테스트 테이블 생성 및 데이터는 동시성 압력을 테스트하기 위해 mysqlslap 도구에서 생성된 SQL 스크립트를 사용함을 나타냅니다. <code><br>--auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力。<br>--auto-generate-sql-load-type=type 测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。取值包括:read,key,write,update和mixed(默认)。<br>--auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持。<br>--number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1<br>--number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1<br>--number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数)<br>--query="sql statement",-q 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。<br>--create="sql statement" 创建表的SQL语句或文件<br>--concurrency=N, -c N 表示并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者--delimiter参数指定的值做为分隔符。例如:--concurrency=100,200,500。<br>--engine=engine_name, -e engine_name 代表要测试的引擎,可以有多个,用分隔符隔开。例如:--engines=myisam,innodb。<br>--iterations=N, -i N 测试执行的迭代次数,代表要在不同并发环境下,各自运行测试多少次。<br>--only-print 只打印测试语句而不实际执行。<br>--debug-info, -T 打印内存和CPU的相关信息。<br>
更详细的参数请查阅官网文档:
说明:<br>测试的过程需要生成测试表,插入测试数据,这个mysqlslap可以自动生成,默认生成一个mysqlslap的schema,如果已经存在则先删除。可以用--only-print
来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹。
各种测试参数实例(-p后面跟的是mysql的root密码):
<br>Demo 1:
单线程测试。测试做了什么。<br># mysqlslap -a -uroot -p123456
<br>多线程测试。使用–concurrency来模拟客户端并发连接数。如,100个客户端并发连接数据库。<br># mysqlslap -a -c 100 -uroot -p123456
<br>迭代测试。用于需要多次执行测试得到平均值。如,迭代10次,取平均值。<br># mysqlslap -a -i 10 -uroot -p123456
<br>
Demo 2:<br>
测试同时不同的存储引擎的性能进行对比:<br># mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb -uroot -p123456
分别500个并发,每个并发客户端执行一次查询,共500次查询,和1000个并发,每个并发客户端执行一次查询,共1000次查询。为了准确起见,可以多迭代测试几次:<br>
--auto-generate-sql-load-type=type 테스트 문의 유형입니다. 테스트할 환경이 읽기 작업, 쓰기 작업 또는 이 둘의 혼합인지 여부를 나타냅니다. 값에는 읽기, 키, 쓰기, 업데이트 및 혼합(기본값)이 포함됩니다.
--number-char-cols=N, -x N 자동 생성된 테스트 테이블에 포함되는 문자 유형 열 수, 기본값 1
--number-int-cols=N, -y N 자동 생성된 테스트 테이블에서 포함되는 숫자 열 수, 기본값 1--number-of-queries=N 총 테스트 쿼리 수(동시 고객 수 × 고객당 쿼리 수)
--query="sql 문",-q 사용자 정의 사용 예를 들어, 사용자 정의 저장 프로시저나 SQL 문을 호출하여 테스트를 실행할 수 있습니다.--create="sql 문" 테이블의 SQL 문이나 파일을 생성합니다.
--concurrency=N, -c N은 동시성 양, 즉 동시에 select를 실행하기 위해 시뮬레이션되는 클라이언트 수를 나타냅니다. 쉼표나 --delimiter 매개변수에 지정된 값을 구분 기호로 사용하여 여러 값을 지정할 수 있습니다. 예: --concurrency=100,200,500.--engine=engine_name, -e 엔진 이름은 테스트할 엔진을 나타내며, 여러 개가 있을 수 있으며 구분 기호로 구분됩니다. 예: --engines=myisam,innodb.
--iterations=N, -i N은 테스트 실행의 반복 횟수로, 다양한 동시 환경에서 테스트를 실행해야 하는 횟수를 나타냅니다.--only-print는 실제로 실행하지 않고 테스트 문만 인쇄합니다. --debug-info, -T 메모리 및 CPU 관련 정보를 인쇄합니다.
더 자세한 매개변수는 공식 웹사이트 문서를 참조하세요: 🎜🎜 🎜🎜지침: 🎜테스트 프로세스에서는 테스트 테이블을 생성하고 테스트 데이터를 삽입해야 합니다. 이 mysqlslap은 자동으로 생성될 수 있습니다. 기본적으로 생성됩니다. 이미 존재하는 경우 먼저 삭제하세요.--only-print
를 사용하여 실제 테스트 프로세스를 인쇄할 수 있으며 전체 테스트가 완료된 후에는 데이터베이스에 흔적이 남지 않습니다. 🎜🎜 🎜🎜🎜다양한 테스트 매개변수의 예(-p 뒤에 mysql의 루트 비밀번호가 옵니다): 🎜🎜🎜🎜🎜🎜데모 1: 🎜🎜단일 스레드 테스트. 테스트 결과 🎜# mysqlslap -a -uroot -p123456
🎜멀티 스레드 테스트. –concurrency를 사용하여 동시 클라이언트 연결 수를 시뮬레이션합니다. 예를 들어 100개의 클라이언트가 데이터베이스에 동시에 연결됩니다. 🎜# mysqlslap -a -c 100 -uroot -p123456
🎜반복 테스트. 평균을 얻기 위해 여러 번 테스트를 수행하는 데 사용됩니다. 예를 들어 10번 반복하고 평균을 구합니다. 🎜# mysqlslap -a -i 10 -uroot -p123456
🎜🎜🎜데모 2:🎜
🎜🎜동시에 다양한 스토리지 엔진의 성능을 테스트하고 비교합니다. 🎜 # mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb -uroot -p123456
🎜🎜500 동시성, 각 동시 클라이언트 실행 하나의 쿼리, 총 500개의 쿼리 및 1000개의 동시성, 각 동시 클라이언트는 하나의 쿼리, 총 1000개의 쿼리를 실행합니다. 정확성을 위해 테스트를 여러 번 반복할 수 있습니다. 🎜
🎜🎜 두 테스트 모두 자동으로 SQL 테스트 스크립트를 생성하고 각각 10번 반복하여 평균을 구합니다. 테스트 환경에는 읽기, 쓰기 및 업데이트의 혼합 테스트가 포함되어 있습니다. 자체 증가 필드와 테스트 엔진은 innodb입니다. 🎜🎜# mysqlslap –uroot –p –concurrency=500 –I 10 –a –auto-generate-sql-type=mixed –auto-generate-sql-add-autoincrement –engine=innodb –number-of-queries=500🎜 🎜# mysqlslap –uroot –p –concurrency=1000 –I 10 –a –auto-generate-sql-type=mixed –auto-generate-sql-add-autoincrement –engine=innodb –number-of-queries=1000🎜🎜 반환 결과는 다음과 같습니다. 🎜🎜🎜🎜🎜위의 두 테스트에서 볼 수 있듯이 동시성 볼륨이 500에서 1000으로 변경되면 쿼리 시간이 약 두 배로 늘어납니다. 🎜위 내용은 mysqlslap 사용 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!