免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5130 | 回复: 3
打印 上一主题 下一主题

关于innodb_buffer_pool_size [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-29 20:01 |只看该作者 |倒序浏览
我的mysql设了innodb_buffer_pool_size = 2048M,之前启动mysql的时候,会用2G多的内存,但是现在开的时候,发现只用了1G内存,请问没人能解释一下,谢谢!
我们目前是有2台一模一样配置的db server,my.cnf也一样,但是有一台mysql启动后,只用了1G内存,另外一台就2G

[ 本帖最后由 streetboy85 于 2009-4-29 21:01 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-04-29 21:03 |只看该作者
innodb_buffer_pool_size  这个参数和MyISAM的key_buffer_size有相似之处,但也是有差别的。这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。为Innodb加速优化首要参数。  该参数分配内存的原则:这个参数默认分配只有8M,可以说是非常小的一个值。如果是一个专用DB服务器,那么他可以占到内存的70%-80%。这个参数不能动态更改,所以分配需多考虑。分配过大,会使Swap占用过多,致使Mysql的查询特慢。如果你的数据比较小,那么可分配是你的数据大小+10%左右做为这个参数的值。
例如:数据大小为50M,那么给这个值分配innodb_buffer_pool_size=64M
设置方法:innodb_buffer_pool_size=4G这个参数分配值的使用情况可以根据show innodb status\G;中的
----------------------BUFFER POOL AND MEMORY----------------------
Total memory allocated 4668764894; 去确认使用情况。

参考一下:
http://www.mysqlsupport.cn/2009/04/mysql-innodb.html

这个参数控制

论坛徽章:
0
3 [报告]
发表于 2009-04-29 21:21 |只看该作者
這是我部份的innodb status
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 1692, seg size 1694,
0 inserts, 0 merged recs, 0 merges
Hash table size 8850487, node heap has 469 buffer(s)
331.36 hash searches/s, 501.37 non-hash searches/s
---
LOG
---
Log sequence number 31 2167340869
Log flushed up to   31 2167339787
Last checkpoint at  31 1817278955
0 pending log writes, 0 pending chkp writes
880839 log i/o's done, 89.08 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 2330217576; in additional pool allocated 8331264
Dictionary memory allocated 853680
Buffer pool size   131072
Free buffers       63273
Database pages     67319
Modified db pages  17287
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages read 60643, created 6676, written 172809
0.67 reads/s, 1.45 creates/s, 1.93 writes/s
Buffer pool hit rate 1000 / 1000
--------------
ROW OPERATIONS
--------------
2 queries inside InnoDB, 0 queries in queue
2 read views open inside InnoDB
Main thread process no. 6620, id 685824912, state: sleeping
Number of rows inserted 2510707, updated 280021, deleted 2463653, read 871433433
303.64 inserts/s, 29.15 updates/s, 298.51 deletes/s, 1066971.10 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================

1 row in set, 1 warning (0.01 sec)

ERROR:
No query specified


是设了2G,但是top的时候,RES只有1.2G,VIRT是2387m
另外一台机器是RES 2.2G,VIRT是2385m,上面的那台比这台负载高很多

论坛徽章:
0
4 [报告]
发表于 2009-04-30 09:07 |只看该作者
按理论上用户越多这个值实际占用越高。

但有一种情况是比较特殊的。

对于写入量大的业务,表索引设计不好的情况。更新量大,那么这个值有可能占用不会高。但总体上来看,这个值还是应当是全部占用才对。

请在观查一下。

服务有压力,运维也有压力,也就转化成工作的压力了。一定要顶住!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP