网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

MongoDB的初始化步骤有哪些以及其缓存刷新机制是什么

MongoDB的初始化步骤有哪些以及其缓存刷新机制是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

我们提供的服务有:成都网站设计、网站建设、外贸网站建设、微信公众号开发、网站优化、网站认证、市南ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的市南网站制作公司

当内存用尽开始往磁盘上刷脏页的时候,性能有非常大的波动,即使调整了syncdelay也没有太大改善。在测试中还出现了一个莫名其妙的情况:MongoDB会间歇性地释放文件系统的cache。下面创新互联小编来讲解下MongoDB的初始化步骤有哪些?MongoDB数据缓存刷新机制是什么?

MongoDB的初始化步骤有哪些

intmain(intargc,char*argv[],char*envp[])

{

Module::configAll(params);

dataFileSync.go();

initAndListen(cmdLine.port,appsrvPath);

}

显然,dataFileSync就是我们感兴趣的那个类。dataFileSync类派生自BackgroundJob类,而BackgroundJob主要的功能就是生成一个后台线程并指派任务。数据的刷新是一个不断执行的后台任务,在dataFileSync.run()里面可以找到刷数据的相关代码:

MongoDB数据缓存刷新机制是什么

voidrun()

{

Date_tstart=jsTime();

intnumFiles=MemoryMappedFile::flushAll(true);

time_flushing=(int)(jsTime()–start);

globalFlushCounters.flushed(time_flushing);

}

从这一段代码看,MongoDB会在syncdelay设定的周期内,采取同步的形式刷新所有的脏数据。再看一下flushAll是怎么刷新所有数据的:

intMongoFile::flushAll(boolsync)

{

setseen;

while(true){

auto_ptrf;

{

rwlocklk(mmmutex,false);

for(set::iteratori=mmfiles.begin();i!=mmfiles.end();i++){

MongoFile*mmf=*i;

if(!mmf)

continue;

if(seen.count(mmf))

continue;

f.reset(mmf->prepareFlush());

seen.insert(mmf);

break;

}

}

if(!f.get())

break;

f->flush();

}

returnseen.size();

}

上面这一段代码实现的功能很简单,就是把mmfiles中所有MongoFile指针所引用的对象都flush()一次。不过在执行flush()函数之前,需要先执行prepareFlush()确保这个对象是可以执行flush()函数的。下面是最后真正执行刷新操作的代码:

voidMemoryMappedFile::flush(boolsync)

{

if(view==0||fd==0)

return;

if(msync(view,len,sync?MS_SYNC:MS_ASYNC))

problem()<<“msync”<   }

关于MongoDB的初始化步骤有哪些以及其缓存刷新机制是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


新闻标题:MongoDB的初始化步骤有哪些以及其缓存刷新机制是什么
当前网址:http://bjjierui.cn/article/giogjs.html

其他资讯