Indexe
Die Größe wurde mit db.getCollection(<col_name>).stats({}) ermittelt.
- Collection: history
- _id - size: 12.559 GB, 2021-07-09
- shop_id - size: 8.197 GB, 2021-07-09
- prod_id - size: 9.515 GB, 2021-07-09
- picalike_id - size: 9.900 GB, 2021-07-09
- picalike_id, session - size: 13.183 GB, 2021-07-09
- shop_id, session - size: 7.283 GB, 2021-07-09
- Collection: meta_db_collection
- _id - size: 7.283 GB, 2021-07-09
- picalike_id_1 - size: 1.006 GB, 2021-07-09
- prod_id_1 - size: 479 MB, 2021-07-09
- shop_id_1 - size: 245 MB, 2021-07-09
- shop_id_1_picalike_id_1 - size: 1.034 GB, 2021-07-09
- prod_id_1_shop_id_1 - size: 1.035 GB, 2021-07-09
- shop_id_1_last_visit_1 - size: 966 MB, 2021-07-09
- shop_id_1_gender_status_1 - size: 129 MB, 2021-07-09
- shop_id_1_metadata_gender_1 - size: 178 MB, 2021-07-09
- shop_id_1_metadata_brand_text - size: 325 MB, 2021-07-09
- shop_id_1_metadata_gender_1_last_visit_minus1 - size: 473 MB, 2021-07-09
Ticket
https://trello.com/c/99zDptSw/1509-mongodb-index-strategy
Das Problem taucht zB immer auf, wenn bestimmte osa queries schneller gemacht werden sollen. Kann ich für Feld x noch einen index auf Collection Y anlegen? oder einen compound index über mehrere Felder?
Mir persönlich ist oft nicht klar was die direkten Kosten eines Index sind. klar ist die Fautregel, dass nur indexe angelegt werden sollten, die für (frequente) queries verwendet werden. Was sind aber andere Dinge auf die es zu achten gilt? verlangsamt eine große Menge an indexen den Import neuer Dokumente? Gibt es Speicherbedenken? Laut der MongoDB Doku https://docs.mongodb.com/manual/applications/indexes/ gilt zB “Ensure Indexes Fit in RAM”. Wenn ich mir mittels db.getCollection('meta_db_collection').totalIndexSize() die metadb anschaue hat der Index dort eine größe von 4.5GB - gut. aber auf der gleichen maschine lebt auch die history collection mir einer indexgröße von 41GB, was deutlich zu viel erscheint. Lange Rede kurzer Sinn: wir brauchen Maßstäbe nach denen entschieden werden kann, ob bestimmte indexe existieren sollten oder nicht.