Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

MongoDB ติดตามจำนวนครั้งที่ดัชนีถูกใช้งานด้วย $indexStats

ใช่ MongoDB สามารถติดตามได้ว่าแต่ละดัชนี (index) ถูกใช้งานในคิวรีกี่ครั้ง โดยใช้ขั้นตอน $indexStats ใน Aggregation Pipeline มาดูตัวอย่าง

สร้างดัชนีและข้อมูลตัวอย่าง

> db.demo508.createIndex({"FirstName": 1});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }

> db.demo508.insertOne({"FirstName": "John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e883818987b6e0e9d18f578") }
> db.demo508.insertOne({"FirstName": "Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e88381b987b6e0e9d18f579") }
> db.demo508.insertOne({"FirstName": "David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e88381f987b6e0e9d18f57a") }

แสดงข้อมูล:

> db.demo508.find();
{ "_id" : ObjectId("5e883818987b6e0e9d18f578"), "FirstName" : "John" }
{ "_id" : ObjectId("5e88381b987b6e0e9d18f579"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e88381f987b6e0e9d18f57a"), "FirstName" : "David" }

คิวรีตรวจสอบสถิติการใช้งานดัชนี

> db.demo508.aggregate([{ $indexStats: { } }]).pretty();

ผลลัพธ์:

{
  "name" : "_id_",
  "key" : { "_id" : 1 },
  "host" : "DESKTOP-QN2RB3H:27017",
  "accesses" : {
    "ops" : NumberLong(0),
    "since" : ISODate("2020-04-04T07:32:27.394Z")
  }
}
{
  "name" : "FirstName_1",
  "key" : { "FirstName" : 1 },
  "host" : "DESKTOP-QN2RB3H:27017",
  "accesses" : {
    "ops" : NumberLong(0),
    "since" : ISODate("2020-04-04T07:32:27.527Z")
  }
}

การอ่านผลลัพธ์

  • name: ชื่อดัชนี (_id_ เป็นดัชนี default, FirstName_1 เป็นดัชนีที่สร้างขึ้น)
  • key: ฟิลด์และทิศทางของดัชนี
  • accesses.ops: จำนวนครั้งที่ดัชนีถูกใช้งาน (0 = ยังไม่ถูกใช้)
  • accesses.since: เวลาที่เริ่มนับสถิติ

ประโยชน์: ช่วยวิเคราะห์ว่าดัชนีไหนใช้งานจริง ดัชนีไหนไม่เคยถูกใช้ (อาจลบได้เพื่อประหยัดพื้นที่และเพิ่มประสิทธิภาพการเขียน)