我有具有併發集合讀作,也是應用程序的某些部分更新同一個集合,但在裝載過程中每次讀取和更新操作採取了這麼多的時間,它會隨着時間的推移很慢如何避免在MongoDB中鎖定
下面是一些查詢
nscanned:4 nupdated:2 keyUpdates:3 numYields: 1 locks(micros) w:2475463 10247ms
nscanned:4 nupdated:2 keyUpdates:2 numYields: 1 locks(micros) w:2077481 1054ms
集只有70K記錄的日誌。 併發讀取和寫入幾乎10
這是我已經做了
拆分與3成員副本集
拆分鍵被散列和兩個DB和收藏水平分片是enble
每個副本盒子有足夠的能力和RAM。
查詢是有界的索引和
db.collection.find().explain()
有這個輸出{ "cursor" : "BtreeCursor fp.ulc_1_c_1_p_1", "isMultiKey" : true, "n" : 0, "nscannedObjects" : 2, "nscanned" : 2, "nscannedObjectsAllPlans" : 2, "nscannedAllPlans" : 2, "scanAndOrder" : false, "indexOnly" : false, "nYields" : 0, "nChunkSkips" : 0, "millis" : 0, "indexBounds" : { "fp.ulc" : [ [ "0ca01c47c984b5583d455e42aafded2c", "0ca01c47c984b5583d455e42aafded2c" ] ], "c" : [ [ false, false ] ], "p" : [ [ 1372062247612, 1.7976931348623157e+308 ] ] } }
我也曾嘗試設置閱讀偏好與繼發但過了一段時間後,它也進入緩慢 另外我注意到mongostat中的鎖是從mongostat輸出的
insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn set repl time
*0 *0 6 *0 4 2|0 0 54.4g 109g 1.74g 0 collectDb:199.7% 0 6|0 0|1 3k 130k 21 set1 PRI 08:27:55
*0 *0 15 *0 11 8|0 1 54.4g 109g 1.74g 0 collectDb:200.1% 0 6|0 0|1 11k 357k 21 set1 PRI 08:27:58
7 *0 34 *0 18 26|0 0 54.4g 109g 1.75g 0 collectDb:202.9% 0 6|0 0|1 36k 362k 21 set1 PRI 08:28:00
1 *0 13 *0 8 7|0 0 54.4g 109g 1.75g 0 collectDb:192.3% 0 6|0 0|1 12k 287k 21 set1 PRI 08:28:03
1 *0 9 *0 7 8|0 0 54.4g 109g 1.75g 0 collectDb:196.1% 0 6|0 0|1 5k 258k 21 set1 PRI 08:28:04
5 *0 20 *0 10 13|0 0 54.4g 109g 1.75g 0 collectDb:207.7% 0 6|0 0|1 23k 214k 21 set1 PRI 08:28:08
8 *0 38 *0 21 29|0 0 54.4g 109g 1.74g 0 collectDb:215.9% 0 5|0 0|1 40k 548k 21 set1 PRI 08:28:12
6 *0 44 *0 24 22|0 0 54.4g 109g 1.75g 0 collectDb:199.5% 0 3|0 0|1 45k 509k 21 set1 PRI 08:28:15
2 4 27 *0 11 28|0 0 54.4g 109g 1.75g 0 collectDb:169.2% 0 6|0 0|1 21k 318k 21 set1 PRI 08:28:18
2 *0 29 *0 18 20|0 0 54.4g 109g 1.74g 0 collectDb:255.5% 0 5|0 0|1 28k 588k 21 set1 PRI 08:28:24
正在做什麼樣的更新?他們是增加新的領域還是隻更換現有的領域? – Sai
他們在現有文檔中添加新密鑰 –
通過添加新密鑰,您究竟意味着什麼?你能否詳細說明一下。謝謝 – Sai