怎么把dbgrid中數(shù)據(jù)存儲到表 db模式有什么優(yōu)缺點(diǎn)?
db模式有什么優(yōu)缺點(diǎn)?Mongodb使用數(shù)據(jù)文件預(yù)分配模式來生成數(shù)據(jù)文件。數(shù)據(jù)文件的大小從64M開始,每增加一個文件,大小翻倍,直到2G。之后每次添加數(shù)據(jù)都會產(chǎn)生2G左右的數(shù)據(jù)文件。結(jié)合mongodb
db模式有什么優(yōu)缺點(diǎn)?
Mongodb使用數(shù)據(jù)文件預(yù)分配模式來生成數(shù)據(jù)文件。數(shù)據(jù)文件的大小從64M開始,每增加一個文件,大小翻倍,直到2G。之后每次添加數(shù)據(jù)都會產(chǎn)生2G左右的數(shù)據(jù)文件。結(jié)合mongodb的mmap內(nèi)存模型,將隨機(jī)寫入轉(zhuǎn)化為順序?qū)懭?,一定程度上緩解了磁盤的io壓力。
但在實際操作中,預(yù)分配2G數(shù)據(jù)文件時,如果磁盤io慢,mongodb基本被鎖定,無法響應(yīng)請求。持續(xù)時間由磁盤io的性能決定。這個問題在2.0版本之后可能會有所改善,但在磁盤性能較低的服務(wù)器上仍然存在。
這個問題目前沒有很好的解決辦法,只能建議使用讀寫性能好的服務(wù)器來運(yùn)行mongodb。
當(dāng)數(shù)據(jù)存量大于內(nèi)存大小時,mongodb遇到冷數(shù)據(jù),查詢速度變慢。
Mongodb使用mmap 的內(nèi)存管理模式。如果查詢了所有的熱數(shù)據(jù),就直接在內(nèi)存中查詢。如果遇到冷數(shù)據(jù),需要從磁盤中讀取,部分熱數(shù)據(jù)會從內(nèi)存中卸載。
曾經(jīng)有人說過,mongodb內(nèi)存管理是將固定大小的文件塊加載到內(nèi)存中,即如果冷數(shù)據(jù)在磁盤上,它會根據(jù)請求的數(shù)據(jù)將一定大小的數(shù)據(jù)塊加載到內(nèi)存中,卸載同樣的熱數(shù)據(jù),會帶來一定的io。
因為mongodb使用的是全局鎖,所以當(dāng)一個操作變慢的時候,整個操作隊列都會變慢。這個問題導(dǎo)致mongodb偶爾阻塞,整個庫的性能下降。
在應(yīng)用中需要盡可能避免這個問題。要規(guī)劃好mongodb的數(shù)據(jù)大小,盡量不要讓數(shù)據(jù)量超過內(nèi)存大小。如果超過了內(nèi)存大小,盡量不要請求冷數(shù)據(jù)。
Mongodb全局鎖機(jī)制。
mongodb最大的問題是它的鎖定機(jī)制。在2.2版之前,一個實例只有一個讀寫鎖。無論有多少數(shù)據(jù)庫和數(shù)據(jù)集,當(dāng)一個操作正在進(jìn)行時,其他操作只能等待。2.2版之后,mongodb鎖的粒度降低,改為庫鎖。
MongoDB使用a "讀者-作家 "鎖,可以支持并發(fā),但是有很大的局限性。當(dāng)讀鎖存在時,許多讀操作都可以使用它。但是,當(dāng)存在寫鎖時,單個寫操作將獨(dú)占該鎖,而其他讀和寫操作不能使用共享鎖。例如,假設(shè)一個集合中有10個文檔,即使更新了不同的文檔,也不能在這個集合上并發(fā)執(zhí)行多個更新操作。
刪除數(shù)據(jù)集后不會自動釋放空間。
mongodb刪除集合后,不會釋放磁盤空間,只會使用()。修復(fù)后才能放行。
修復(fù)可能需要很長時間。使用()修復(fù)時,必須停止讀寫,mongodb必須有備用機(jī)。否則,唐 不要隨便用()修復(fù)數(shù)據(jù)庫。記住。
但在修復(fù)過程中,如果mongodb異常掛起,重啟時無法啟動,則需要先修復(fù)。你可以用。/Mongo-repair-dbpath/data/Mongo/如果你把數(shù)據(jù)庫放在一個單獨(dú)的文件夾里并指定dbpath,指向要修復(fù)的數(shù)據(jù)庫就可以了。
7.副本集隱藏了一些問題
a)副本集模式最多支持12臺服務(wù)器,而投票服務(wù)器僅支持7臺服務(wù)器。如果有7臺以上的服務(wù)器,需要將一些服務(wù)器設(shè)置為非投票服務(wù)器。
b)在副本集模式下,如果集服務(wù)器少于兩臺服務(wù)器,自動故障恢復(fù)將不起作用,如果四臺服務(wù)器中的三分之二可以 互相測試,自動故障恢復(fù)也不起作用。一般來說,一個集合中有盡可能多的單個服務(wù)器。
c)。副本集,由于mongodb是按時間運(yùn)行的,如果集合中的某個服務(wù)器提前或滯后,很容易出現(xiàn)從服務(wù)器不斷嘗試更新oplog或同步延遲的問題。甚至?xí)?dǎo)致一些操作失敗,比如drop操作。
8.碎片化模式的一些隱藏問題
1.根據(jù)官方要求,盡可能有三個配置服務(wù)器。如果只有兩臺配置服務(wù)器,shard的自動負(fù)載均衡和自動切片功能不可用。
中API的最近模式,判斷的是set到mongos的距離,而不是set到cli
如何應(yīng)用Delphi編程數(shù)據(jù)庫?
1.放置ADOconnection控件;
2.放置表格控件或查詢控件;
3.放置DataSource控件;
4.放置DBGrid控件;
5.在ADOconnection控件中設(shè)置連接字符串,選擇數(shù)據(jù)表,打開數(shù)據(jù)表;
6.控件2 ~ 4分別指向上一個控件。