MongoDB學習 MongoDB的執行計畫

2021-10-14 09:39:32 字數 1806 閱讀 6550

queryplanner:queryplanner是預設引數,具體執行計畫資訊參考下面的**。

executionstats:executionstats會返回執行計畫的一些統計資訊(有些版本中和allplan***ecution等同)。

allplan***ecution:allplan***ecution用來獲取所有執行計畫,結果引數基本與上文相同。

開啟內建的查詢分析器,記錄讀寫操作效率

db.setprofilinglevel(n,m),n的取值可選0,1,2

0表示不記錄

1表示記錄慢速操作,如果值為1,m必須賦值單位為ms,用於定義慢速查詢時間的閾值

2表示記錄所有的讀寫操作

執行完操作後返回的都是上一次設定的值查詢監控結果,表示降序

db.system.profile.find().sort().limit(3)

分析慢速查詢

應用程式設計不合理、不正確的資料模型、硬體配置問題,缺少索引等

解讀explain結果 確定是否缺少索引

mongodb 是文件型的資料庫,它使用bson 格式儲存資料,比關係型資料庫儲存更方便。

比如之前關係型資料庫中處理使用者、訂單等資料要建立對應的表,還要建立它們之間的關聯關係。

但是bson就不一樣了,我們可以把一條資料和這條資料對應的資料都存入乙個bson物件中,這種形式更簡單,通俗易懂。

mysql是關係型資料庫,資料的關聯性是非常強的,區間訪問是常見的一種情況,底層索引組織資料使用b+樹,b+樹由於資料全部儲存在葉子節點,並且通過指標串在一起,這樣就很容易的進行區間遍歷甚至全部遍歷。

mongodb使用b-樹,所有節點都有data域,只要找到指定索引就可以進行訪問,單次查詢從結構上來看要快於mysql。

b-樹是一種自平衡的搜尋樹,形式很簡單:

b-樹的特點:

多路 非二叉樹

每個節點 既儲存資料 又儲存索引

搜尋時 相當於二分查詢

b+樹是b-樹的變種,b+ 樹的特點:

多路非二叉

只有葉子節點儲存資料

搜尋時 也相當於二分查詢

增加了 相鄰節點指標

從上面我們可以看出最核心的區別主要有倆,乙個是資料的儲存位置,乙個是相鄰節點的指向。就是這倆造成了mongodb和mysql的差別

b+樹相鄰接點的指標可以大大增加區間訪問性,可使用在範圍查詢等,而b-樹每個節點 key 和data 在一起 適合隨機讀寫 ,而區間查詢效率很差。

b+樹更適合外部儲存,也就是磁碟儲存,使用b-結構的話,每次磁碟預讀中的很多資料是用不上的資料。因此,它沒能利用好磁碟預讀的提供的資料。由於節點內無 data 域,每個節點能索引的範圍更大更精確。

注意這個區別相當重要,是基於12的,b-樹每個節點即儲存資料又儲存索引 樹的深度小,所以磁碟io的次數很少,b+樹只有葉子節點儲存,較b樹而言深度大磁碟io多,但是區間訪問比較好。

mongod將MongoDB設定為系統服務自啟

mongod安裝為系統服務開機自啟 配置 1.在安裝的根目錄下 跟bin同級 新建資料夾data,在data資料夾下新建db資料夾用作為資料庫目錄 進入mongodb的bin目錄下開啟cmd輸入 mongod dbpath c program files mongodb win32 x86 64 2...

window server搭建mongodb集群

伺服器3臺 windows server 2016 版本 mongodb server version v4.0.13 mongodb架構 伺服器server 1 server 2 server 3 副本集副本集 副本集埠 replset ip192.168.45.130 192.168.45.13...

MongoDB學習 了解MongoDB

nosql not only sql,支援類似sql的功能,與relational database相輔相成。其效能較高,不使用sql意味著沒有結構化的儲存要求 sql為結構化的查詢語句 沒有約束之後架構更加靈活。nosql資料庫四大家族列儲存 hbase,鍵值 key value 儲存 redis...