Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Indeksowanie w tle to technika, która umożliwia systemowi bazy danych wykonywanie operacji indeksowania w kolekcji bez blokowania innych zapytań lub aktualizacji. Usługa Azure DocumentDB akceptuje żądanie indeksowania w tle i asynchronicznie wykonuje je w tle.
W przypadku korzystania z mniejszych warstw lub obciążeń z wysokimi operacjami we/wy wstępnie zdefiniuj indeksy na pustych kolekcjach i nie polegaj na indeksowaniu w tle.
Ważne
Utwórz unikatowe indeksy w pustej kolekcji, ponieważ unikatowe indeksy kompilują się na pierwszym planie i blokują odczyty i zapisy. Zdefiniuj indeksy na podstawie predykatów zapytań przed wstawieniem danych, gdy kolekcja jest nadal pusta. Zmniejsza to rywalizację o zasoby w dużych kolekcjach z dużym ruchem odczytu i zapisu.
Monitorowanie tworzenia indeksu
Możemy dowiedzieć się więcej o postępie kompilacji indeksu przy użyciu polecenia currentOp().
db.currentOp("db_name":"<db_name>", "collection_name":"<collection_name>")
-
db_namejest opcjonalnym parametrem. -
collection_namejest opcjonalnym parametrem.
// Output for reviewing build status
{
inprog: [
{
shard: 'defaultShard',
active: true,
type: 'op',
opid: '10000003049:1701252500485346',
op_prefix: Long("10000003049"),
currentOpTime: ISODate("2024-06-24T10:08:20.000Z"),
secs_running: Long("2"),
command: {createIndexes: '' },
op: 'command',
waitingForLock: true
},
{
shard: 'defaultShard',
active: true,
type: 'op',
opid: '10000003050:1701252500499914',
op_prefix: Long("10000003050"),
currentOpTime: ISODate("2024-06-24T10:08:20.000Z"),
secs_running: Long("2"),
command: {
createIndexes: 'BRInventory', },
indexes: [
{
v:2,
key: {vendorItemId: 1, vendorId: 1, itemType: 1},
name: 'compound_idx'
}
],
'$db': 'test'
op: 'command',
waitingForLock: false,
progress: {
blocks_done: Long("12616"),
blocks_done: Long("1276873"),
documents_d: Long("0"),
documents_to: Long("0")
},
msg: 'Building index.Progress 0.0098803875. Waiting on op_prefix: 10000000000.'
}
],
ok: 1
}
Ograniczenia
- Nie można utworzyć unikatowych indeksów w tle. Najlepiej utworzyć je w pustej kolekcji, a następnie załadować dane.
- Indeksowanie w tle jest wykonywane sekwencyjnie w ramach pojedynczej kolekcji. Jednak liczba równoczesnych kompilacji indeksów w różnych kolekcjach jest konfigurowalna (wartość domyślna: 2).