国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MongoDB > 正文

提升MongoDB性能的方法

2024-09-07 00:22:42
字體:
來源:轉載
供稿:網友

MongoDB 是高性能數據,但是在使用的過程中,大家偶爾還會碰到一些性能問題。MongoDB和其它關系型數據庫相比,例如 SQL Server 、MySQL 、Oracle 相比來說,相對較新,很多人對其不是很熟悉,所以很多開發、DBA往往是注重功能的實現,而忽視了性能的要求。其實,MongoDB和 SQL Server 、MySQL 、Oracle 一樣,一個 數據庫對象的設計調整、索引的創建、語句的優化,都會對性能產生巨大的影響。

為了充分挖掘MongoDB性能,現簡單總計了以下18條,歡迎大家一起來持續總結完善。

(1)文檔中的_id鍵推薦使用默認值,禁止向_id中保存自定義的值。

解讀: MongoDB文檔中都會有一個“_id”鍵,默認是個ObjectID對象(標識符中包含時間戳、機器ID、進程ID和計數器)。MongoDB在指定_id與不指定_id插入時 速度相差很大,指定_id會減慢插入的速率。

(2)推薦使用短字段名。

解讀:與關系型數據庫不同,MongoDB集合中的每一個文檔都需要存儲字段名,長字段名會需要更多的存儲空間。

(3)MongoDB索引可以提高文檔的查詢、更新、刪除、排序操作,所以結合業務需求,適當創建索引。

(4)每個索引都會占用一些空間,并且導致插入操作的資源消耗,因此,建議每個集合的索引數盡量控制在5個以內。

(5)對于包含多個鍵的查詢,創建包含這些鍵的復合索引是個不錯的解決方案。復合索引的鍵值順序很重要,理解索引最左前綴原則。

解讀:例如在test集合上創建組合索引{a:1,b:1,c:1}。執行以下7個查詢語句:

db.test.find({a:”hello”}) // 1db.test.find({b:”sogo”, a:”hello”}) // 2db.test.find({a:”hello”,b:”sogo”, c:”666”}) // 3db.test.find({c:”666”, a:”hello”}) // 4db.test.find({b:”sogo”, c:”666”}) // 5db.test.find({b:”sogo” }) // 6db.test.find({c:”666”}) // 7

以上查詢語句可能走索引的是1、2、3、4

查詢應包含最左索引字段,以索引創建順序為準,與查詢字段順序無關。

最少索引覆蓋最多查詢。

(6)TTL 索引(time-to-live index,具有生命周期的索引),使用TTL索引可以將超時時間的文檔老化,一個文檔到達老化的程度之后就會被刪除。

解讀:創建TTL的索引必須是日期類型。TTL索引是一種單字段索引,不能是復合索引。TTL刪除文檔后臺線程每60s移除失效文檔。不支持定長集合。

(7)需要在集合中某字段創建索引,但集合中大量的文檔不包含此鍵值時,建議創建稀疏索引。

解讀:索引默認是密集型的,這意味著,即使文檔的索引字段缺失,在索引中也存在著一個對應關系。在稀疏索引中,只有包含了索引鍵值的文檔才會出現。

(8)創建文本索引時字段指定text,而不是1或者-1。每個集合只有一個文本索引,但是它可以為任意多個字段建立索引。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 秀山| 兴文县| 满洲里市| 民乐县| 承德县| 永胜县| 东海县| 冕宁县| 遂昌县| 鹤岗市| 诸暨市| 崇阳县| 滕州市| 迭部县| 老河口市| 澄江县| 新晃| 东台市| 佛教| 门头沟区| 长岭县| 乡宁县| 岳普湖县| 仁怀市| 临沧市| 黑水县| 监利县| 报价| 烟台市| 莆田市| 台南市| 神农架林区| 桦南县| 盐源县| 莆田市| 定边县| 潞城市| 乌拉特中旗| 蕉岭县| 天祝| 达拉特旗|