MySQL的关键性能指标

  • 吞吐量

吞吐量指单位时间内的事务处理数。常用的测试单位是每秒事务数(TPS),还有一个指标每秒请求查询次数(QPS)。

  1. 磁盘的IOPS:每秒处理的IO请求数。
  2. 磁盘的吞吐量:每秒磁盘I/O 的流量。
  • 响应时间

这个指标用于测试任务所需的整体时间。根据具体的应用,测试的时间单位可能是微妙、毫秒、秒或者分钟。响应时间是评估系统其他指标的基础。

  • 并发性

指正在工作中的并发操作,或者同时工作的线程数或者连接数。

  1. 在线用户数不等于web站点的并发数。
  2. web站点的并发数不等于数据库的并发数。

总结

在压力测试时,提高并发性是为了在单位时间内提交更多的事务让系统处理,用来测试系统的吞吐量瓶颈。但随着处理事务的增加,系统的整体响应时间可能会变长,只有响应时间在可接受范围内的吞吐量才具有参考意义。

示例

订单业务,要求响应时间在5秒内:

  1. 50并发,TpmC为20,响应时间在5秒内的事务占95%。
  2. 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)

发表评论

后才能评论