在启动时,mysql 会使用一些内存。
一些内存是为“key_buffer”和“innodb_buffer_pool_size”(以及其他东西)预先分配的。
是否可以确定预先分配了多少内存(用于数据)以及已使用了多少内存?
谢谢
更新:
让我举个例子来解释我想问什么。在我启动 mysql 服务器后,它使用一些内存作为“密钥缓冲区”的一部分。比如说,我设置了 key_buffer=1G。可能在启动时,mysql 服务器预先分配了 200M 作为“密钥缓冲区”。然后当用户开始对该服务器进行查询时。服务器只能获得额外的 800M 作为“密钥缓冲区”。200 是我选择的随机数。显然除了 key_buffer 之外,还有其他东西(例如 innnodb buffer )我想知道的是确切的大小或计算它的方式。
希望我已经解释清楚了。
小智 5
是的,你绝对应该!不要将 MySQL 设置为具有超过大约 80% 可用内存的潜在最大使用量。
MySQL 有两种类型的缓冲区,全局缓冲区和每个连接缓冲区。最大可能的内存使用是:全局缓冲区 +(连接缓冲区 * 最大连接)。
mysqltuner.pl 脚本将为您计算(http://mysqltuner.com/)。以下是此脚本用于计算的值:
全局缓冲区:
key_buffer_size
max_tmp_table_size
innodb_buffer_pool_size
innodb_additional_mem_pool_size
innodb_log_buffer_size
query_cache_size
Run Code Online (Sandbox Code Playgroud)
每个连接缓冲区:
read_buffer_size
read_rnd_buffer_size
sort_buffer_size
thread_stack
join_buffer_size
Run Code Online (Sandbox Code Playgroud)
您可以从操作系统中找到当前使用了多少内存。
归档时间: |
|
查看次数: |
806 次 |
最近记录: |