কম্পিউটার টিউটোরিয়াল

MongoDB-এ পারফরম্যান্স প্রভাবিত না করে অনেক ইনসার্ট/আপডেট করা (insertMany, ensureIndex)


MongoDB-এ বাল্ক ইনসার্ট এবং ইন্ডেক্সিং দিয়ে পারফরম্যান্স অপ্টিমাইজেশন

MongoDB-এ একসাথে অনেক ডকুমেন্ট ইনসার্ট করতে insertMany() ব্যবহার করা সবচেয়ে দ্রুত এবং কার্যকর। আপডেট পারফরম্যান্স বেড়াতে সংশ্লিষ্ট ফিল্ডে ইন্ডেক্স তৈরি করা প্রয়োজন।

১. insertMany() ব্যবহার করে একসাথে একাধিক ডকুমেন্ট ইনসার্ট

> db.demo325.insertMany([
  { _id: 101, Name: "Chris", Age: 23 },
  { _id: 102, Name: "David", Age: 24 },
  { _id: 103, Name: "Bob", Age: 22 }
]);
{ "acknowledged" : true, "insertedIds" : [ 101, 102, 103 ] }

সুবিধা: একক নেটওয়ার্ক রাউন্ড-ট্রিপে হাজার হাজার ডকুমেন্ট ইনসার্ট হয়। প্রতিটি insertOne() কল করার চেয়ে অনেক দ্রুত।

২. ডকুমেন্টগুলো দেখানো

> db.demo325.find().pretty();

আউটপুট:

{ "_id" : 101, "Name" : "Chris", "Age" : 23 }
{ "_id" : 102, "Name" : "David", "Age" : 24 }
{ "_id" : 103, "Name" : "Bob", "Age" : 22 }

৩. ensureIndex() (বা createIndex()) দিয়ে Name ফিল্ডে ইন্ডেক্স তৈরি

> db.demo325.ensureIndex({Name: 1});

আউটপুট:

{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }

ইন্ডেক্সের গুরুত্ব:

  • ইন্ডেক্স ছাড়া find({Name: "David"}) করলে COLLSCAN (ফুল কালেকশন স্ক্যান) হয়, যা ধীর।
  • ইন্ডেক্স থাকলে IXSCAN (ইন্ডেক্স স্ক্যান) হয়, যা খুব দ্রুত।
  • {Name: 1} এসেন্ডিং অর্ডারে ইন্ডেক্স। -1 ডেসেন্ডিং।
  • আপডেট/ডিলিট কোয়েরিও ফিল্টারের ইন্ডেক্স থাকলে দ্রুত হয়।

সেরা প্র্যাকটিস: কোয়েরি প্যাটার্ন অনুযায়ী কম্পাউন্ড ইন্ডেক্স (Compound Index) তৈরি করুন।


  1. MongoDB-তে শুধু একটি ডকুমেন্ট আপডেট করা ডেটা মুছে ফেলা ছাড়া

  2. MongoDB-এ $indexStats ব্যবহার করে إندেক্স ব্যবহার পরিসংখ্যান ট্র্যাক করা

  3. MongoDB-এ রেগেক্স পারফরম্যান্স ইস্যু এড়াতে টেক্সট ইন্ডেক্স ব্যবহার করা

  4. MongoDB-এ bulkWrite() দিয়ে এক কোয়েরিতে একাধিক ডকুমেন্ট আপডেট করা