Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  MySQL Performance Schema  /  The Performance Schema Memory-Allocation Model

29.17 性能模式内存分配模型

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

  • 可能在服务器启动时分配内存

  • 可能在服务器操作期间分配额外的内存

  • 服务器操作期间从不释放内存(尽管可能会被回收)

  • 在关闭时释放所有使用的内存

结果是放松内存约束,以便性能模式可以使用较少的配置,并减少内存占用,以便消费随服务器负载而变化。内存使用取决于实际看到的负载,而不是估计或明确配置的负载。

几个性能模式大小参数是自动缩放的,不需要明确配置,除非您想为内存分配设置明确的限制:

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时,参数是自动缩放的:

    • 相应的内部缓冲区最初为空,未分配内存。

    • 随着性能模式收集数据,缓冲区大小将增长,内存将被分配。

  • 使用值设置为 0 时:

    • 相应的内部缓冲区最初为空,未分配内存。

  • 使用值设置为 N > 0:

    • 相应的内部缓冲区最初为空,未分配内存。

    • 随着性能模式收集数据,缓冲区大小将增长,直到达到 N

    • 一旦缓冲区大小达到 N,不再分配内存。性能模式为该缓冲区收集的数据将丢失,相应的“丢失实例”计数器将递增。

要查看性能模式使用的内存量,请检查专门为此目的设计的仪器。性能模式在内部分配内存,并将每个缓冲区与专门的仪器关联,以便可以追溯到单个缓冲区的内存消耗。以 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/%';