您的位置:首页 > 数据库 > MySQL

MySQL使用内存算法

2016-03-05 13:51 579 查看
MySQL使用总内存=global_buffer+thread_buffer

thread buffer每个线程分配,会话级别的内存结构,分配高可能导致内存溢出导致OOM
All thread buffer(会话/线程级内存分配总和)=
Max_threads(当前实际最大活跃连接数)*(
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                            --线程缓存,降低多次反复打开线程开销
+net_buffer_length                             --线程持连续缓冲以及读取结果缓冲
+bulk_insert_buffer_size                    --MyISAM批量写入数据缓冲)

全局内存分配一次就可以了实例启动自动分配

Global buffer(SGA,全局内存分配总和)
Innodb_buffer_pool_size --innodb                       --高速缓冲,行数据,索引缓冲以及事务锁,自适应哈希等
+innodb_additional_mem_pool+sizeinnodb     --数据字典额外内存,缓存所有表数据字典
+key_buffer_size MYISAM                                    --表索引高速缓冲,提高MYISAM表索引读写效率
+query_cache_size                                                 --查询高速缓存,缓存查询结果,提高反复查询返回效率
+table_cache                                                            --表空间文件描述符缓存,提高数据表打开效率
+table_definition_cache                                        --表定义文件描述符缓存,提高数据表打开效率
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: