[英]Why ' in ' is so much faster than ' = ' in SQL Select?
[英]Any detailed and specific reasons for Why MongoDB is much faster than SQL DBs?
好的,關於MongoDB為什么這么快有疑問
我很欣賞這些答案,但是它們很籠統。 是的我知道:
好吧,我寫這個問題只是為了找出答案
"Why MongoDB is so fast"
,您將如何回答? 顯然僅回答: "because MongoDB is noSQL"
是不夠的。 謝謝
首先,讓我們將蘋果與蘋果進行比較: MongoDB的讀寫就像是在RDBMS中沒有主鍵的表上通過主鍵進行的單次讀寫。
因此,讓我們精確地進行基准測試: http : //mysqlha.blogspot.de/2010/09/mysql-versus-mongodb-yet-another-silly.html
事實證明,在完全相同的原始操作的公平比較中,速度差異並不大。 實際上,MySQL稍快一些。 我會說,它們是等效的。
為什么? 因為實際上,在該特定基准測試中,兩個系統都在做類似的事情。 通過主鍵搜索返回單行實際上並沒有那么多工作。 這是一個非常快的操作。 我懷疑跨進程通信開銷是其中很大的一部分。
我的猜測是,MySQL中經過更優化的代碼要比MongoDB的系統開銷少一些(沒有邏輯鎖,可能還有其他一些小東西)。
這得出一個有趣的結論: 您可以將MySQL像文檔數據庫一樣使用,並從中獲得出色的性能。
如果面試官說:“我們不在乎文檔或樣式,我們只需要一個更快的數據庫,您認為我們應該使用MySQL還是MongoDB?”,我該怎么回答?
我建議暫時忽略性能,並查看兩個系統的相對強度。 MongoDB想到了諸如擴展(擴展)和復制之類的事情。 對於MySQL,還有很多功能,例如豐富的查詢,並發模型,更好的工具和成熟度等等。
基本上,您可以以功能換取性能。 願意這樣做嗎? 這是通常無法做出的選擇。 如果您不惜一切代價選擇性能,請考慮在添加其他技術之前先調整MySQL。
當客戶通過主鍵檢索單個行/文檔時,將發生以下情況。 我將注釋兩個系統之間的差異:
對於典型的基於SQL的RDBMS,只有兩個附加步驟。 這就是為什么沒有真正區別的原因。
通常,MySQL和MongoDB在單台計算機上的“持久”寫入性能非常相似。 簡單的鍵/值查找幾乎是相同的……如果您想以這種方式使用MySQL。 顯然,文檔支持可帶來巨大的生產力收益和巨大的性能優勢。
使用自動分片... MongoDB以難以描述的方式更快。 開箱即用,通過適當的設計,您幾乎可以線性擴展,而無需在代碼中構建任何邏輯。
幾乎每個驅動程序都內置了讀/寫拆分功能,大多數由10gen自己贊助或開發。
我之前已經對應用程序進行了擴展,並編寫了讀/寫拆分代碼,用於分片的分布式哈希,重新平衡了連續運行的作業,並將gzip添加到了mysql“ document”存儲中。 啊。
它速度更快,因為它既簡單又專注。 設計時要考慮到所有這些。 優先考慮商品硬件的規模。 RDBMS的優先級完全不同。
默認情況下,mongo不做任何索引; 也沒有交易。 但是,如果將mysql表配置為未編制索引,然后打開自動提交,則不會看到巨大的速度差異。 將位寫入磁盤僅需要一定的時間。
但是,mongo旨在輕松擴展。 使用分片,您可以水平擴展寫操作並獲得更好的性能,而無需使用主-主復制的復雜性。 使用副本集,您可以水平縮放閱讀。 因此,我想說這是系統性能的提高,但是每個查詢不一定更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.