MySQL的关键性能指标
- 吞吐量
吞吐量指单位时间内的事务处理数。常用的测试单位是每秒事务数(TPS),还有一个指标每秒请求查询次数(QPS)。
- 磁盘的IOPS:每秒处理的IO请求数。
- 磁盘的吞吐量:每秒磁盘I/O 的流量。
- 响应时间
这个指标用于测试任务所需的整体时间。根据具体的应用,测试的时间单位可能是微妙、毫秒、秒或者分钟。响应时间是评估系统其他指标的基础。
- 并发性
指正在工作中的并发操作,或者同时工作的线程数或者连接数。
- 在线用户数不等于web站点的并发数。
- web站点的并发数不等于数据库的并发数。
总结
在压力测试时,提高并发性是为了在单位时间内提交更多的事务让系统处理,用来测试系统的吞吐量瓶颈。但随着处理事务的增加,系统的整体响应时间可能会变长,只有响应时间在可接受范围内的吞吐量才具有参考意义。
示例
订单业务,要求响应时间在5秒内:
- 50并发,TpmC为20,响应时间在5秒内的事务占95%。
- 10并发,TpmC为350,响应时间在5秒内的事务占5%。
获取性能的指标
- QPS
- TPS
- 并发性
- MySQL自带测试工具:mysqlsap
QPS
手动获取指标
MariaDB [(none)]> show global status like 'QUESTIONS';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Questions | 3 |
+---------------+-------+
1 row in set (0.00 sec)
自动获取指标
[root@cnbugs1 ~]# mysqladmin -P3306 -uroot -h127.0.0.1 -r -i 1 extended-status
+------------------------------------------+-------------+
| Variable_name | Value |
+------------------------------------------+-------------+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Access_denied_errors | 0 |
| Aria_pagecache_blocks_not_flushed | 0 |
| Aria_pagecache_blocks_unused | 15737 |
| Aria_pagecache_blocks_used | 0 |
| Aria_pagecache_read_requests | 0 |
| Aria_pagecache_reads | 0 |
| Aria_pagecache_write_requests | 0 |
| Aria_pagecache_writes | 0 |
| Aria_transaction_log_syncs | 0 |
| Binlog_commits | 0 |
| Binlog_group_commits | 0 |
| Binlog_snapshot_file | 0 |
| Binlog_snapshot_position | 0 |
| Binlog_bytes_written | 0 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Binlog_stmt_cache_disk_use | 0 |
| Binlog_stmt_cache_use | 0 |
| Busy_time | 0 |
| Bytes_received | 967 |
| Bytes_sent | 170032 |
| Com_admin_commands | 1 |
| Com_alter_db | 0 |
| Com_alter_db_upgrade | 0 |
| Com_alter_event | 0 |
| Com_alter_function | 0 |
| Com_alter_procedure | 0 |
| Com_alter_server | 0 |
| Com_alter_table | 0 |
| Com_alter_tablespace | 0 |
| Com_analyze | 0 |
| Com_assign_to_keycache | 0 |
| Com_begin | 0 |
| Com_binlog | 0 |
| Com_call_procedure | 0 |
| Com_change_db | 0 |
| Com_change_master | 0 |
| Com_check | 0 |
| Com_checksum | 0 |
| Com_commit | 0 |
| Com_create_db | 0 |
| Com_create_event | 0 |
| Com_create_function | 0 |
| Com_create_index | 0 |
| Com_create_procedure | 0 |
| Com_create_server | 0 |
| Com_create_table | 0 |
| Com_create_trigger | 0 |
| Com_create_udf | 0 |
| Com_create_user | 0 |
| Com_create_view | 0 |
| Com_dealloc_sql | 0 |
| Com_delete | 0 |
| Com_delete_multi | 0 |
| Com_do | 0 |
| Com_drop_db | 0 |
| Com_drop_event | 0 |
| Com_drop_function | 0 |
| Com_drop_index | 0 |
| Com_drop_procedure | 0 |
| Com_drop_server | 0 |
| Com_drop_table | 0 |
| Com_drop_trigger | 0 |
| Com_drop_user | 0 |
| Com_drop_view | 0 |
| Com_empty_query | 0 |
| Com_execute_sql | 0 |
| Com_flush | 0 |
| Com_grant | 0 |
| Com_ha_close | 0 |
| Com_ha_open | 0 |
| Com_ha_read | 0 |
| Com_help | 0 |
| Com_insert | 0 |
| Com_insert_select | 0 |
| Com_install_plugin | 0 |
| Com_kill | 0 |
| Com_load | 0 |
| Com_lock_tables | 0 |
| Com_optimize | 0 |
| Com_preload_keys | 0 |
| Com_prepare_sql | 0 |
| Com_purge | 0 |
| Com_purge_before_date | 0 |
| Com_release_savepoint | 0 |
| Com_rename_table | 0 |
| Com_rename_user | 0 |
| Com_repair | 0 |
| Com_replace | 0 |
| Com_replace_select | 0 |
| Com_reset | 0 |
| Com_resignal | 0 |
| Com_revoke | 0 |
| Com_revoke_all | 0 |
| Com_rollback | 0 |
| Com_rollback_to_savepoint | 0 |
| Com_savepoint | 0 |
| Com_select | 1 |
| Com_set_option | 0 |
| Com_show_authors | 0 |
| Com_show_binlog_events | 0 |
| Com_show_binlogs | 0 |
| Com_show_charsets | 0 |
| Com_show_client_statistics | 0 |
| Com_show_collations | 0 |
| Com_show_contributors | 0 |
| Com_show_create_db | 0 |
| Com_show_create_event | 0 |
| Com_show_create_func | 0 |
| Com_show_create_proc | 0 |
| Com_show_create_table | 0 |
| Com_show_create_trigger | 0 |
| Com_show_databases | 0 |
| Com_show_engine_logs | 0 |
| Com_show_engine_mutex | 0 |
| Com_show_engine_status | 0 |
| Com_show_errors | 0 |
| Com_show_events | 0 |
| Com_show_fields | 0 |
| Com_show_function_status | 0 |
| Com_show_grants | 0 |
| Com_show_index_statistics | 0 |
| Com_show_keys | 0 |
| Com_show_master_status | 0 |
| Com_show_open_tables | 0 |
| Com_show_plugins | 0 |
| Com_show_privileges | 0 |
| Com_show_procedure_status | 0 |
| Com_show_processlist | 0 |
| Com_show_profile | 0 |
| Com_show_profiles | 0 |
| Com_show_relaylog_events | 0 |
| Com_show_slave_hosts | 0 |
| Com_show_slave_status | 0 |
| Com_show_status | 18 |
| Com_show_storage_engines | 0 |
| Com_show_table_statistics | 0 |
| Com_show_table_status | 0 |
| Com_show_tables | 0 |
| Com_show_triggers | 0 |
| Com_show_user_statistics | 0 |
| Com_show_variables | 0 |
| Com_show_warnings | 0 |
| Com_signal | 0 |
| Com_slave_start | 0 |
| Com_slave_stop | 0 |
| Com_stmt_close | 0 |
| Com_stmt_execute | 0 |
| Com_stmt_fetch | 0 |
| Com_stmt_prepare | 0 |
| Com_stmt_reprepare | 0 |
| Com_stmt_reset | 0 |
| Com_stmt_send_long_data | 0 |
| Com_truncate | 0 |
| Com_uninstall_plugin | 0 |
| Com_unlock_tables | 0 |
| Com_update | 0 |
| Com_update_multi | 0 |
| Com_xa_commit | 0 |
| Com_xa_end | 0 |
| Com_xa_prepare | 0 |
| Com_xa_recover | 0 |
| Com_xa_rollback | 0 |
| Com_xa_start | 0 |
| Compression | 0 |
| Connections | 5 |
| Cpu_time | 0 |
| Created_tmp_disk_tables | 0 |
| Created_tmp_files | 6 |
| Created_tmp_tables | 18 |
| Delayed_errors | 0 |
| Delayed_insert_threads | 0 |
| Delayed_writes | 0 |
| Empty_queries | 0 |
| Executed_events | 0 |
| Executed_triggers | 0 |
| Feature_dynamic_columns | 0 |
| Feature_fulltext | 0 |
| Feature_gis | 0 |
| Feature_locale | 0 |
| Feature_subquery | 0 |
| Feature_timezone | 0 |
| Feature_trigger | 0 |
| Feature_xml | 0 |
| Flush_commands | 2 |
| Handler_commit | 0 |
| Handler_delete | 0 |
| Handler_discover | 0 |
| Handler_icp_attempts | 0 |
| Handler_icp_match | 0 |
| Handler_mrr_init | 0 |
| Handler_mrr_key_refills | 0 |
| Handler_mrr_rowid_refills | 0 |
| Handler_prepare | 0 |
| Handler_read_first | 0 |
| Handler_read_key | 0 |
| Handler_read_last | 0 |
| Handler_read_next | 0 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 0 |
| Handler_read_rnd_deleted | 0 |
| Handler_read_rnd_next | 6214 |
| Handler_rollback | 0 |
| Handler_savepoint | 0 |
| Handler_savepoint_rollback | 0 |
| Handler_tmp_update | 0 |
| Handler_tmp_write | 6197 |
| Handler_update | 0 |
| Handler_write | 0 |
| Innodb_adaptive_hash_cells | 276671 |
| Innodb_adaptive_hash_hash_searches | 0 |
| Innodb_adaptive_hash_heap_buffers | 0 |
| Innodb_adaptive_hash_non_hash_searches | 32 |
| Innodb_background_log_sync | 1 |
| Innodb_buffer_pool_bytes_data | 5029888 |
| Innodb_buffer_pool_bytes_dirty | 0 |
| Innodb_buffer_pool_pages_data | 307 |
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_pages_flushed | 317 |
| Innodb_buffer_pool_pages_free | 7883 |
| Innodb_buffer_pool_pages_LRU_flushed | 0 |
| Innodb_buffer_pool_pages_made_not_young | 0 |
| Innodb_buffer_pool_pages_made_young | 0 |
| Innodb_buffer_pool_pages_misc | 1 |
| Innodb_buffer_pool_pages_old | 0 |
| Innodb_buffer_pool_pages_total | 8191 |
| Innodb_buffer_pool_read_ahead | 0 |
| Innodb_buffer_pool_read_ahead_evicted | 0 |
| Innodb_buffer_pool_read_ahead_rnd | 0 |
| Innodb_buffer_pool_read_requests | 2572 |
| Innodb_buffer_pool_reads | 0 |
| Innodb_buffer_pool_wait_free | 0 |
| Innodb_buffer_pool_write_requests | 2397 |
| Innodb_checkpoint_age | 0 |
| Innodb_checkpoint_max_age | 7782360 |
| Innodb_checkpoint_target_age | 7539162 |
| Innodb_current_row_locks | 0 |
| Innodb_data_fsyncs | 19 |
| Innodb_data_pending_fsyncs | 0 |
| Innodb_data_pending_reads | 0 |
| Innodb_data_pending_writes | 0 |
| Innodb_data_read | 0 |
| Innodb_data_reads | 0 |
| Innodb_data_writes | 359 |
| Innodb_data_written | 9131520 |
| Innodb_dblwr_pages_written | 143 |
| Innodb_dblwr_writes | 2 |
| Innodb_deadlocks | 0 |
| Innodb_descriptors_memory | 8000 |
| Innodb_dict_tables | 8 |
| Innodb_have_atomic_builtins | 0 |
| Innodb_history_list_length | 0 |
| Innodb_ibuf_discarded_delete_marks | 0 |
| Innodb_ibuf_discarded_deletes | 0 |
| Innodb_ibuf_discarded_inserts | 0 |
| Innodb_ibuf_free_list | 0 |
| Innodb_ibuf_merged_delete_marks | 0 |
| Innodb_ibuf_merged_deletes | 0 |
| Innodb_ibuf_merged_inserts | 0 |
| Innodb_ibuf_merges | 0 |
| Innodb_ibuf_segment_size | 2 |
| Innodb_ibuf_size | 1 |
| Innodb_log_waits | 0 |
| Innodb_log_write_requests | 3177 |
| Innodb_log_writes | 4 |
| Innodb_lsn_current | 1597945 |
| Innodb_lsn_flushed | 1597945 |
| Innodb_lsn_last_checkpoint | 1597945 |
| Innodb_master_thread_1_second_loops | 1 |
| Innodb_master_thread_10_second_loops | 0 |
| Innodb_master_thread_background_loops | 2 |
| Innodb_master_thread_main_flush_loops | 2 |
| Innodb_master_thread_sleeps | 1 |
| Innodb_max_trx_id | 769 |
| Innodb_mem_adaptive_hash | 2233968 |
| Innodb_mem_dictionary | 593780 |
| Innodb_mem_total | 137756672 |
| Innodb_mutex_os_waits | 1 |
| Innodb_mutex_spin_rounds | 58 |
| Innodb_mutex_spin_waits | 5 |
| Innodb_oldest_view_low_limit_trx_id | 768 |
| Innodb_os_log_fsyncs | 10 |
| Innodb_os_log_pending_fsyncs | 0 |
| Innodb_os_log_pending_writes | 0 |
| Innodb_os_log_written | 1591296 |
| Innodb_page_size | 16384 |
| Innodb_pages_created | 307 |
| Innodb_pages_read | 0 |
| Innodb_pages_written | 317 |
| Innodb_purge_trx_id | 0 |
| Innodb_purge_undo_no | 0 |
| Innodb_read_views_memory | 88 |
| Innodb_row_lock_current_waits | 0 |
| Innodb_row_lock_time | 0 |
| Innodb_row_lock_time_avg | 0 |
| Innodb_row_lock_time_max | 0 |
| Innodb_row_lock_waits | 0 |
| Innodb_rows_deleted | 0 |
| Innodb_rows_inserted | 0 |
| Innodb_rows_read | 0 |
| Innodb_rows_updated | 0 |
| Innodb_s_lock_os_waits | 7 |
| Innodb_s_lock_spin_rounds | 210 |
| Innodb_s_lock_spin_waits | 7 |
| Innodb_truncated_status_writes | 0 |
| Innodb_x_lock_os_waits | 1 |
| Innodb_x_lock_spin_rounds | 30 |
| Innodb_x_lock_spin_waits | 0 |
| Key_blocks_not_flushed | 0 |
| Key_blocks_unused | 107171 |
| Key_blocks_used | 0 |
| Key_blocks_warm | 0 |
| Key_read_requests | 0 |
| Key_reads | 0 |
| Key_write_requests | 0 |
| Key_writes | 0 |
| Last_query_cost | 0 |
| Max_used_connections | 1 |
| Not_flushed_delayed_rows | 0 |
| Open_files | 21 |
| Open_streams | 0 |
| Open_table_definitions | 33 |
| Open_tables | 26 |
| Opened_files | 83 |
| Opened_table_definitions | 0 |
| Opened_tables | 0 |
| Opened_views | 0 |
| Performance_schema_cond_classes_lost | 0 |
| Performance_schema_cond_instances_lost | 0 |
| Performance_schema_file_classes_lost | 0 |
| Performance_schema_file_handles_lost | 0 |
| Performance_schema_file_instances_lost | 0 |
| Performance_schema_locker_lost | 0 |
| Performance_schema_mutex_classes_lost | 0 |
| Performance_schema_mutex_instances_lost | 0 |
| Performance_schema_rwlock_classes_lost | 0 |
| Performance_schema_rwlock_instances_lost | 0 |
| Performance_schema_table_handles_lost | 0 |
| Performance_schema_table_instances_lost | 0 |
| Performance_schema_thread_classes_lost | 0 |
| Performance_schema_thread_instances_lost | 0 |
| Prepared_stmt_count | 0 |
| Qcache_free_blocks | 0 |
| Qcache_free_memory | 0 |
| Qcache_hits | 0 |
| Qcache_inserts | 0 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 0 |
| Qcache_queries_in_cache | 0 |
| Qcache_total_blocks | 0 |
| Queries | 23 |
| Questions | 22 |
| Rows_read | 0 |
| Rows_sent | 6198 |
| Rows_tmp_read | 6197 |
| Rpl_status | 0 |
| Select_full_join | 0 |
| Select_full_range_join | 0 |
| Select_range | 0 |
| Select_range_check | 0 |
| Select_scan | 18 |
| Slave_heartbeat_period | 0 |
| Slave_open_temp_tables | 0 |
| Slave_received_heartbeats | 0 |
| Slave_retried_transactions | 0 |
| Slave_running | 0 |
| Slow_launch_threads | 0 |
| Slow_queries | 0 |
| Sort_merge_passes | 0 |
| Sort_range | 0 |
| Sort_rows | 0 |
| Sort_scan | 0 |
| Ssl_accept_renegotiates | 0 |
| Ssl_accepts | 0 |
| Ssl_callback_cache_hits | 0 |
| Ssl_cipher | 0 |
| Ssl_cipher_list | 0 |
| Ssl_client_connects | 0 |
| Ssl_connect_renegotiates | 0 |
| Ssl_ctx_verify_depth | 0 |
| Ssl_ctx_verify_mode | 0 |
| Ssl_default_timeout | 0 |
| Ssl_finished_accepts | 0 |
| Ssl_finished_connects | 0 |
| Ssl_session_cache_hits | 0 |
| Ssl_session_cache_misses | 0 |
| Ssl_session_cache_mode | 0 |
| Ssl_session_cache_overflows | 0 |
| Ssl_session_cache_size | 0 |
| Ssl_session_cache_timeouts | 0 |
| Ssl_sessions_reused | 0 |
| Ssl_used_session_cache_entries | 0 |
| Ssl_verify_depth | 0 |
| Ssl_verify_mode | 0 |
| Ssl_version | 0 |
| Subquery_cache_hit | 0 |
| Subquery_cache_miss | 0 |
| Syncs | 0 |
| Table_locks_immediate | 36 |
| Table_locks_waited | 0 |
| Tc_log_max_pages_used | 0 |
| Tc_log_page_size | 0 |
| Tc_log_page_waits | 0 |
| Threadpool_idle_threads | 0 |
| Threadpool_threads | 0 |
| Threads_cached | 0 |
| Threads_connected | 1 |
| Threads_created | 4 |
| Threads_running | 1 |
| Uptime | 211 |
| Uptime_since_flush_status | 211 |
+------------------------------------------+-------------+
[root@cnbugs1 ~]# mysqladmin -P3306 -uroot -h127.0.0.1 -r -i 1 extended-status|grep 'Questions';
| Questions | 6 |
| Questions | 1 |
| Questions | 1 |
| Questions | 1 |
-i 指定间隔时间
-r 显示本次与上次之间状态值之间的差值
TPS
计算公式为
TPS=(com_comit + com_rolback)/seconds
[root@cnbugs1 ~]# mysqladmin -P3306 -urot -h127.0.0.1 -r -i 1 extended-status|grep -v "Com_rolback_to_savepoint"|grep -E "Com_commit|Com_rollback"
| Com_commit | 0 |
| Com_rollback | 0 |
| Com_rollback_to_savepoint | 0 |
并发性
最大连接数
MariaDB [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)
当前工作线程数
MariaDB [(none)]> show global status like 'Threads_running%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| Threads_running | 1 |
+-----------------+-------+
1 row in set (0.00 sec)
MariaDB [(none)]> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+----+------+-----------+------+---------+------+-------+------------------+----------+
| 11 | root | localhost | NULL | Query | 0 | NULL | show processlist | 0.000 |
+----+------+-----------+------+---------+------+-------+------------------+----------+
1 row in set (0.00 sec)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。