1. 程式人生 > 其它 >SQL Server fn_dblog恢復被誤操作刪除的資料

SQL Server fn_dblog恢復被誤操作刪除的資料

MongoDB的使用

1、使用navicat連線

為了方便開發,採用navicat連線。需要注意的是navicat只有新版才能連線mongodb,我這裡用的最新版本v15。沒有安裝最新版navicat的盆友,闊以參照下面連結下載安裝:

https://www.jianshu.com/p/3af7fccc22c7

測試連線:

檢視文件時,有幾個很有用的功能按鈕:

基礎的使用比較簡單,可檢視相關使用教程,比如菜鳥教程:https://www.runoob.com/mongodb/mongodb-tutorial.html

2、注意事項

針對使用中遇到的問題,這裡列出幾點注意事項:

1)索引

a. 合理建立索引

一定要合理建立索引, 有很多人都被宣傳片迷惑,認為mongo的讀取速度本身就應該很快,所以從mysql轉過來後,就連建立索引都忘了,當表(collection) 很大時,不建立索引是非常影響效能的。

比如:db.users.createIndex({open: 1, close: 1}, {background: true})

b.建立索引導致資料阻塞

在前臺建索引時需要佔用一個寫鎖(而且不會臨時放棄),如果集合的資料量很大,建索引通常要花比較長時間,特別容易引起問題。

解決的方法很簡單,MongoDB 提供了兩種建索引的訪問,一種是 background 方式,不需要長時間佔用寫鎖,另一種是非 background 方式,需要長時間佔用鎖。使用 background 方式就可以解決問題。

例如,為超大表 users 建立索引

千萬不要使用:

db.users.createIndex({open: 1, close: 1})

而應該使用:

db.users.createIndex({open: 1, close: 1}, {background: true})

2)只返回想要的列

大表查詢時,只返回你想要的列。特別是單collection欄位資料量比較大時,非常容易引起效能問題。

db.inventory.find( { status: "A" }, { item: 1, status: 1 } )

3)避免使用array

MongoDB 的 Array 欄位是比較獨特的一個特性,它可以在單個 document 裡儲存一些簡單的一對多關係。

但是,我們儘量避免在model裡面使用Array型別的欄位,因為使用了Array,查詢時,不可避免的會使用in操作,in操作無法利用索引,這個在關係型資料庫裡面也是存在的,大表操作一定要避免。

比如:這裡的value就是一個Array型別的欄位

 1 {
 2     "_id": ObjectId("60ae5841e72f0000e3001c74"),
 3     "level": 2,
 4     "pid": "60ae5116e72f0000e3001c51",
 5     "value": [
 6         {
 7             "key": "v1",
 8             "name": "法院名稱",
 9             "value": "法院"
10         },
11         {
12             "key": "v2",
13             "name": "指標名稱/值",
14             "value": "餘額(萬元)"
15         },
16         {
17             "key": "v3",
18             "name": "指標名稱/值",
19             "value": "到賬/發放總額(萬元)"
20         }
21     ],
22     "type": "json",
23     "isDelete": NumberInt("0")
24 }

4)一次返回所有資料

儘量一次返回所有需要的資料,避免GET_MORE,避免遊標操作,當用戶進行查詢迭代時,mongo會首先返回一個數據塊供你迭代,當你迭代的資料超過這個資料塊時,mongoid 發起 GET_MORE 命令移動遊標獲取下一個資料塊,而就是這個移動遊標的操作就非常慢,特別是你返回的列比較多的時候,效能非常低。每次返回的資料塊的大小是由batchSize控制的,可以通過修改它的預設值進行控制。

5)事務

mongodb不支援事務,所以你一定要考慮清楚,權衡利弊。

參考連結:https://www.cnblogs.com/l1pe1/p/7871859.html