MYSQL使用内存计算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL使用内存计算相关的知识,希望对你有一定的参考价值。

mysql内存占用计算: global buffer+all thread buffer

global buffer=

innodb_buffer_pool_size 缓存表数据和索引数据,加速查询,并且使查询结果集保存在内以供重用,一般设置到主机内存的70%以下

+innodb_additional_mem_pool_size 存放数据字典信息以及一些内部数据结构,如果数据库的对象过多的话,该值可能需要调整,一般不做调整

+innodb_log_buffer_size 事务日志所使用的缓冲区,当满足innodb_flush_log_trx_commit设置的条件时,会将日志刷新到磁盘中。

+key_buffer_size myisam存储引擎所需要分配的内存大小,默认不调整,因为一般使用Innodb存储引擎

+query_cache_size 查询缓存,高并发写类型库建议关闭

+table_open_cache 高速表缓存数目。开始可先设置一个稍微大的值,如根据max_connections*n,n为一个连接中可能打开的表的数据量。后期等运行一段时间后,可根据Open_tables / Opened_tables >= 0.85,Open_tables / table_cache <= 0.95来进行调整。

+table_definition_cache 存放表的定义信息.frm

+thread_cache_size 空闲线程缓存池。如果有空闲线程,那么当建立新链接的时候会很快进行分配


all thread buffer=

max_threads*(

read_buffer_size mysql读入缓冲区大小。MyISAM引擎顺序扫描会分配一段内存。另外对于所有的引擎的以下操作会使用到该read_buffer_size:使用Order by进行数据行排序,bulk insert into partitions,缓存嵌套查询结果集。默认1MB,值必须是4KB的整数倍,最小8KB,最大2GB,不要设置的过大,并发高时占用内存过高。

+read_rnd_buffer_size

+sort_buffer_size

+join_buffer_size

+binlog_cache_size

+tmp_table_size

+thread_stack

+net_buffer_length

+bulk_insert_buffer_size)


以上是关于MYSQL使用内存计算的主要内容,如果未能解决你的问题,请参考以下文章

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

C 中的共享内存代码片段

linux中怎么查看mysql数据库版本

MYSQL使用内存计算

使用 json rereiver php mysql 在片段中填充列表视图

mysql时该如何估算内存的消耗,公式如何计算?