1. MongoDB OpLog
OpLog 를 통해 현재 실행중인 쿼리의 클라이언트 정보, 락의 유형 등을 확인할 수 있다.
2. MongoDB 테스트 버전
유형 | 버전 | 구성 |
mongosh | 2.2.10 | |
mongodb | 7.0.12 | Config : 1개, 포트 20000 Route : 1개, 포트 20001 Shard1 : 1개, 포트 30001 Shard2 : 1개, 포트 40001 |
3. OpLog 확인
3-1. Session 1 에서 인덱스 생성
[direct: mongos] indexDB> db.uniqueIndex.createIndex( { dummy : 1 } )
dummy_1
3-2. Session 2 에서 OpLog 조회
위의 인덱스가 수행되는 동안 OpLog 를 조회하면 아래와 같은 정보가 출력된다.
[direct: mongos] test> db.currentOp()
{
shard: 'rs1',
type: 'op',
host: 'ip-172-31-7-169.ap-northeast-2.compute.internal:30001',
desc: 'IndexBuildsCoordinatorMongod-7',
active: true,
currentOpTime: '2024-08-21T09:11:39.672+00:00',
opid: 'rs1:29291449',
secs_running: Long('0'),
microsecs_running: Long('133039'),
op: 'command',
ns: 'indexDB.uniqueIndex',
redacted: false,
command: {
createIndexes: 'uniqueIndex',
indexes: [ { v: 2, key: { dummy: 1 }, name: 'dummy_1' } ],
readConcern: { level: 'local', provenance: 'implicitDefault' },
writeConcern: { w: 'majority', wtimeout: 0, provenance: 'implicitDefault' },
shardVersion: {
e: ObjectId('000000000000000000000000'),
t: Timestamp({ t: 0, i: 0 }),
v: Timestamp({ t: 0, i: 0 })
},
databaseVersion: {
uuid: UUID('4bdeceab-3d12-4c6d-b79e-94f8a094e3f0'),
timestamp: Timestamp({ t: 1722313944, i: 1 }),
lastMod: 1
},
lsid: {
id: UUID('de0d01b9-df88-488a-9d82-417268031a5d'),
uid: Binary.createFromBase64('47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', 0)
},
'$clusterTime': {
clusterTime: Timestamp({ t: 1724231498, i: 2 }),
signature: {
hash: Binary.createFromBase64('AAAAAAAAAAAAAAAAAAAAAAAAAAA=', 0),
keyId: Long('0')
}
},
'$configTime': Timestamp({ t: 1724231498, i: 2 }),
'$topologyTime': Timestamp({ t: 1719896932, i: 2 }),
'$client': {
application: { name: 'mongosh 2.2.10' },
driver: { name: 'nodejs|mongosh', version: '6.7.0|2.2.10' },
platform: 'Node.js v20.12.2, LE',
os: {
name: 'linux',
architecture: 'x64',
version: '3.10.0-327.22.2.el7.x86_64',
type: 'Linux'
},
mongos: {
host: 'ip-172-31-7-169.ap-northeast-2.compute.internal:20001',
client: '127.0.0.1:48032',
version: '7.0.12'
}
},
mayBypassWriteBlocking: false,
'$db': 'indexDB'
},
queryFramework: 'classic',
msg: 'Index Build: draining writes received during build',
numYields: 0,
locks: {},
waitingForLock: false,
lockStats: {
FeatureCompatibilityVersion: { acquireCount: { r: Long('3'), w: Long('6') } },
ReplicationStateTransition: { acquireCount: { w: Long('9') } },
Global: { acquireCount: { r: Long('3'), w: Long('6') } },
Database: { acquireCount: { r: Long('2'), w: Long('6') } },
Collection: {
acquireCount: { r: Long('1'), w: Long('4'), R: Long('1'), W: Long('2') }
},
Mutex: { acquireCount: { r: Long('15') } }
},
waitingForFlowControl: false,
flowControlStats: { acquireCount: Long('4') }
},
numYields : Yield 가 발생한 횟수
locks : 잠금유형
lockStats : r, w, R, W 잠금이 얼마나 획득되었는지
'Database > MongoDB 실습' 카테고리의 다른 글
[MongoDB] Yield 잠금 테스트 (0) | 2024.08.21 |
---|---|
[MongoDB] 글로벌 잠금 설정과 해제방법 (0) | 2024.08.21 |
[MongoDB] TTL 인덱스 생성과 도큐먼트 적재 (0) | 2024.08.13 |
[MongoDB] Partial 인덱스 생성과 주의사항 (0) | 2024.08.12 |
[MongoDB] 유니크 인덱스 생성 방법 (0) | 2024.08.12 |