分批UPDATE COMMIT读书笔记怎么写写

三种solr提交(commit)索引的方式 - san_yun - ITeye博客
博客分类:
三种solr提交索引的方式
通过api直接commit,这样性能比较差,在我测试下,平均每条commit600ms
HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/dtrace");
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField("id", i);
solrServer.add(doc1);
2. AutoCommit
参考:http://wiki.apache.org/solr/SolrConfigXml
autoCommit一般的配置如下:
&updateHandler class="solr.DirectUpdateHandler2"&
&autoCommit&
&maxTime&2000&/maxTime&
&openSearcher&false&/openSearcher&
&/autoCommit&
&autoSoftCommit&
&maxTime&10000&/maxTime&
&/autoSoftCommit&
&updateLog&
&str name="dir"&${solr.shard.data.dir:}&/str&
&/updateLog&
&/updateHandler&
4.0开始引入了autoSoftCommit和openSearcher的概念这个是什么意思呢?
As of Solr 4.0, there is a new “soft commit” capability, and a new parameter for hard commits – openSearcher. Currently, there’s quite a bit of confusion about the interplay between soft and hard commit actions。
solr hard commit做的事情
1、生成一个新的tlog文件,删除旧的tlog。
2、把内存中的索引文件fsync到磁盘,并创建一个index descriptor。这里比较耗费机器资源。
这样即使jvm崩溃或者宕机,也不影响这部分索引。
3、使得索引在searcher中可见。但是也需要重新打开searcher才行。
soft commit做的事情
1、把内存文件fsync到磁盘,但不创建index descriptor。
也就是说原索引和现在的索引还互不感知,所以如果jvm崩溃,那这部分索引就没了。
2、可以重新打开searcher,使得新的索引可以被查找到。
更详细的信息参考:
3. CommitWithin
简单的说就是告诉solr在多少毫秒内提交,比如如果我指定&add commitWithin=10000&,将会高速solr在10s内提交我的document。用法
1.可以在add方法设置参数,比如 server.add(mySolrInputDocument, 10000);
UpdateRequest req = new UpdateRequest();
req.add(mySolrInputDocument);
req.setCommitWithin(10000);
req.process(server);
参考:http://wiki.apache.org/solr/CommitWithin
浏览 11725
浏览: 1376657 次
来自: 杭州
不错,谢谢!
不错,谢谢!
tengyizu 写道大牛怎么解决的啊
我也遇到这样的问题
谢谢,最后问一下,画图用的是什么软件?
不错学习了!分享一个参考内容以电商购物支付流程中,在各大参与者 ...2013年3月 Oracle大版内专家分月排行榜第三
2013年9月 Oracle大版内专家分月排行榜第二
2013年3月 Oracle大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。1148人阅读
cvs使用于版本管理,规范项目。
初次使用cvs的开发者容易对update、syncronize和commit几个操作混淆,有时候会导致“代码事故”。
经过理论学习和代码实践,总结如下,希望有帮助。
需要明确,cvs是用于版本控制的。
update:从库(cvs-repository)中更新代码到本地
update只有在本地代码版本低于cvs-repository中的项目代码文件版本时,才能update成功。如果版本相同,update了本地代码不会改变,因为版本相同cvs认为你的代码为最新,不要更新。如果本地代码版本低于库中的,那么说明不是最新需要更新,并且此时,如果不更新,是无法commit的,目的是为了保证每次commit的版本最新,确保版本递增,代码有序更新。
syncronize:同步比较代码。这个仅仅是比较代码而已,开发者不能修改代码。但是通过这个操作,可以找出和主线不同的代码文件,方便比较而已。
commit:提交本地代码到库。此时的操作其实是,本地项目代码文件覆盖库该项目相应代码。此时库和你自己相应有修改的代码文件版本会变高一个级别(如1.4变成1.5)
commit大家都会,但是commit只有在本地版本和库版本相同(即最新版本)的时候才生效。试想,如果本地版本不是最新,那么代码不是最新是以前代码,commit是不是也没有意义呢?
但是update到底是如何进行的呢?
很多人不是很清楚。
update的简单原理就是:update只有当本地版本低于库版本才生效。因为很简单,如果版本同,意味着你下载的是最新的,只有你修改的东西,没有别人修改的,你修改的肯定和原先的不同,总不会要你在比较还原原来的吧。你只要比较无误后commit,并它自动提升版本就行。
&当你的版本和库中比较,低于库版本时候,意味着代码除了你自己修改之外也被别人改了,意味着你的现有版本不是最新,你首先需要更新版本到最新才能commit,否则你的commit是无效的,会提示没有代码没有改变,无需commit这样的提示,但是你的代码确实改了,谁叫你不update呢?机器发现你的版本不是最新,就直接认为你代码没变化了,不让你提交(这是出于代码保持更新版本递进考虑)。
那么,当你update的时候,库代码和你本地代码是如何更新的呢?这里所谓的更新并不是覆盖copy,而是会和原来存放的副本比较,甚至多个副本,如多个版本代码后为1.7,你为1.4,则存在你1.4这个副本和1.7这个副本,就会比较。如果自己1.4代码改动后和1.7比较,相同位置代码行不同,则会比较1.4原始版本,如果自己的和1.4比较这个位置一样,说明自己没有修改,则以1.7为准,1.4和1.7相比代码多了,则删除,少了,则增加1.7的。如果这个位置修改了,则代码冲突,会标记出来。
&&&&&&& 上述都是一些原理性的东西,便于理解而已。其实你只要记住如何提交代码就可。
&&&&&&& 代码要提交的时候,先update,将最新版本相关修改下载到本地代码中,再按F5刷新代码(确保代码即使更新)。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 进行比较,哪里不一样,进行手动合并。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 再commit,commit的时候会显示与库不同的代码文件,比较缺人无误之后,逐次确认提交就可。
&&&&&& 写心得不容易,好的请分享。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:11136次
排名:千里之外
(2)(2)(1)(2)(1)(4)(4)(1)oracle分批插入提交的sql
&n_count integer := 0;
&cursor cur_1 is select * from 源表;
&for icur_1 in cur_1 loop
&insert into&目标表 values
(icur_1.列名,icur_1.列名, ……icur_1.COLN);
&&& n_count :=
n_count + 1;
&&& if n_count
&= 5000 then
n_count := 0;
when others then
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 个人简历怎么写 的文章

 

随机推荐