加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MariaDB内存占用优化

发布时间:2019-03-07 04:10:38 所属栏目:编程 来源:腾讯云加社区
导读:查询最高内存占用 行使以下呼吁可以知道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_size +@@r
副问题[/!--empirenews.page--]

MariaDB内存占用优化

查询最高内存占用

行使以下呼吁可以知道mysql的设置行使几多 RAM

  1. SELECT ( @@key_buffer_size 
  2. + @@query_cache_size 
  3. + @@innodb_buffer_pool_size 
  4. + @@innodb_additional_mem_pool_size 
  5. + @@innodb_log_buffer_size 
  6. + @@max_connections * ( @@read_buffer_size 
  7. + @@read_rnd_buffer_size 
  8. + @@sort_buffer_size 
  9. + @@join_buffer_size 
  10. + @@binlog_cache_size 
  11. + @@thread_stack 
  12. + @@tmp_table_size 
  13. ) / (1024 * 1024 * 1024) AS MAX_MEMORY_GB; 

可以行使mysql计较器来计较内存行使

下面是理论,可以直接到保举设置

怎样调解设置

key_buffer_size(MyISAM索引用)

指定索引缓冲区的巨细,它抉择索引处理赏罚的速率,尤其是索引读的速率。为了最小化磁盘的 I/O , MyISAM 存储引擎的表行使键高速缓存来缓存索引,这个键高速缓存的巨细则通过 key-buffer-size 参数来配置。假如应用体系中行使的表以 MyISAM 存储引擎为主,则应该恰当增进该参数的值,以便尽也许的缓存索引,进步会见的速率。

怎么设

  1. show global status like 'key_read%'; 
  2.  
  3. +------------------------+-------------+ 
  4. | Variable_name | Value | 
  5. +------------------------+-------------+ 
  6. | Key_read_requests | 27813678764 | 
  7. | Key_reads | 6798830 | 
  8. ---------------------  
  • key_buffer_size通过搜查状态值Key_read_requests和Key_reads,可以知道key_buffer_size配置是否公道。
  • 比例key_reads / key_read_requests应该尽也许的低,至少是1:100,1:1000更好。 
  1. show global status like '%created_tmp_disk_tables%';  
  • key_buffer_size只对MyISAM表起浸染。纵然你不行使MyISAM表,可是内部的姑且磁盘表是MyISAM表,也要行使该值。可以行使搜查状态值created_tmp_disk_tables得知详情。
  • 对付1G内存的呆板,假如不行使MyISAM表,保举值是16M(8-64M)

另一个参考如下

  1. show global status like 'key_blocks_u%'; 
  2. +------------------------+-------------+ 
  3. | Variable_name | Value | 
  4. +------------------------+-------------+ 
  5. | Key_blocks_unused | 0 | 
  6. | Key_blocks_used | 413543 | 
  7. +------------------------+-------------+ 

Key_blocks_unused暗示未行使的缓存簇(blocks)数,Key_blocks_used暗示曾经用到的最大的blocks数,好比这台处事器,全部的缓存都用到了,要么增进key_buffer_size,要么就是过渡索引了,把缓存占满了。较量抱负的配置:

  • 可以按照此工式来动态的调解Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 80%
show engines; 
  • 查询存储引擎

innodb_buffer_pool_size (innodb索引用)

这个参数和MyISAM的key_buffer_size有相似之处,但也是有不同的。这个参数首要缓存innodb表的索引,数据,插入数据时的缓冲。为Innodb加快优化主要参数。

该参数分派内存的原则:这个参数默认分派只有8M,可以说长短常小的一个值。

  • 假如是专用的DB处事器,且以InnoDB引擎为主的场景,凡是可配置物理内存的50%,这个参数不能动态变动,以是分派需多思量。分派过大,会使Swap占用过多,致使Mysql的查询特慢。
  • 假如长短专用DB处事器,可以先实行配置成内存的1/4,假若有题目再调解

query_cache_size(查询缓存)

缓存机制简朴的说就是缓存sql文本及查询功效,假如运行沟通的sql,处事器直接从缓存中取到功效,而不必要再去理会和执行sql。假如表变动了,那么行使这个表的全部缓冲查询将不再有用,查询缓存值的相干条目被清空。变动指的是表中任何数据或是布局的改变,包罗INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等,也包罗那些映射到改变了的表的行使MERGE表的查询。显然,这对付频仍更新的表,查询缓存是不得当的,而对付一些不常改变数据且有大量沟通sql查询的表,查询缓存会节省很大的机能。

  • 留意:假如你查询的表更新较量频仍,并且很少有沟通的查询,最好不要行使查询缓存。由于这样会耗损很大的体系机能还没有任何的结果

要不要打开?

(编辑:湖南网)

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

热点阅读