Difference between revisions of "Mysqlslap: tutorial stress test"
Jump to navigation
Jump to search
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
Line 1: | Line 1: | ||
− | |||
==Penggunaan Dasar== | ==Penggunaan Dasar== | ||
Line 160: | Line 159: | ||
− | Kita dapat | + | Kita dapat membuat custom tabel gunakan argmen --create dengan CREATE TABLE command. |
− | |||
− | |||
− | + | ==Membandingkan tabel engine== | |
− | |||
− | + | mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=700 --engine=innodb | |
− | Average number of seconds to run all queries: | + | Benchmark |
+ | Running for engine innodb | ||
+ | Average number of seconds to run all queries: 0.196 seconds | ||
+ | Minimum number of seconds to run all queries: 0.196 seconds | ||
+ | Maximum number of seconds to run all queries: 0.196 seconds | ||
+ | Number of clients running queries: 100 | ||
+ | Average number of queries per client: 7 | ||
− | |||
− | + | mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=700 --engine=myisam | |
− | Number of clients running queries: 100 | + | Benchmark |
+ | Running for engine myisam | ||
+ | Average number of seconds to run all queries: 0.119 seconds | ||
+ | Minimum number of seconds to run all queries: 0.119 seconds | ||
+ | Maximum number of seconds to run all queries: 0.119 seconds | ||
+ | Number of clients running queries: 100 | ||
+ | Average number of queries per client: 7 | ||
− | + | mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=700 --engine=memory | |
− | |||
− | + | Benchmark | |
− | + | Running for engine memory | |
− | + | Average number of seconds to run all queries: 0.131 seconds | |
− | + | Minimum number of seconds to run all queries: 0.131 seconds | |
− | + | Maximum number of seconds to run all queries: 0.131 seconds | |
− | + | Number of clients running queries: 100 | |
− | + | Average number of queries per client: 7 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Benchmark | ||
− | |||
− | Running for engine memory | ||
− | |||
− | Average number of seconds to run all queries: 0. | ||
− | |||
− | Minimum number of seconds to run all queries: 0. | ||
− | |||
− | Maximum number of seconds to run all queries: 0. | ||
− | |||
− | Number of clients running queries: 100 | ||
− | |||
− | Average number of queries per client: 7 | ||
− | |||
− | |||
− | + | ==Menyimpan Laporan== | |
− | |||
− | + | Cara paling gampang | |
− | + | mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=1000 --number-char-cols=4 --number-int-cols=7 >> /tmp/output.log | |
− | |||
− | + | Kita dapat memaksa untuk menyimpan dalam CSV format. | |
− | |||
− | + | mysqlslap --csv=/tmp/output.csv --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=1000 --number-char-cols=4 --number-int-cols=7 | |
− | + | Isi CSV file, | |
+ | cat /tmp/output.csv | ||
+ | ,mixed,0.638,0.638,0.638,100,10 | ||
+ | . | ||
==Referensi== | ==Referensi== | ||
* http://www.techrepublic.com/blog/how-do-i/how-do-i-stress-test-mysql-with-mysqlslap/ | * http://www.techrepublic.com/blog/how-do-i/how-do-i-stress-test-mysql-with-mysqlslap/ |
Latest revision as of 09:27, 8 June 2015
Penggunaan Dasar
mysqlslap --user=root --password=123456 --auto-generate-sql
Output:
Benchmark Average number of seconds to run all queries: 0.008 seconds Minimum number of seconds to run all queries: 0.008 seconds Maximum number of seconds to run all queries: 0.008 seconds Number of clients running queries: 1 Average number of queries per client: 0
Untuk melihat apa yang terjadi dengan --auto-generate-sql lakukan
mysqlslap --user=root --password=123456 --auto-generate-sql -vvv
Output:
Building Create Statements for Auto Building Query Statements for Auto Parsing engines to use. Starting Concurrency Test DROP SCHEMA IF EXISTS `mysqlslap`; Loading Pre-data CREATE SCHEMA `mysqlslap`; CREATE SCHEMA `mysqlslap`; CREATE TABLE `t1` (intcol1 INT(32) ,charcol1 VARCHAR(128)); INSERT INTO t1 VALUES (1804289383,'mxvtvmC9127qJNm06sGB8R92q2j7vTiiITRDGXM9ZLzkdekbWtmXKwZ2qG1llkRw5m9DHOFilEREk3q7oce8O3BEJC0woJsm6uzFAEynLH2xCsw1KQ1lT4zg9rdxBL'); .. .. INSERT INTO t1 VALUES (364531492,'qMa5SuKo4M5OM7ldvisSc6WK9rsG9E8sSixocHdgfa5uiiNTGFxkDJ4EAwWC2e4NL1BpAgWiFRcp1zIH6F1BayPdmwphatwnmzdwgzWnQ6SRxmcvtd6JRYwEKdvuWr'); Generating stats Benchmark Average number of seconds to run all queries: 0.011 seconds Minimum number of seconds to run all queries: 0.011 seconds Maximum number of seconds to run all queries: 0.011 seconds Number of clients running queries: 1 Average number of queries per client: 0 DROP SCHEMA IF EXISTS `mysqlslap`;
Untuk mensimulasi banyak & simultan client connections
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100
Output:
Benchmark Average number of seconds to run all queries: 0.320 seconds Minimum number of seconds to run all queries: 0.320 seconds Maximum number of seconds to run all queries: 0.320 seconds Number of clients running queries: 100 Average number of queries per client: 0
Coba naikan lagi
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=300
Output:
Benchmark Average number of seconds to run all queries: 1.674 seconds Minimum number of seconds to run all queries: 1.674 seconds Maximum number of seconds to run all queries: 1.674 seconds Number of clients running queries: 300 Average number of queries per client: 0
Catatan: pada suatu saat, kita akan menghadapi error "Too many connections". Kita perlu mengatur variable MySQL 'max_connections' yang mengatur concurrent connections ke server.
Run test lebih dari satu kali
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --iterations=5
Output:
Benchmark Average number of seconds to run all queries: 0.313 seconds Minimum number of seconds to run all queries: 0.286 seconds Maximum number of seconds to run all queries: 0.347 seconds Number of clients running queries: 100 Average number of queries per client: 0
Menentukan total queries
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=10000
Output:
Benchmark Average number of seconds to run all queries: 9.486 seconds Minimum number of seconds to run all queries: 9.486 seconds Maximum number of seconds to run all queries: 9.486 seconds Number of clients running queries: 100 Average number of queries per client: 100
Menggunakan Tables yang besar
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=1000 --number-char-cols=4 --number-int-cols=7
Output:
Benchmark Average number of seconds to run all queries: 0.575 seconds Minimum number of seconds to run all queries: 0.575 seconds Maximum number of seconds to run all queries: 0.575 seconds Number of clients running queries: 100 Average number of queries per client: 10
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-char-cols=4
Benchmark Average number of seconds to run all queries: 0.452 seconds Minimum number of seconds to run all queries: 0.452 seconds Maximum number of seconds to run all queries: 0.452 seconds Number of clients running queries: 100 Average number of queries per client: 0
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-int-cols=5
Benchmark Average number of seconds to run all queries: 0.404 seconds Minimum number of seconds to run all queries: 0.404 seconds Maximum number of seconds to run all queries: 0.404 seconds Number of clients running queries: 100 Average number of queries per client: 0
Menggunakan Custom Query
Asumsi kita mempunyai
- database world
mysqlslap --user=root --password=123456 --create-schema=world --query="SELECT City.Name, City.District FROM City, Country WHERE City.CountryCode = Country.Code AND Country.Code = 'IND';" --concurrency=100 --iterations=5
Untuk mempercepat ada baiknya dilakukan INDEX pada tabel City
mysql -u root -p123456
USE world; CREATE INDEX idx_ccode ON City(CountryCode); exit
mysqlslap --user=john --create-schema=world --query="SELECT City.Name, City.District FROM City, Country WHERE City.CountryCode = Country.Code AND Country.Code = 'IND';" --concurrency=100 --iterations=5
Kita dapat membuat custom tabel gunakan argmen --create dengan CREATE TABLE command.
Membandingkan tabel engine
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=700 --engine=innodb
Benchmark Running for engine innodb Average number of seconds to run all queries: 0.196 seconds Minimum number of seconds to run all queries: 0.196 seconds Maximum number of seconds to run all queries: 0.196 seconds Number of clients running queries: 100 Average number of queries per client: 7
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=700 --engine=myisam
Benchmark Running for engine myisam Average number of seconds to run all queries: 0.119 seconds Minimum number of seconds to run all queries: 0.119 seconds Maximum number of seconds to run all queries: 0.119 seconds Number of clients running queries: 100 Average number of queries per client: 7
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=700 --engine=memory
Benchmark Running for engine memory Average number of seconds to run all queries: 0.131 seconds Minimum number of seconds to run all queries: 0.131 seconds Maximum number of seconds to run all queries: 0.131 seconds Number of clients running queries: 100 Average number of queries per client: 7
Menyimpan Laporan
Cara paling gampang
mysqlslap --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=1000 --number-char-cols=4 --number-int-cols=7 >> /tmp/output.log
Kita dapat memaksa untuk menyimpan dalam CSV format.
mysqlslap --csv=/tmp/output.csv --user=root --password=123456 --auto-generate-sql --concurrency=100 --number-of-queries=1000 --number-char-cols=4 --number-int-cols=7
Isi CSV file,
cat /tmp/output.csv
,mixed,0.638,0.638,0.638,100,10
.