加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (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

看看掷中功效来举办进一步的判定

  1. mysql> show status like '%Qcache%'; 
  2. +-------------------------+-----------+ 
  3. | Variable_name           | Value     | 
  4. +-------------------------+-----------+ 
  5. | Qcache_free_blocks      | 669       | 
  6. | Qcache_free_memory      | 132519160 | 
  7. | Qcache_hits             | 1158      | 
  8. | Qcache_inserts          | 284824    | 
  9. | Qcache_lowmem_prunes    | 2741      | 
  10. | Qcache_not_cached       | 1755767   | 
  11. | Qcache_queries_in_cache | 579       | 
  12. | Qcache_total_blocks     | 1853      | 
  13. +-------------------------+-----------+ 
  14. 8 rows in set (0.00 sec) 

Qcache_free_blocks:暗示查询缓存中今朝尚有几多剩余的blocks,假如该值表现较大,则声名查询缓存中的内存碎片过多了,也许在必然的时刻举办清算。

Qcache_free_memory:查询缓存的内存巨细,通过这个参数可以很清楚的知道当前体系的查询内存是否够用,是多了,照旧不足用,DBA可以按照现实环境做出调解。

Qcache_hits:暗示有几多次掷中缓存。我们首要可以通过该值来验证我们的查询缓存的结果。数字越大,缓存结果越抱负。

Qcache_inserts: 暗示几多次未掷中然后插入,意思是新来的SQL哀求在缓存中未找到,不得不执行查询处理赏罚,执行查询处理赏罚后把功效insert到查询缓存中。这样的环境的次数,次数越多,暗示查询缓存应用到的较量少,结果也就不抱负。虽然体系刚启动后,查询缓存是空的,这很正常。

Qcache_lowmem_prunes:该参数记录有几多条查询由于内存不敷而被移除出查询缓存。通过这个值,用户可以恰当的调解缓存巨细。

Qcache_not_cached: 暗示由于query_cache_type的配置而没有被缓存的查询数目。

Qcache_queries_in_cache:当前缓存中缓存的查询数目。

Qcache_total_blocks:当前缓存的block数目。

  • 我们可以看到现网掷中1158,未缓存的有1755767次,声名我们这个体系掷中的太少了,表变换较量多,不什么开启这个成果涉及参数
  • query_cache_limit:应承 Cache 的单条 Query 功效集的最大容量,默认是1MB,高出此参数配置的 Query 功效集将不会被 Cache
  • query_cache_min_res_unit:配置 Query Cache 中每次分派内存的最小空间巨细,也就是每个 Query 的 Cache 最小占用的内存空间巨细
  • query_cache_size:配置 Query Cache 所行使的内存巨细,默认值为0,巨细必需是1024的整数倍,假如不是整数倍,MySQL 会自动调解低落最小量以到达1024的倍数
  • query_cache_type:节制 Query Cache 成果的开关,可以配置为0(OFF),1(ON)和2(DEMAND)三种,意义别离如下: 0(OFF):封锁 Query Cache 成果,任何环境下都不会行使 Query Cache 1(ON):开启 Query Cache 成果,可是当 SELECT 语句中行使的 SQL_NO_CACHE 提醒后,将不行使Query Cache 2(DEMAND):开启 Query Cache 成果,可是只有当 SELECT 语句中行使了 SQL_CACHE 提醒后,才行使 Query Cache
  • query_cache_wlock_invalidate:节制当有写锁定产生在表上的时候是否先失效该表相干的 Query Cache,假如配置为 1(TRUE),则在写锁定的同时将失效该表相干的全部 Query Cache,假如配置为0(FALSE)则在锁按时候如故应承读取该表相干的 Query Cache。

innodb_additional_mem_pool_size(InnoDB内部目次巨细)

InnoDB 字典信息缓存首要用来存放 InnoDB 存储引擎的字典信息以及一些 internal 的共享数据布局信息,也就是存放Innodb的内部目次,以是其巨细也与体系中所行使的 InnoDB 存储引擎表的数目有较大相关。

这个值不消分派太大,凡是配置16M够用了,默认8M,假如配置的内存巨细不足,InnoDB 会自动申请更多的内存,并在 MySQL 的 Error Log 中记录告诫信息。

innodb_log_buffer_size (日记缓冲)

暗示InnoDB写入到磁盘上的日记文件时行使的缓冲区的字节数,默认值为16M。一个大的日记缓冲区应承大量的事宜在提交之前不消写日记到磁盘,以是假若有更新,插入或删除很多行的事宜,则使日记缓冲区更大一些可以节减磁盘IO

凡是最大设为64M足够

max_connections (最大并发毗连)

MySQL的max_connections参数用来配置最大毗连(用户)数。每个毗连MySQL的用户均算作一个毗连,max_connections的默认值为100。

  • 这个参数现实起浸染的最大值(现实最大可毗连数)为16384,即该参数最大值不能高出16384,纵然高出也以16384为准;
  • 增进max_connections参数的值,不会占用太多体系资源。体系资源(CPU、内存)的占用首要取决于查询的密度、服从等;
  • 该参数配置过小的最明明特性是呈现”Too many connections”错误
  1. mysql> show variables like '%max_connect%'; 
  2. +-----------------------+-------+ 
  3. | Variable_name         | Value | 
  4. +-----------------------+-------+ 
  5. | extra_max_connections | 1     | 
  6. | max_connect_errors    | 100   | 
  7. | max_connections       | 2048  | 
  8. +-----------------------+-------+ 
  9. 3 rows in set (0.00 sec) 
  10.  
  11. mysql> show status like 'Threads%'; 
  12. +-------------------+---------+ 
  13. | Variable_name     | Value   | 
  14. +-------------------+---------+ 
  15. | Threads_cached    | 0       | 
  16. | Threads_connected | 1       | 
  17. | Threads_created   | 9626717 | 
  18. | Threads_running   | 1       | 
  19. +-------------------+---------+ 
  20. 4 rows in set (0.00 sec) 

(编辑:湖南网)

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

热点阅读