Rumah > Artikel > pangkalan data > Penunjuk prestasi MySQL analisis contoh ujian tekanan TPS+QPS+IOPS
QPS (Queries Per Second) ialah bilangan pertanyaan sesaat Untuk pangkalan data, ini ialah bilangan SQL yang dilaksanakan oleh pangkalan data sesaat (termasuk masukkan, pilih, kemas kini, padam dsb.).
TPS (Transaksi Sesaat) ialah bilangan transaksi sesaat. Untuk pangkalan data, TPS ialah bilangan transaksi yang dilaksanakan oleh pangkalan data sesaat, berdasarkan bilangan komitmen yang berjaya.
IOPS Bilangan operasi I/O yang dilakukan oleh cakera sesaat
Berlaku untuk innodb Transactions Per Second (Bilangan transaksi yang diproses sesaat), iaitu bilangan transaksi yang diproses oleh pelayan sesaat
Secara amnya, prestasi sistem penilaian diukur dengan bilangan transaksi teknikal yang diselesaikan sesaat. Kapasiti pemprosesan keseluruhan sistem bergantung pada nilai TPS modul dengan kapasiti pemprosesan terendah
mysql> SHOW GLOBAL STATUS LIKE 'Com_commit'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_commit | 22402 | +---------------+-------+ 1 row in set (0.00 sec) mysql> SHOW GLOBAL STATUS LIKE 'Com_rollback'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_rollback | 0 | +---------------+-------+ 1 row in set (0.00 sec) mysql> SHOW GLOBAL STATUS LIKE 'Uptime' -> ; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Uptime | 3319 | +---------------+-------+ 1 row in set (0.01 sec) TPS=(Com_commit + Com_rollback)/Uptime
Berkenaan dengan kedua-dua enjin InnoDB dan MyISAM Kadar pertanyaan sesaat (QPS) ialah ukuran jumlah trafik yang dikendalikan oleh pelayan pertanyaan tertentu dalam tempoh masa tertentu, sepadan dengan pengambilan/saat, iaitu bilangan permintaan respons sesaat, yang ialah kapasiti pemprosesan maksimum
IOPS (Input/Output Per Second) ialah volum input dan output (atau bilangan baca dan tulis) sesaat, yang merupakan penunjuk utama untuk mengukur prestasi cakera satu. IOPS merujuk kepada bilangan permintaan I/O yang boleh dikendalikan oleh sistem setiap unit masa Ia biasanya diukur dalam bilangan permintaan I/O yang diproses setiap saat yang biasanya membaca atau menulis permintaan operasi data. Untuk aplikasi yang kerap membaca dan menulis rawak, seperti OLTP (Pemprosesan Transaksi Dalam Talian), IOPS ialah penunjuk ukuran utama. Satu lagi penunjuk penting ialah daya pemprosesan data (Throughput), yang merujuk kepada jumlah data yang boleh berjaya dihantar setiap unit masa. Untuk aplikasi dengan bilangan bacaan dan tulis berurutan yang banyak, seperti VOD (Video Atas Permintaan), lebih banyak perhatian diberikan kepada penunjuk daya pengeluaran. IOPS boleh dipecahkan kepada penunjuk berikut: Jumlah IOPS, cakera IOPS di bawah beban I/O rawak bercampur dan berurutan
Ini paling konsisten dengan situasi I/O sebenar dan kebanyakan aplikasi memfokuskan pada penunjuk ini .
IOPS Bacaan Rawak, IOPS di bawah 100% beban bacaan rawak.
IOPS Tulis Rawak, IOPS di bawah 100% beban tulis rawak.
IOPS Bacaan Berjujukan, IOPS di bawah 100% beban bacaan berurutan.
IOPS Tulis Berjujukan, IOPS di bawah 100% beban tulis berjujukan.
Alat penanda aras ujian IOPS utama termasuk Iometer, IoZone, FIO, dsb., yang boleh digunakan secara menyeluruh untuk menguji IOPS cakera dalam situasi berbeza. Untuk sistem aplikasi, perlu terlebih dahulu menentukan ciri beban data, kemudian pilih penunjuk IOPS yang munasabah untuk pengukuran dan analisis perbandingan, dan pilih media storan dan sistem perisian yang sesuai dengan sewajarnya.
理论上可以计算出磁盘的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略数据传输时间。假设磁盘平均物理寻道时间为3ms, 磁盘转速为7200,10K,15K rpm,则磁盘IOPS理论最大值分别为, IOPS = 1000 / (3 + 60000/7200/2) = 140 IOPS = 1000 / (3 + 60000/10000/2) = 167 IOPS = 1000 / (3 + 60000/15000/2) = 200
mysqlslap ialah alat yang disertakan dengan MySQL untuk ujian prestasi beban dan ujian tekanan. Ia boleh mensimulasikan berbilang pelanggan yang memberi tekanan pada pangkalan data dan menjana laporan untuk memahami prestasi pangkalan data.
Proses menjalankan mysqlslap terutamanya dibahagikan kepada tiga langkah:
① Cipta perpustakaan dan jadual, dan import data untuk ujian. Proses ini dilakukan oleh satu utas.
② Mulakan ujian tekanan. Langkah ini boleh dilakukan menggunakan berbilang benang.
③ Bersihkan data ujian. Proses ini dilakukan oleh satu utas.
[root@jeames ~]# mysqlslap --bantuan
mysqlslap -uroot -proot -h292.168.1.54 -P3306 \ --create-schema=mysqlslap --auto-generate-sql \ --auto-generate-sql-load-type=mixed \ --concurrency=100,200 --number-of-queries=1000 \ --iterations=10 --number-int-cols=7 \ --number-char-cols=13 --auto-generate-sql-add-autoincrement Benchmark #运行所有语句的平均时间,单位秒 Average number of seconds to run all queries: 0.018 seconds #运行所有语句的最小秒数 Minimum number of seconds to run all queries: 0.018 seconds #运行所有语句的最大秒数 Maximum number of seconds to run all queries: 0.018 seconds #客户端数量 Number of clients running queries: 1 #每个客户端运行查询的平均数 Average number of queries per client: 0 该语句表示测试并发为 100 和 200 的情况,进行 1000 次访问(该值一般这样预估出来:并发客户数×每客户查询次数)。这样的测试方法迭代 10 次,最终显示最大、 最小、平均值 其中:--debug-info,代表要额外输出 CPU 以及内存的相关信息。如果报错 Option 'debug-info' used, but is disabled 请取消 debug-info 参数 -number-int-cols=7 表示生成的表中必须有 7 个 int 类型的列 -number-char-cols=13 表示生成的表中必须有 13 个 char 类型的列 -concurrency 代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是 10、50、100 个并发。 --engines 代表要测试的引擎,可以有多个,用分隔符隔开。 --iterations 代表要运行这些测试多少次。 --auto-generate-sql 代表用系统自己生成的 SQL 脚本来测试。 --auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed) --number-of-queries 代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算。 --debug-info 代表要额外输出 CPU 以及内存的相关信息。 --number-int-cols :创建测试表的 int 型字段数量 --auto-generate-sql-add-autoincrement : 代表对生成的表自动添加 auto_increment 列,从 5.1.18 版本开始 --number-char-cols 创建测试表的 char 型字段数量。 --create-schema 测试的 schema,MySQL 中 schema 也就是 database。 --query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者 sql 语句来执行测试。 --only-print 查看语句做了什么。
Atas ialah kandungan terperinci Penunjuk prestasi MySQL analisis contoh ujian tekanan TPS+QPS+IOPS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!