文档首页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (美国标准信封) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  MySQL Performance Schema  /  Performance Schema 内存分配模型

29.17 Performance Schema 内存分配模型

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/%';