欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

db模式有什么優缺點

方一強2年前37瀏覽0評論

db模式有什么優缺點?

mongodb采用數據文件預分配模式來生成數據文件,數據文件的大小從64M開始,每增加一個文件,大小翻倍,直到2G,以后每次增加數據就會生成2G左右的數據文件,結合mongodb的mmap內存模型,對于寫數據文件,將隨機寫轉換為順序寫,一定程度上緩解了磁盤的io壓力。

但在實際使用中,遇到了在預分配2G的數據文件時,如果磁盤io較慢,則mongodb基本鎖死,無法響應請求的情況。持續時間則根據磁盤io的性能來確定。這個問題在2.0之后版本可能會有些改善,但在磁盤性能低的服務器上,該問題依舊存在.

這個問題目前沒有太好的解決方案,只能建議使用讀寫性能比較好的服務器來跑mongodb。

在數據存量大于內存大小時,mongodb遇到冷數據查詢速度變慢。

mongodb使用mmap的內存管理模式,如果查詢的都是熱數據,那么會在內存中直接查詢,如果遇到冷數據,就需要從磁盤讀取,并將一部分熱數據從內存卸載掉.

有人曾經說mongodb內存管理是加載固定大小的文件塊到內存,即如果冷數據在磁盤上,他會根據請求的數據,加載一定大小的數據塊到內存,并卸載掉同樣的熱數據,這個操作本身會帶來一定io.

因為mongodb使用的是全局鎖,在某個操作緩慢時,整個操作隊列會全部變慢。這個問題造成了mongodb會出現偶發性堵塞問題,連帶整個庫的性能下降。

該問題在應用需要盡量避免出現,需要將mongodb的數據大小規劃好,盡量不要使數據量超過內存的大小,如果超過內存大小后,盡量不要去請求冷數據。

Mongodb全局鎖機制。

mongodb最大的問題或者可以說是它的鎖機制,在2.2版本之前,一個實例只有一個讀寫鎖,不管有多少數據庫和數據集合,當一個操作進行時其他操作只能等待,在2.2版本后,mongodb鎖降低了粒度,改為按庫鎖。

MongoDB 使用的是“readers-writer”鎖, 可以支持并發但有很大的局限性,當一個讀鎖存在,許多讀操作可以使用這把鎖,然而, 當一個寫鎖的存在,一個單一的寫操作會exclusively 持有該鎖,同時其它讀,寫操作不能使用共享這個鎖;舉個例子,假設一個集合里有 10 個文檔,多個 update 操作不能并發在這個集合上,即使是更新不同的文檔。

刪除數據集合后空間不會自動釋放

mongodb刪除集合后磁盤空間不釋放,只有用db.repairDatabase()去修復才能釋放。

修復可能要花費很長的時間,在使用db.repairDatabase()去修復時一定要停掉讀寫,并且mongodb要有備機才可以,不然千萬不要隨便使用db.repairDatabase()來修復數據庫,切記。

但是在修復的過程中如果出現了非正常的mongodb的掛掉,再次啟動時啟動不了的,需要先修復才可以,可以利用./mongod --repair --dbpath=/data/mongo/ 如果你是把數據庫單獨的放在一個文件夾中指定dbpath時就指向要修復的數據庫就可以。

7. replica set一些隱含問題

a) replica set模式最多支持12臺服務器,而有投票權的服務器只支持7臺,如果超過7臺服務器,需設置部分服務器為無投票權服務器

b) replica set模式中,一個set服務器如果小于2臺服務器,則自動故障恢復不會起作用,如果4臺服務器出現2/2互相ping不通的情況,同樣不會自動故障恢復。一般來說,一個set中盡量是有單數服務器。

c). replica set中,因為mongodb是按照時間進行操作,如果set中某個服務器時間超前或者延遲,很容易出現secondaries不斷嘗試更新oplog或者同步延遲的問題。甚至造成某些操作失敗,如drop操作。

8. 分片模式的一些隱含問題

1. config server盡量按照官方的要求,有3個configserver,如果只有2個configserver,則shard的自動負載均衡和自動切片功能不可用。

2. api中的nearest模式在shard中,判斷的是set到mongos的距離而非set到client的距離,在切片模式下,盡量不要使用nearest模式,可能會造成一些請求延遲增加的問題。

優點

l 文檔結構的存儲方式,能夠更便捷的獲取數據

l 內置GridFS,支持大容量的存儲

l 內置Sharding,分片簡單

l 海量數據下,性能優越

l 支持自動故障恢復(復制集)

mongodb是一個介于nosql數據庫和mysql數據庫之間的一個數據存儲系統,它沒有嚴格的數據格式,但同時支持復雜查詢,而且自帶sharding模式和Replica Set模式,支持分片模式,復制模式,自動故障處理,自動故障轉移,自動擴容,全內容索引,動態查詢等功能。擴展性和功能都比較強大。

mongodb在數據查詢方面,支持類sql查詢,可以一個key多value內容,可以組合多個value內容來查詢,支持索引,支持聯合索引,支持復雜查詢 ,支持排序,基本上除了join和事務類型的操作外,mongodb支持所有mysql支持的查詢,甚至某個客戶端api支持直接使用sql語句查詢mongodb。

mongodb的sharding功能目前日漸完善,支持自定義范圍分片,hash自動分片等,分片自動擴容,shard之間自動負載均衡等功能。實際使用中功能還不錯。