-
Notifications
You must be signed in to change notification settings - Fork 111
performance_schema 内存分配模型
xiaoboluo768 edited this page Jun 8, 2020
·
2 revisions
-
performance_schema使用如下内存分配模型:
- 可能在server启动时分配的内存
- 可能在server运行期间额外分配的内存
- 不要在server运行期间释放内存(但可能会被自动回收)
- 在关闭server时所有内存被释放,保存在performance_schema表中的所有信息丢失(包括配置)
-
以下是一些可以自动计算(默认值为-1表示可以自动计算),自动缩放,不需要明确配置的参数(由于自动计算的参数不受限制,内存使用量会随着server负载的增长而增长,如果你需要明确限制服务器内存分配,则可以显式指定这些自动计算参数的值)
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执行收集数据时,才分配内存到相应的缓冲区中,但是,缓冲区的大小没有限制,随着server负载的增加,使用的内存量也会增加
- 当设置为0时,对应的内部缓冲区为空且不为其分配内存
- 当设置为大于0值时,数据库初始化时内部缓冲区为空,当performance_schema执行收集数据时,才分配内存到相应的缓冲区中,但是缓冲区的大小最大只能为该参数定义的值,一旦分配的内存量达到该参数的值,将不会再为相应类型的内部缓冲区分配内存,此时该类型的后续监控数据将丢失,对应的状态变量计数器会增加
-
要查看performance_schema使用的内存量,可以查看相应的instruments监控信息。performance_schema记录内部分配内存并将每个缓冲区与对应的instruments相关联,从而可以跟踪到每个缓冲区的内存消耗。如:在表memory_summary_global_by_event_name中记录的数据,以前缀memory/performance_schema命名的instruments可以查看到为这些内部缓冲区分配了多少内存。缓冲区对server而言是全局的,因此对于缓冲区的内存分配不会记录在memory_summary_by_xxx_by_event_name表中。查询示例:SELECT * FROM memory_summary_global_by_event_name WHERE EVENT_NAME LIKE 'memory/performance_schema/%';
-
参考链接:https://dev.mysql.com/doc/refman/5.7/en/performance-schema-memory-model.html
上一篇: performance_schema中信息摘要表 | 下一篇: 性能分析思路
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!