1,write-though即写操作直接写入磁盘,不使用缓存;
即关闭写缓存
这样就释放了更多缓存给读操作
2,缓存用于读写操作
3,write caching提升写操作的性能,因为先写到缓存中,再由存储的控制器定时把缓存数据写入到存储中
write caching也叫write-back
4,到底是write-though或是write-back(write caching)哪种性能更好;和磁盘的工作负荷及磁盘访问方式有关
5,如果磁盘负荷很轻,比如过n久才发生io,而不是高并发的io;此时把数据先写在缓存,然后由控制器把缓存中的数据
写入到磁盘中;自然是写性能很高
但如果磁盘负荷相当重,比如不停发生io,这时把数据先写入缓存,为了写入新的数据,缓存中的数据必须要马上
写入到磁盘中,为新的io把缓存腾出来;这样你想想,一个写操作要分为2次完成,反而减少了写性能
6,上述说到如果先把写的数据放在缓存中,哪么控制器会定时把缓存的数据写入到磁盘中,到底多久把缓存数据写入
到磁盘,这里有几个参数控制
且仅与write-back(write caching)有关
starting cache flushing level
stopping cache flusing level
二参数表示占用整个缓存的百分比
如果缓存中未写入磁盘的数据达到starting cache flushing level,控制器开始把缓存数据写入到磁盘
如果缓存中未写入磁盘的数据低于stopping cache flushing level,控制器停止把缓存数据写入到磁盘
控制器总是先写入旧的缓存数据
缓存中未写入磁盘的数据在缓存中20秒会自动写入到磁盘
7,典型配置二参数为80%,可以缓存更多的数据,提升写性能,但会牺性数据保护(因为更多的数据在缓存中,可能存储掉电就loss)
最好二参数配置成一样
(因为由缓存写到磁盘的动作一直停不下来,所以会导致磁盘不停的写,即造成block disk)
如果stopping cache flushing level远小于starting cache flusing level,由缓存写入磁盘会导致磁盘阻塞
8,cache block size
指定缓存分配单元的大小
可以指定4k或8k或16k
选择合理的值,可以提升缓存的性能
如果应用程序常常访问小于4k的数据,而把cache block size配置为16k,每次仅使用一部分cache block的空间,造成浪费
如果应用程序比如oracle多是随机io和小数据块,4k比较合适;
如果是数据仓库它多是顺序io和大数据块,16k比较合适
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-759042/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9240380/viewspace-759042/