首页 > 代码库 > 18、内存体系架构及参数
18、内存体系架构及参数
内存结构:
Mysql 内存分配规则是:用多少给多少,最高到配置的值,不是立即分配
全局缓存包括:
global buffer(全局内存分配总和) =
innodb_buffer_pool_size -- InnoDB高速缓冲,行数据、索引缓冲,以及事务锁、自适应哈希等
+innodb_additional_mem_pool_size -- InnoDB数据字典额外内存,缓存所有表数据字典
+innodb_log_buffer_size -- InnoDB REDO日志缓冲,提高REDO日志写入效率
+key_buffer_size -- MyISAM表索引高速缓冲,提高MyISAM表索引读写效率
+query_cache_size -- 查询高速缓存,缓存查询结果,提高反复查询返回效率
+table_cahce -- 表空间文件描述符缓存,提高数据表打开效率
+table_definition_cache -- 表定义文件描述符缓存,提高数据表打开效率
会话缓存包括:
total_thread_buffers= max_connections * (
read_buffer_size -- 顺序读缓冲,提高顺序读效率
+read_rnd_buffer_size -- 随机读缓冲,提高随机读效率
+sort_buffer_size -- 排序缓冲,提高排序效率
+join_buffer_size -- 表连接缓冲,提高表连接效率
+binlog_cache_size -- 二进制日志缓冲,提高二进制日志写入效率
+tmp_table_size -- 内存临时表,提高临时表存储效率
+thread_stack -- 线程堆栈,暂时寄存SQL语句/存储过程
+thread_cache_size -- 线程缓存,降低多次反复打开线程开销,模拟连接池
)
内存相关配置参数介绍:
key_buffer_size :myisam引擎中表的索引 的缓存大小。若主要使用myisam,设置最高不超过物理内存的20%~50%,主要Innodb,建议设置32M
key_buffer_size :myisam引擎中表的索引 的缓存大小,默认值 = 16M,单个key_buffer_size最大只有4G(32-bit系统下最大4G,64-bit下可以超过)
若主要使用myisam,设置最高不超过物理内存的20%~50%,即便全是innodb表,没用MyISAM,也有必要设置该值用于缓存临时表之索引,推荐32MB,(如果内存tmp_table_size(Created_tmp_tables)不够的话,内部的临时磁盘表是MyISAM表(Created_tmp_disk_tables)(新版本可能是innodb表))。
可以使用检查状态(show global status)值‘created_tmp_disk_tables‘得知详情。
| Created_tmp_disk_tables | 0 |
| Created_tmp_files | 5 |
| Created_tmp_tables | 4 |
Key_read_requests myisam引擎上总读取请求次数
Key_reads myisam从物理硬盘上读索引的次数
Key_write_requests myisam引擎上总写入请求次数
Key_writes myisam从物理硬盘上写索引的次数
通过检查这4个variable值来判断key buffer的读写利用率
key_buffer_read_hits=(1-Key_reads/Key_read_requests)*100%
key_buffer_write_hits=(1-Key_writes/Key_write_requests)*100%
key_buffer_write_hits=(1-Key_writes/Key_write_requests)*100%
来自为知笔记(Wiz)
18、内存体系架构及参数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。