25.17 性能架构内存分配模型

性能架构使用以下内存分配模型:

结果是放宽了内存限制,以便可以以更少的配置使用性能架构,并减少内存占用,从而使消耗随服务器负载而扩展。使用的内存取决于实际看到的负载,而不是估计或明确配置的负载。

几个 Performance Schema 大小调整参数是自动缩放的,不需要显式配置,除非您要对内存分配构建显式限制:

performance_schema_accounts_size
performance_schema_hosts_size
performance_schema_max_cond_instances
performance_schema_max_file_instances
performance_schema_max_index_stat
performance_schema_max_metadata_locks
performance_schema_max_mutex_instances
performance_schema_max_prepared_statements_instances
performance_schema_max_program_instances
performance_schema_max_rwlock_instances
performance_schema_max_socket_instances
performance_schema_max_table_handles
performance_schema_max_table_instances
performance_schema_max_table_lock_stat
performance_schema_max_thread_instances
performance_schema_users_size

对于自动缩放的参数,配置如下所示:

要查看性能模式正在使用多少内存,请检查为此目的设计的工具。性能架构在内部分配内存,并将每个缓冲区与专用工具关联,以便可以将内存消耗 traceback 到各个缓冲区。以前缀memory/performance_schema/命名的工具会为这些内部缓冲区分配多少内存。缓冲区是服务器的全局缓冲区,因此工具仅显示在memory_summary_global_by_event_nametable 中,而不显示在其他memory_summary_by_xxx_by_event_nametable 中。

此查询显示与内存工具关联的信息:

SELECT * FROM performance_schema.memory_summary_global_by_event_name
WHERE EVENT_NAME LIKE 'memory/performance_schema/%';
首页