性能模式使用以下内存分配模型:
可以在服务器启动时分配内存吗
可以在服务器运行期间分配额外的内存吗
永远不要在服务器运行期间释放内存(尽管它可能会被回收)
释放关机时使用的所有内存
这样做的结果是放松内存限制,从而可以使用较少的配置来使用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_instancesPerformance_schema_max_table_lock_stat performance_schema_max_thread_instances performance_schema_users_size
对于一个自动缩放的参数,配置是这样的:
当值设置为-1(默认值)时,参数是自动缩放的:
相应的内部缓冲区最初是空的,没有分配内存。
当性能模式收集数据时,将在相应的缓冲区中分配内存。缓冲区的大小是无限的,并且可能随着负载的增加而增加。
当值设置为0时:
相应的内部缓冲区最初是空的,没有分配内存。
将值设置为
N
> 0:相应的内部缓冲区最初是空的,没有分配内存。
当性能模式收集数据时,在相应的缓冲区中分配内存,直到缓冲区大小达到
N
.一旦缓冲区大小达到
N
,不再分配内存。性能模式为该缓冲区收集的数据将丢失,并且任何相应的”失去了实例”计数器递增。
要查看性能模式使用了多少内存,请检查为此目的设计的工具。Performance Schema在内部分配内存,并将每个缓冲区与专用仪器相关联,以便可以跟踪内存消耗到各个缓冲区。以前缀命名的仪器内存/ performance_schema /
公开为这些内部缓冲区分配了多少内存。缓冲区对于服务器来说是全局的,因此工具只显示在memory_summary_global_by_event_name
表,而不在别的memory_summary_by_
表。xxx
_by_event_name
这个查询显示了与内存仪器相关的信息:
SELECT * FROM performance_schema。WHERE EVENT_NAME LIKE 'memory/performance_schema/%';