Solr的软提交和硬提交的内部实现

1:软提交(到内存中)

1.1:java实现软提交。

1.2:solr web 界面可以显示

1.3:到你的${SOLR_HOME}/example/solr/collection1/tlog可以看到日志文件的生成

没有发生变化,不管你调不调用commit方法,不管是软提交还是硬提交都是记录一个log文件。

防止宕机等等问题,在重启的时候会加载log日志文件。


1.4:到${SOLR_HOME}/example/solr/collection1/data ----没有改变 没有flash到硬盘中

过了15秒之后发现


原因:默认的提交,一段时间之后就会将内存中的数据flush到硬盘中。

配置文件在${SOLR_HOME}/example/solr/collection1/conf/schema.xml


2:硬提交到(flush到硬盘中)

2.1:java先实现硬提交。

2.2:solr web 界面可以显示


2.3:到你的${SOLR_HOME}/example/solr/collection1/tlog可以看到日志文件的生成


${SOLR_HOME}/example/solr/collection1/data可以看到数据的生成


我们可以进行优化对这些小的文件合成一个大的文件,主要是提高查询索引的效率。


3:java API操作solr的插入数据不执行commit()方法,就是就不软提交,又不硬提交的方式执行

在solr web 界面和${SOLR_HOME}/example/solr/collection1/data不会有变化

但是${SOLR_HOME}/example/solr/collection1/tlog可以看到日志文件的生成,不管提不提交tlog(日志文件)

 都会记录下来的。

4:在${SOLR_HOME}/example/solr/collection1/conf/schema.xm配置文件中配置软提交和硬提交

<!-硬提交->
<autoCommit>
<maxDocs>10000</maxDocs>//将内存中有10000个文档之后就会执行硬提交
<maxTime>15000</maxTime>//15秒之后将内存中的数据flush到硬盘中  

<openSearcher>false</openSearcher> //true相当于索引库中的数据重新加载一次

                                                                //false是即是提交数据也是查询不到 一般都是false

</autoCommit>

<!-软提交->
<autoSoftCommit>
<maxTime>1000</maxTime>//每秒执行一次软提交
</autoSoftCommit>

maxDocs:当内存索引数量达到指定值的时候,将内存的索引DUMP到硬盘中,并通知searcher类加载新的索引。maxDocs配置是针对每个独立Core的。
maxTime:每隔指定的时间段,自动将COMMIT内存中的索引数据,并通知Searcher类加载新的索引。
以上两种方式,以最先达到条件执行为准。

maxDocs和maxTime两个哪个先满足哪个先执行两者不冲突。

最后openSearcher配置表示进行autocommit时候是否重新打开searcher,如果autocommit频繁又将openSearcher设置为true,那么solr的性能压力会非常大。

1.Solr的软提交是Write-ahead Logging( 预写日志系统)(WAL),所以不必担心softCommit的数据会丢失。Log数据就在$solrHome/collection/data/tlog/下。
2.solr关闭时会进行一次硬提交,所以不必担心关闭时(或kill process)软提交数据会丢失。
kill -9时不会执行硬提交,但是数据也不会丢失,因为这些数据都会记录在tlog目录下面的日志里面,当solr重启之后就会加载日志中的数据。
除非把日志文件删掉,数据才会丢失。

通常设置是1-10分钟自动触发硬提交,每秒钟自动触发软提交

 注意:
    1.Solr的softCommit是Write-ahead Logging的,所以不必担心softCommit的数据会丢失。Log数据就在$solrHome/collection/data/tlog/下。
    2.solr关闭时会进行一次hard commit,所以不必担心关闭时(或kill process)softCommit数据会丢失。
        kill -9时数据也不会丢失,因为这些数据都会记录在tlog目录下面的日志里面,当solr重启之后就会加载日志中的数据。
        除非把日志文件删掉,数据才会丢失。

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值