mongodb系統(tǒng)性能篇(1)

創(chuàng)建固定集合

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)絡(luò)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、廣豐網(wǎng)站維護(hù)、網(wǎng)站推廣。

db.createCollection(“my_collection”,{capped:true,size:10000,max:5})

把普通集合轉(zhuǎn)行成固定集合

db.runCommand({convertTocapped:”test”,size:10000})

GridFS是一種在MongoDB中存儲(chǔ)大二進(jìn)制文件的機(jī)制,使用GridFS可以存儲(chǔ)以下幾種文件:

儲(chǔ)存巨大的文件,比如視頻、高清圖片等

好處:

利用GridFS可以簡(jiǎn)化需求。

GridFS會(huì)直接利用已經(jīng)建立的復(fù)制或分片機(jī)制,故障恢復(fù)和擴(kuò)展都很容易

GridFS可以避免用戶上傳內(nèi)容的文件系統(tǒng)出現(xiàn)問(wèn)題。

GridFS不產(chǎn)生磁盤(pán)碎片

GridFS使用兩個(gè)表來(lái)存儲(chǔ)數(shù)據(jù):

files 包含元數(shù)據(jù)對(duì)象

chunks 包含其他一些相關(guān)信息的二進(jìn)制塊

[root@a2 bin]# ./mongofiles  put mongosniff.tar.gz

[root@a2 bin]# ./mongo

MongoDB shell version: 2.4.3

connecting to: test

> show tables;

fs.chunks

fs.files

system.indexes

> db.fs.files.find();

{ "_id" : ObjectId("5196601b171c296452c1f9f1"), "filename" : "mongosniff.tar.gz", "chunkSize" : 262144, "uploadDate" : ISODate("2013-05-17T16:51:40.843Z"), "md5" : "5067d9e1c4a0e41b93f204a72ec52794", "length" : 7171743 }

>

fs.files 存儲(chǔ)的是文件的相關(guān)信息,fs.chunks存儲(chǔ)是的文件,并且是二進(jìn)制格式的。

查看存儲(chǔ)文件信息

[root@a2 bin]# ./mongofiles  list

connected to: 127.0.0.1

mongosniff.tar.gz       7171743

獲取存儲(chǔ)文件:

[root@a2 bin]# ./mongofiles  get  mongosniff.tar.gz

系統(tǒng)性能優(yōu)化:

建立索引,

當(dāng)創(chuàng)建collection時(shí),系統(tǒng)會(huì)自動(dòng)建立一個(gè)_id的索引,而且不能刪除

> db.system.indexes.find();

{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.c1", "name" : "_id_" }

{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.c2", "name" : "_id_" }

建立普通索引

> db.c2.ensureIndex({age:1},{true});(如果數(shù)據(jù)量大,可以使用background,age:1表示索引按age的升序排列,-1為降序)< /p>

> db.system.indexes.find();

{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.c1", "name" : "_id_" }

{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.c2", "name" : "_id_" }

{ "v" : 1, "key" : { "age" : 1 }, "ns" : "test.c2", "name" : "age_1", "background" : true }

建立唯一索引

> db.c2.ensureIndex({name:1},{unique:true})

如果再輸入的數(shù)據(jù)name字段有重復(fù)的話,就會(huì)報(bào)錯(cuò),如下:

> db.c2.insert({name:"user0"})

E11000 duplicate key error index: test.c2.$name_1  dup key: { : "user0" }

刪除所有索引

> db.c2.dropIndex();

刪除name字段的索引

> db.c2.dropIndex({name:1})

MongoDB 提供了一個(gè)explain命令讓我們獲知系統(tǒng)如何處理查詢請(qǐng)求

> db.c2.find({age:{$gt:26}}).explain();

{

       "cursor" : "BtreeCursor age_1",

       "isMultiKey" : false,

       "n" : 3,                              返回的數(shù)據(jù)數(shù)

       "nscannedObjects" : 3,

       "nscanned" : 3,                        被掃描的文檔數(shù),因?yàn)樽隽薬ge字段的索引

       "nscannedObjectsAllPlans" : 3,

       "nscannedAllPlans" : 3,

       "scanAndOrder" : false,

       "indexOnly" : false,

       "nYields" : 0,

       "nChunkSkips" : 0,

       "millis" : 1,                     耗時(shí)(毫秒)

       "indexBounds" : {                 所使用的索引

               "age" : [

                       [

                               26,

                               1.7976931348623157e+308

                       ]

               ]

       },

       "server" : "a1:27017"

}

MongoDB Database Profiler 是一種慢查詢?nèi)罩竟δ?,可以作為我們?yōu)化數(shù)據(jù)庫(kù)的依據(jù)。

開(kāi)啟profile功能:

(1)> db.setProfilingLevel(2);

{ "was" : 0, "slowms" : 100, "ok" : 1 }

(2)[root@a1 bin]# ./mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/dblogs -profile=2 --fork

添加 -profile參數(shù)

優(yōu)化方案:

1:創(chuàng)建索引   db.posts.ensureIndex({ts:1});

2: 限定返回結(jié)果條數(shù)    db.posts.find().sort({ts:-1}).limit(10);

3: 查詢使用到的字段,不查詢所有字段

4: 采用cappedcollection

capped Collections比普通Collections的讀寫(xiě)效率高

5: 采用Profiling

Mongosniff此工具可從底層監(jiān)控到底有哪些命令發(fā)送給MongoDB去執(zhí)行。

執(zhí)行這個(gè)命令可能會(huì)出現(xiàn)如下錯(cuò)誤

[root@a1 bin]# ./mongosniff --help

./mongosniff: error while loading shared libraries: libpcap.so.0.9: cannot open shared object file: No such file or directory

解決方法:

yum -y install libpcap-devel

由于系統(tǒng)自動(dòng)安裝的是 1.0版本,所以我們還必須建立個(gè)軟連接

ln -s /usr/lib64/libpcap.so.1.0.0 /usr/lib64/libpcap.so.0.9

使用方法:

[root@a1 bin]# ./mongosniff --source NET lo

sniffing... 27017

可以將這些數(shù)據(jù)輸出到一個(gè)日志文件中,那么就可以保留下所有數(shù)據(jù)庫(kù)操作的歷史記錄,對(duì)于后期的性能分析和安全審計(jì)等工作將是一個(gè)巨大的貢獻(xiàn)。

Mongostat

此工具可以快速的查看某組運(yùn)行中的MongoDB 實(shí)例的統(tǒng)

計(jì)信息,也需要在打開(kāi)一個(gè)客戶端進(jìn)行命令操作:

用法如下:

[root@localhost bin]# ./mongostat

查看數(shù)據(jù)庫(kù)的狀態(tài):

> db.stats();

{

       "db" : "test",

       "collections" : 6,

       "objects" : 234,

       "avgObjSize" : 263.77777777777777,

       "dataSize" : 61724,

       "storageSize" : 1077248,

       "numExtents" : 6,

       "indexes" : 4,

       "indexSize" : 32704,

       "fileSize" : 67108864,

       "nsSizeMB" : 16,

       "dataFileVersion" : {

               "major" : 4,

               "minor" : 5

       },

       "ok" : 1

}

分享名稱:mongodb系統(tǒng)性能篇(1)
網(wǎng)站地址:http://muchs.cn/article32/ihgppc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)網(wǎng)站維護(hù)、服務(wù)器托管、外貿(mào)建站、網(wǎng)站排名域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)