原创 supervisor監控和mail預警

一、首先配置郵件相關配置 在配置文件/etc/mail.rc末尾增加如下配置 set [email protected] set smtp=mail.demo.abcd.com   #發送方地址 郵件服務器 也可能是ip地址 set

原创 leveldb深度剖析-布隆過濾器

布隆過濾器使用bit數組映射關鍵字key,對於在一個超大的集合中判斷是否存在某個key能夠起到很好的效果。但是缺點很明顯:容易誤報。也就是本來不存在的key,可能告訴你它存在。 一、布隆過濾器 根據上圖來說明布隆過濾器的原理 : 1)布

原创 leveldb深度剖析-存儲流程(1)

上一篇介紹了leveldb初始化流程,本篇開始介紹存儲流程。對於leveldb來說,刪除數據實際是插入數據,只是將類型設置爲刪除即可,並不會真正將數據從磁盤中刪除.那麼什麼時候真正刪除呢?在壓縮過程中,具體在壓縮流程中介紹。 一、插入 1

原创 leveldb深度剖析-TableCache

TableCache設計的出發點就是:提升性能。根據著名的局部性訪問原理,leveldb設計了一個簡單LRUCache算法,該算法是TableCache的核心,下面我們就來分析一下leveldb是如何實現的。 一、TableCache 先

原创 leveldb深度剖析-壓縮流程(1)

繼續上一篇遺留問題,本篇介紹對MemTable壓縮,在介紹之前先普及一下其他內容。 在存儲流程第一篇博客中,有一個方法沒有詳細說明--MakeRoomForWrite,該函數是保證新插入的數據有足夠空間,那麼該方法是如何保證的呢?本篇就詳

原创 centos下使用搜狗輸入法

搜狗輸入法官方網站沒有提供centos7下面的安裝包,網上大部分教程都是針對deb包進行解壓然後安裝。我是怎麼安裝的我也記不清楚了,稀裏糊塗的就安裝上了。但是安裝的時候遇見兩個重要問題: 1、有的博客建議將ibus卸載掉。我這裏不建議卸載

原创 leveldb深度剖析-存儲流程(2)

繼續上一篇內容,本篇繼續說明leveldb是如何將數據插入到MemTable中。 一、Iterate循環處理 插入到MemTable使用該接口WriteBatchInternal::InsertInto,具體實現是: Status Wr

原创 leveldb常見問題以及性能優化點

本篇是leveldb最後一篇,這裏主要把技術核心點,性能提升點或者面試可能會被問到進行總結。 一、常見問題 1、leveldb key-value內存,內存中保存的是所有key-value嗎?  答:不是 搜索順序,memtable im

原创 leveldb深度剖析-壓縮流程(3)

本篇是壓縮流程中最後一篇,介紹DoCompactionWork方法。壓縮主要工作是什麼呢?剔除無效數據。什麼是無效數據呢?就是被標記爲刪除的數據,我們要在這個流程中從磁盤中刪除掉。下面來看一下具體是如何進行刪除的。 一、迭代器 該函數比較

原创 leveldb深度剖析-查詢流程

至此,將插入流程以及壓縮流程都已介紹完畢了,本篇主要介紹查詢流程。 一、查詢流程 首先來看一下查詢接口具體實現內容: /** * 查詢 * @param options 查詢選項 * @param key 查詢key * @pa

原创 leveldb深度剖析-壓縮流程(2)

繼續上一篇內容,來分析一下跨層壓縮處理。leveldb不會輕易進行壓縮流程(壓縮流程影響性能),所以爲了提升性能leveldb設計兩個簡單算法來決定壓縮哪一層的哪一個文件 一、壓縮預計算 1.1、打分函數 leveldb每次進行文件壓縮並

原创 Linux命令查找並替換 awk sed

查找當前目錄中所有文件,將`business` VARCHAR(16)替換成`business` VARCHAR(32) grep '`business` VARCHAR(16)' ./ -rn | awk -F ':' '{print

原创 leveldb深度剖析-初始化流程

本篇來介紹一下leveldb初始化流程,初始化流程中涉及了很多內容,例如:文件組織方式,存儲內容序列化和反序列化等等。在瞭解這些內容後,是有助於日後分析存儲流程和壓縮流程的。 一、創建/Open數據庫 leveldb屬於輕量級kv數據庫,

原创 leveldb深度剖析-MemTable

上一篇介紹了SkipList數據結構,但leveldb插入數據並不是直接操作SkipList,而是直接操作MemTable。可以理解爲MemTable是對SkipList一層封裝。 一、數據結構 class MemTable { pu

原创 leveldb深度剖析-存儲結構(1)

從今天開始深入剖析leveldb源碼,在工作中也有用到leveldb(雖然沒出過問題),但是從個人興趣來說還是比較喜歡這款高效、簡單的數據庫。其實我們一直在使用leveldb,只是大家可能沒有發現。例如:Chrome(谷歌瀏覽器)底層存儲