① elasticsearch索引量大怎么定时删除
主要看数据量ES索引优化篇主要从两个方面解决问题,一是索引数据过程;二是检索过程。(本文主要介绍)索引数据过程我在上面几篇文章中有提到怎么创建索引和导入数据,但是大家可能会遇到索引数据比较慢的过程。其实明白索引的原理就可以有针对性的进行优化。ES索引的过程到相对Lucene的索引过程多了分布式数据的扩展,而这ES主要是用tranlog进行各节点之间的数据平衡。所以从上我可以通过索引的settings进行第一优化:“index.translog.flush_threshold_ops”:“100000″“index.refresh_interval”:“-1″,这两个参数第一是到tranlog数据达到多少条进行平衡,默认为5000,而这个过程相对而言是比较浪费时间和资源的。所以我们可以将这个值调大一些还是设为-1关闭,进而手动进行tranlog平衡。第二参数是刷新频率,默认为120s是指索引在生命周期内定时刷新,一但有数据进来能refresh像lucene里面commit,我们知道当数据addDoucment会,还不能检索到要commit之后才能行数据的检索所以可以将其关闭,在最初索引完后手动refresh一之,然后将索引setting里面的index.refresh_interval参数按需求进行修改,从而可以提高索引过程效率。另外的知道ES索引过程中如果有副本存在,数据也会马上同步到副本中去。我个人建议在索引过程中将副本数设为0,待索引完成后将副本数按需量改回来,这样也可以提高索引效率。“number_of_replicas”:0上面聊了一次索引过程的优化之后,我们再来聊一下检索速度比较慢的问题,其实检索速度快度与索引质量有很大的关系。而索引质量的好坏与很多因素有关。一、分片数分片数,与检索速度非常相关的的指标,如果分片数过少或过多都会导致检索比较慢。分片数过多会导致检索时打开比较多的文件别外也会导致多台服务器之间通讯。而分片数过少为导至单个分片索引过大,所以检索速度慢。在确定分片数之前需要进行单服务单索引单分片的测试。比如我之前在IBM-3650的机器上,创建一个索引,该索引只有一个分片,分别在不同数据量的情况下进行检索速度测试。最后测出单个分片的内容为20G。所以索引分片数=数据总量/单分片数目前,我们数据量为4亿多条,索引大小为近1.5T左右。因为是文档数据所以单数据都中8K以前。现在检索速度保证在100ms以下。特别情况在500ms以下,做200,400,800,1000,1000+用户长时间并发测试时最坏在750ms以下.二、副本数副本数与索引的稳定性有比较大的关系,怎么说,如果ES在非正常挂了,经常会导致分片丢失,为了保证这些数据的完整性,可以通过副本来解决这个问题。建议在建完索引后在执行Optimize后,马上将副本数调整过来。大家经常有一个误去副本越多,检索越快,这是不对的,副本对于检索速度其它是减无增的我曾做过实现,随副本数的增加检索速度会有微量的下降,所以大家在设置副本数时,需要找一个平衡值。另外设置副本后,大家有可能会出现两次相同检索,出现出现不同值的情况,这里可能是由于tranlog没有平衡、或是分片路由的问题,可以通过?preference=_primary让检索在主片分上进行。三、分词其实分词对于索引的影响可大可小,看自己把握。大家越许认为词库的越多,分词效果越好,索引质量越好,其实不然。分词有很多算法,大部分基于词表进行分词。也就是说词表的大小决定索引大小。所以分词与索引膨涨率有直接链接。词表不应很多,而对文档相关特征性较强的即可。比如论文的数据进行建索引,分词的词表与论文的特征越相似,词表数量越小,在保证查全查准的情况下,索引的大小可以减少很多。索引大小减少了,那么检索速度也就提高了。四、索引段索引段即lucene中的segments概念,我们知道ES索引过程中会refresh和tranlog也就是说我们在索引过程中segmentsnumber不至一个。而segmentsnumber与检索是有直接联系的,segmentsnumber越多检索越慢,而将segmentsnumbers有可能的情况下保证为1这将可以提到将近一半的检索速度。$curl-XPOST‘_optimize?only_expunge_deletes=true
② oracle中如何删除已建立的索引
1、打开Navicat,右击oracle数据库,然后点击【打开连接】。
③ 怎么在数据库中删除已经添加的某个索引
删除索引可以使用ALTER TABLE或DROP INDEX语句来实现,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下:
DROP INDEX index_nameONtalbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
注:其中,前两条语句是等价的,删除掉table_name中的索引index_name。
索引的使用及注意事项
EXPLAIN可以帮助开发人员分析SQL问题,explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。
使用方法,在select语句前加上Explain就可以了:Explain select * from user where id=1;
尽量避免这些不走索引的sql:
SELECT `sname` FROM `stu` WHERE `age`+10=30;-- 不会使用索引,因为所有索引列参与了计算
SELECT `sname` FROM `stu` WHERE LEFT(`date`,4) <1990; -- 不会使用索引,因为使用了函数运算,原理与上面相同
SELECT * FROM `hounwang` WHERE `uname` LIKE'后盾%' 走索引
SELECT * FROM `hounwang` WHERE `uname` LIKE "%后盾%" 不走索引
正则表达式不使用索引,这应该很好理解,所以为什么在SQL中很难看到regexp关键字的原因。
字符串与数字比较不使用索引;
CREATE TABLE `a` (`a` char(10));
EXPLAIN SELECT * FROM `a` WHERE `a`="1" 走索引
EXPLAIN SELECT * FROM `a` WHERE `a`=1 不走索引
④ ELk怎么删除他创建的索引文件或者数据文件
可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。
DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
其中,前两条语句是等价的,删除掉table_name中的索引index_name。
⑤ 如何才能彻底删除数据
主流的数据销毁技术,主要有数据删除、物理销毁等。“删除(Delete)”是删除数据最便捷的方法,如大家熟悉的右键删除。它实际上并没有真正的把数据从硬盘上删除,只是将文件的索引删除而已。这种方法是最不安全的,只能欺骗普通使用者。现在有很多专门进行数据恢复的软件,普通用户即可在网上下载软件恢复此类数据。
与此类似的是,磁盘格式化(Format)也不能彻底消除磁盘上的数据。格式化仅仅是为操作系统创建一个全新的空的文件索引,将所有的扇区标计为未使用状态,让操作系统认为硬盘上没有文件。因此,格式化后的硬盘数据也是可以恢复的,也就意味着数据的不安全。
目前主流的数据销毁方式,是对删除文件所占用的盘空间进行多次多规则的重复擦写。我们知道,由于磁盘可重复使用,前面的数据被后面的数据覆写后,前面的数据被不原的概率就大大降低了,随着被覆写次数的增多,能够被还原的可能性就趋于零。
瑞星文件粉碎器就是采用此原理的产品,它会用大量无规则的垃圾数据去填充删除文件的磁盘空间,这样处理之后,被删除的文件使用普通的方法就很难恢复了。安装了瑞星杀毒软件之后,用户的右键会有一个“粉碎文件”的选项。