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_instancesPerformance_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(默认值)的值,该参数是AutoScaled:
最初,相应的内部缓冲区是空的,并且没有分配内存。
随着性能模式收集数据,内存被分配在相应的缓冲区中。缓冲区大小是无界的,并且可以随着负载而增长。
将值设置为0:
最初,相应的内部缓冲区是空的,并且没有分配内存。
值设置为
N
> 0:最初,相应的内部缓冲区是空的,并且没有分配内存。
由于性能模式收集数据,内存在相应的缓冲区中分配,直到缓冲区大小达到
N
。一旦缓冲区大小到达
N
,不再分配内存。性能模式为该缓冲区收集的数据将丢失,任何相应的数据也将丢失”失去了实例”计数器递增。
要查看Performance Schema使用了多少内存,请检查为此目的而设计的工具。Performance Schema在内部分配内存,并将每个缓冲区与专用工具关联起来,这样内存消耗就可以跟踪到各个缓冲区。以前缀命名的仪器内存/ performance_schema /
公开为这些内部缓冲区分配了多少内存。缓冲区对于服务器是全局的,因此工具只在memory_summary_global_by_event_name
表,而不是在其他memory_summary_by_
表。XXX.
_by_event_name
此查询显示与内存仪器相关联的信息:
选择* from performence_schema.memory_summary_global_by_event_name,其中event_name喜欢'memory / performence_schema /%';