• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 性能模式内存分配模型

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

    • 可能在服务器启动时分配内存
    • 在服务器运行期间可能会分配额外的内存
    • 服务器运行期间切勿释放内存(尽管它可能会被回收)
    • 释放关闭时使用的所有内存

    结果是放宽了内存限制,以便可以以更少的配置使用性能架构,并减少内存占用,从而使消耗随服务器负载而扩展。使用的内存取决于实际看到的负载,而不是估计或明确配置的负载。

    几个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(默认值)后,该参数将自动缩放:

      • 相应的内部缓冲区最初是空的,并且没有分配内存。
      • 当性能架构收集数据时,将在相应的缓冲区中分配内存。缓冲区大小不受限制,并且可能随负载而增长。
    • 将该值设置为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/%';