Performance Schema 使用以下内存分配模型
可能在服务器启动时分配内存
可能在服务器运行期间分配额外内存
在服务器运行期间从不释放内存(尽管它可能会被回收)
在关闭时释放所有使用的内存
结果是放宽了内存限制,以便 Performance Schema 可以用更少的配置使用,并减少了内存占用,以便消耗量随服务器负载而扩展。使用的内存取决于实际观察到的负载,而不是估计的负载或显式配置的负载。
几个 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
对于自动调整的参数,配置工作原理如下
将值设置为 -1(默认值),则参数将自动调整
相应的内部缓冲区最初为空,并且不分配内存。
随着 Performance Schema 收集数据,在相应的缓冲区中分配内存。缓冲区大小是无界的,并且可能会随着负载而增长。
将值设置为 0
相应的内部缓冲区最初为空,并且不分配内存。
将值设置为
N
> 0相应的内部缓冲区最初为空,并且不分配内存。
随着 Performance Schema 收集数据,在相应的缓冲区中分配内存,直到缓冲区大小达到
N
。一旦缓冲区大小达到
N
,将不再分配内存。Performance Schema 收集的此缓冲区的数据将丢失,并且任何相应的 “丢失实例” 计数器都会递增。
要查看 Performance Schema 使用了多少内存,请检查为此目的设计的仪器。Performance Schema 在内部分配内存,并将每个缓冲区与一个专用仪器相关联,以便可以跟踪内存消耗到各个缓冲区。以 memory/performance_schema/
为前缀命名的仪器会公开为这些内部缓冲区分配了多少内存。缓冲区是服务器范围的,因此仪器仅在 memory_summary_global_by_event_name
表中显示,而不是在其他 memory_summary_by_
表中显示。xxx
_by_event_name
此查询显示与内存仪器相关联的信息
SELECT * FROM performance_schema.memory_summary_global_by_event_name
WHERE EVENT_NAME LIKE 'memory/performance_schema/%';