記錄一次MongoDB3.0.6版本wiredtiger與MMAPv1引擎的寫入耗時對比
增加了wiredtiger引擎:
開源的儲存引擎;
支援多核CPU、充分利用記憶體/晶片級別快取(注:10月14日剛剛釋出的3.0.7版本中,進一步改進了記憶體操作的效能);
基於B-TREE及LSM演算法;
提供文件級鎖(document-level concurrency control),類似於關係型資料庫的的行級鎖;
支援檔案壓縮(其中snappy壓縮機制可以在5%的額外CPU消耗,減少70%的空間使用,也可以根據需要調節壓縮比例),三種壓縮型別:
不壓縮;
Snappy壓縮:預設的壓縮方式, Snappy是在谷歌內部生產環境中被許多專案使用的壓縮庫,包括BigTable,MapReduce和RPC等,壓縮速度比Zlib快,但是壓縮處理檔案的大小會比Zlib大20%-100%, Snappy對於純文字的壓縮率為1.5-1.7,對於HTML是2-4,對於JPEG、PNG和其他已經壓縮過的資料壓縮率為1.0。在I7 i7 5500u 單核CPU測試中,壓縮效能可在200M/s-500M/s;
Zlib壓縮: Z1ib是一個免費、通用、跨平臺、不受任何法律阻礙的、無損的資料壓縮開發庫,相對於Snappy壓縮,消耗CPU效能高、壓縮速度慢,但是壓縮效果好。
MMAPv1引擎(MongoDB2.6及以下版本用的是MMAP引擎):
collection鎖(collection-level concurrency control),在MMAP版本中,只提供了database的鎖(既當一個使用者對一個collection進行操作時,其他的collection也被掛起);
無縫遷移(MMAP版本的資料可以線上遷移至MMAPV1版本,也可以遷移至wiredtiger引擎中)。
可插拔的儲存引擎API(類似於mysql的多引擎驅動)
通過不同的資料引擎來滿足不同的資料需求;
未來更多的場景擴充套件。
Ops manager(MongoDB企業版提供的功能)
居於web的圖形管理介面
減少日常日常和配置的工作
測試環境:
伺服器硬體配置:172.16.16.169 CPU:2*[email protected] 2.40GHz、記憶體:8G
客戶端硬體配置:172.16.40.92 CPU: 4*[email protected] 1.90GHz、記憶體:4G
資料庫:mongodb V3.0.6
開發環境:python3.4.3、pycharm4.5.4
測試前提:已安裝完成了mongodb、python、pycharm
測試場景:插入100萬條資料的時間消耗對比;
1. 在伺服器端啟動MongoDB(預設為MMAPv1引擎,預設埠為27017,在MongoDB的安裝目錄中啟動MongoDB,定義資料和日誌路徑):
#./mongod --dbpath=/data/db --logpath=/data/log
2. 登入MongoDB:
#./mongo
3. 檢視當前的引擎狀態:
> db.serverStatus()
"storageEngine" : {
"name" : "mmapv1"
4. 在伺服器端啟動MongoDB(WiredTiger引擎,埠:11111,在MongoDB的安裝目錄中啟動MongoDB,定義資料和日誌路徑,定義WiredTiger引擎):
#./mongod --dbpath=/data/wiredtiger --logpath=/data/wiredtiger/log
5. 登入至啟動了WiredTiger引擎的Mongodb:
#./mongo127.0.0.1:11111
6. 檢視當前的引擎狀態:
> db.serverStatus()
"storageEngine" : {
"name" : "wiredTiger"
7. python連線MongoDB MMAPv1寫入配置:
importtime import datetime importtimeit importmath ISOTIMEFORMAT = '%Y-%m-%d %X' from pymongo import MongoClient mc = MongoClient("172.16.16.169",27017) db = mc.users def dateDiffInSeconds(date1,date2): timedelta = date2 - date1 return timedelta.days*24*3600 +timedelta.seconds date1 = datetime.datetime.now() db.users.drop() for iin range(0,1000000) :db.users.insert({"name":"ljai","age":i,"addr":"fuzhou"}) c = db.users.find().count() print("count is ",c) date2 = datetime.datetime.now() print(date1) print(date2) print(dateDiffInSeconds(date1,date2),"seconds") mc.close()
8. 測試結果:1000萬條資料寫入花費了12分鐘28秒:
2、 python連線MongoDB WiredTiger寫入配置:
importtime import datetime importtimeit importmath ISOTIMEFORMAT = '%Y-%m-%d %X' from pymongo import MongoClient mc = MongoClient("172.16.16.169",27017) db = mc.users def dateDiffInSeconds(date1,date2): timedelta = date2 - date1 return timedelta.days*24*3600 +timedelta.seconds date1 = datetime.datetime.now() db.users.drop() for iin range(0,1000000) :db.users.insert({"name":"ljai","age":i,"addr":"fuzhou"}) c = db.users.find().count() print("count is ",c) date2 = datetime.datetime.now() print(date1) print(date2) print(dateDiffInSeconds(date1,date2),"seconds") mc.close()
9. 測試結果:1000萬條資料寫入花費了10分3秒:
100萬條的資料寫入,WireTiger引擎會比MMAPv1快一些,後續再繼續其他方面的效能測試。
相關推薦
記錄一次MongoDB3.0.6版本wiredtiger與MMAPv1引擎的寫入耗時對比
MongoDB3.0.x的版本特性(相對於MongoDB2.6及以下): 增加了wiredtiger引擎: 開源的儲存引擎; 支援多核CPU、充分利用記憶體/晶片級別快取(注:10月14日剛剛釋出的3.0.7版本中,進一步改進了記憶體操作的效能); 基於B-TREE
記錄一次使用terminal進行git管理與提交到Github的過程
忽略文件 pack com res ota pac sed clone fatal 1、環境的構建: 使用Mac系統自帶的Git進行版本管理存在,Git是系統的Xcode集成的 查看版本的命令: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px;
記錄一次Oracle VirtualBox 下 Centos 6.5 VM 磁盤擴容
vm磁盤擴容Oracle VirtualBox 創建的 Centos 6.5 VM 默認硬盤大小是8個G(未手工調整),現使用100%,需要擴容。[root@kaola ~]# df -hFilesystem Size Used Avail Use% Mounted o
spark2.2.0:記錄一次資料傾斜的解決(擴容join)!
前言: 資料傾斜,一個在大資料處理中很常見的名詞,經由前人總結,現已有不少資料傾斜的解決方案(而且會發現大資料的不同框架的資料傾斜解決思想是一致的,只是實現方法不同),本文重點記錄這次遇到spark處理資料中的傾斜問題。 老話: 菜雞一隻,本人會對文中的結論負責,如果有說錯的,還請各位批評指出
記錄一次mysql由5.6升級到5.7出現的異常---Expression #23 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'c.commentCount' which is
### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #23 of SELECT list is not in GROUP BY clause an
記錄一次Python下Tensorflow安裝過程,1.7帶GPU加速版本
最近由於論文需要,急需搭建Tensorflow環境,16年底當時Tensorflow版本號還沒有過1,我曾按照手冊搭建過CPU版本。目前,1.7算是比較新的版本了(也可以從原始碼編譯1.8版本的Tensorflow)。 安裝步驟: 不能急於求成,安裝任何東西前都應該先閱讀使用者手冊與FAQ,弄清軟體依賴與安裝
ubuntu常用命令及操作,包括安裝CUDA 記錄一次Python下Tensorflow安裝過程,1.7帶GPU加速版本
chmo 777 Document 這裡Document是一個資料夾,資料夾中還有好多子檔案,可以發現執行了這條指令以後,其子資料夾的許可權並沒有改變。 要想改變其子資料夾的許可權,應該執行 chmod -R 777 Document/ ubuntu desktop的英偉達CUD
記錄一次令人心碎的 elasticsearch5.6 伺服器的搭建
前言: 最近想搭一個elasticsearch伺服器,因為之前用的是solr。這次想換個用用,沒想到在搭建的過程遇到兩個問題困擾我多時。 錯誤1: max file descriptors [4096] for elasticsearch proc
記一次 React Native 大版本升級過程——從0.40到0.59
去年把公司幾個react native 相關的專案升級了下,已經過去一段時間了,這裡系統整理下之前的整個過程。 背景 之前到公司的時候發現公司用的還是0.40的版本,據瞭解,當時專案做的比較早,導航用的是自帶的路由庫,狀態管理用的是 mobx。到公司之前雖然有react native的相關經驗,不過當時官方
記錄一次“記錄超長”
har 語句 類型 執行 如果 可能 事情 縮小 百度 Jdbc報錯“記錄超長”,百度一下推測可能是因為SQL過長導致;但是後來經過老杜指點,發現原來是因為字段(varchar 8000)超長導致; 解決問題的套路: 1. 首先在Sql的客戶端上執行代碼;如果不錯,說明還是
[邏輯漏洞]記錄一次挖洞
9.png 列表 一次 查詢 urn 找到 ima sting .com 陽光明媚的早上,turn on the PC and 隨意地瀏覽著以往漏洞列表,希望在裏面找到一些遺忘的痕跡。 果然,我發現一個被忽略的漏洞,一個暴露在外網的的一個接口,可以查詢該企業網站是否註冊了的
簡單記錄一次REDO文件損壞報錯 ORA-00333重做日誌讀取塊出錯
clas 後者 利用 實例恢復 poi cancel true cover html 一.故障描寫敘述 首先是實例恢復須要用到的REDO文件損壞 二、解決方法 1.對於非當前REDO或者當前REDO可是無活動事務使用下面CLEAR命令: 用CLEAR命令重建該日誌
記錄一次配置http跳轉https的過程
http https 網站跳轉 公司最近搞了一個數據運營平臺,這個平臺會以web界面的形式把各個數據展示出來,這個項目是我們一個經理的重點關照項目。把平臺模塊部署完畢並且啟動之後,又把這個平臺服務器的外網IP綁定到alkaid.lechange.com這個域名上,在瀏覽器裏輸入https://al
記錄一次concurrent mode failure問題排查過程以及解決思路
tails only cnblogs 策略 executor red execute incr run 背景:後臺定時任務腳本每天淩晨5點30會執行一個批量掃庫做業務的邏輯。 gc錯誤日誌: 2017-07-05T05:30:54.408+0800: 518534
記錄一次MySQL進程崩潰,無法重啟故障排查
not pool function 解決 variables fail data class 緩沖 最近程序在跑著沒幾天,突然訪問不了,查看應用進程都還在。只有數據庫的進程down掉了。於是找到日誌文件看到如下錯誤 2017-07-24 01:58:53 19934 [N
記錄一次處理https監聽不正確的過程
負載均衡 https 502 nginx 金山雲 今天開發反饋在測試金山雲設備的時候遇到了這樣的一個現象:wget https://funchlscdn.lechange.cn/LCLR/2K02135PAK01979/0/0/20170726085033/dev_201707260850
記錄一次基於LV塊做存儲介質的KVM擴容過程
kvm擴容 基於lv的kvm擴容 kvm硬盤擴容 從下圖可看出盤已經不夠用了然後到宿主機執行LVM擴展Lv 擴充過程略然後擴容完,在虛擬機上執行fdils –l在宿主機擴容的LV在虛擬機裏已經有容量顯示,但我們的分區仍然沒有被顯示出來還是原來的310G因為這個分區在分時考慮到後期的擴充,所以用了G
記錄一次服務器被攻擊
服務器 攻擊 肉雞 公司一臺服務器從某一個時間開始,突然在每天不定期出現磁盤io和進程數的告警,初期進行查看,並未發現問題,暫時擱置。 每次告警時間都很短暫,所以很難在系統出現告警時登錄查看。而且由於在忙其他事情,這件事也一直沒有仔細去查。 登錄檢查的時候發現有一個分區磁盤滿了
記錄一次https證書申請失敗的案例
hydra tor 一次 申請 目錄 tin site text auto 部分站點由於使用了大量的域名,會導致 auto-ssl 配置的內存不夠用,導致證書申請失敗。需要做以下調整 nginx.conf 中 lua_shared_dict auto_ssl 調整為 128
記錄一次mysql 5.7 max_allowed_packet修改失敗的問題
packet for query is too large (2010 > 1024) mysql 5.7 max_allowed_packet今天我的客戶給我反饋說報錯 ### Error querying database. Cause: com.mysql.jdbc.PacketTooBigEx