请尊重知识,请尊重原创 更多资料参考请见 http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1
Innodb 存储引擎优化
Innodb 作为与MyISAM同为最受欢迎的mysql存储引擎,其与myisam的区别主要表现在 1 缓存机制 2 锁定机制 3 事务支持 4 数据存储
在某些特定环境下性能差异也是非常明显的。
1 innodb缓存优化。
任何一种数据库,缓存技术都是提高数据库性能的关键技术。Innodb的缓存机制和MyISAM的最大区别就是Innodb不仅缓存索引,而且还缓存实际的数据,所以同等前提下,
使用Innodb确实可以缓存更多的数据在内存中,在内存价格不断下降的今天,这无疑让开发者更多的选择Innodb.
innodb_buffer_pool_size参数是用来设置Innodb最主要的Buffer的大小,也就是用来缓存用户表以及索引数据的的最主要缓存空间,对InnoDB影响也最大。
这个参数应该设置多大才合理呢,这个肯定是要根据具体的场景来决定。而且我们还需要来确定一些问题,比如这台主机是不是只提供mysql服务?mysql最大连接数是
多少?是否还有MyISAM等其他存储引擎,如果有的话 其cache被设置为多少?
假设是一台单独给MySQL 使用的主机,物理内存总大小为8G,MySQL 最大连接数为500,同时还使用
了MyISAM 存储引擎,这时候我们的整体内存该如何分配呢?
内存分配为如下几大部分:
a) 系统使用,假设预留800M;
b) 线程独享,约2GB = 500 * (1MB + 1MB + 1MB + 512KB + 512KB),组成大概如下:
sort_buffer_size:1MB
join_buffer_size:1MB
read_buffer_size:1MB
read_rnd_buffer_size:512KB
thread_statck:512KB
c) MyISAM Key Cache,假设大概为1.5GB;
d) Innodb Buffer Pool 最大可用量:8GB - 800MB - 2GB - 1.5GB = 3.7GB;
获取mysql状态值提取缓存命中率
show status like 'Innodb_buffer_pool_read%'
Innodb_buffer_pool_read_request 329
Innodb_buffer_pool_reads 19
可以得出结论 读请求329次 有19次是缓存中没有的需要到磁盘读取,所以命中率为 (329-19)/329 * 100% = 94.22%
Innodb_buffer_pool_pages_data 70
Innodb_buffer_pool_pages_total 2480
总共设置了 2480 pages 提供给缓存,但是存放数据的只有70page 说明Buffer poll设置的过大。
同理 我们也可以根据上面的指标计算出写入的情况。
请尊重知识,请尊重原创 更多资料参考请见 http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1