加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MariaDB内存占用优化

发布时间:2019-03-08 18:28:34 所属栏目:MySql教程 来源:腾讯云加社区
导读:副标题#e# 查询最高内存占用 使用以下命令可以知道mysql的配置使用多少 RAM SELECT(@@key_buffer_size +@@query_cache_size +@@innodb_buffer_pool_size +@@innodb_additional_mem_pool_size +@@innodb_log_buffer_size +@@max_connections*(@@read_buffer_

可以看到此时的并发数也就是Threads_connected=1,还远远达不到2048

  1. mysql> show variables like 'open_files_limit'; 
  2. +------------------+-------+ 
  3. | Variable_name    | Value | 
  4. +------------------+-------+ 
  5. | open_files_limit | 65535 | 
  6. +------------------+-------+ 
  7. 1 row in set (0.00 sec) 

max_connections 还取决于操作系统对单进程允许打开最大文件数的限制

也就是说如果操作系统限制单个进程最大可以打开100个文件

那么 max_connections 设置为200也没什么用

MySQL 的 open_files_limit 参数值是在MySQL启动时记录的操作系统对单进程打开最大文件数限制的值

可以使用 show variables like 'open_files_limit'; 查看 open_files_limit 值

  1. ulimit -n 65535  

或者直接在 Linux 下通过ulimit -n命令查看操作系统对单进程打开最大文件数限制 ( 默认为1024 )

connection级内存参数(线程独享)

connection级参数,是在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存。

排序性能

mysql对于排序,使用了两个变量来控制sort_buffer_size和 max_length_for_sort_data, 不象oracle使用SGA控制. 这种方式的缺点是要单独控制,容易出现排序性能问题.

  1. mysql> SHOW GLOBAL STATUS like '%sort%'; 
  2. +---------------------------+--------+ 
  3. | Variable_name             | Value  | 
  4. +---------------------------+--------+ 
  5. | Sort_merge_passes         | 0      | 
  6. | Sort_priority_queue_sorts | 1409   | 
  7. | Sort_range                | 0      | 
  8. | Sort_rows                 | 843479 | 
  9. | Sort_scan                 | 13053  | 
  10. +---------------------------+--------+ 
  11. 5 rows in set (0.00 sec) 
  • 如果发现Sort_merge_passes的值比较大,你可以考虑增加sort_buffer_size 来加速ORDER BY 或者GROUP BY 操作,不能通过查询或者索引优化的。我们这为0,那就没必要设置那么大。

读取缓存

read_buffer_size = 128K(默认128K)为需要全表扫描的MYISAM数据表线程指定缓存

read_rnd_buffer_size = 4M:(默认256K)首先,该变量可以被任何存储引擎使用,当从一个已经排序的键值表中读取行时,会先从该缓冲区中获取而不再从磁盘上获取。

大事务binlog

  1. mysql> show global status like 'binlog_cache%'; 
  2. +-----------------------+----------+ 
  3. | Variable_name         | Value    | 
  4. +-----------------------+----------+ 
  5. | Binlog_cache_disk_use | 220840   | 
  6. | Binlog_cache_use      | 67604667 | 
  7. +-----------------------+----------+ 
  8. 2 rows in set (0.00 sec) 
  • Binlog_cache_disk_use表示因为我们binlog_cache_size设计的内存不足导致缓存二进制日志用到了临时文件的次数
  • Binlog_cache_use 表示 用binlog_cache_size缓存的次数
  • 当对应的Binlog_cache_disk_use 值比较大的时候 我们可以考虑适当的调高 binlog_cache_size 对应的值
  • 如上图,现网是32K,我们加到64K

join语句内存影响

如果应用中,很少出现join语句,则可以不用太在乎join_buffer_size参数的设置大小。

如果join语句不是很少的话,个人建议可以适当增大join_buffer_size到1MB左右,如果内存充足可以设置为2MB。

线程内存影响

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读