① 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)也不能徹底消除磁碟上的數據。格式化僅僅是為操作系統創建一個全新的空的文件索引,將所有的扇區標計為未使用狀態,讓操作系統認為硬碟上沒有文件。因此,格式化後的硬碟數據也是可以恢復的,也就意味著數據的不安全。
目前主流的數據銷毀方式,是對刪除文件所佔用的盤空間進行多次多規則的重復擦寫。我們知道,由於磁碟可重復使用,前面的數據被後面的數據覆寫後,前面的數據被不原的概率就大大降低了,隨著被覆寫次數的增多,能夠被還原的可能性就趨於零。
瑞星文件粉碎器就是採用此原理的產品,它會用大量無規則的垃圾數據去填充刪除文件的磁碟空間,這樣處理之後,被刪除的文件使用普通的方法就很難恢復了。安裝了瑞星殺毒軟體之後,用戶的右鍵會有一個「粉碎文件」的選項。