ক্লাউড এসকিউএল-এর জন্য কোয়েরি ইনসাইটের ভূমিকা

১. শুরু করার আগে

ক্লাউড এসকিউএল-এর জন্য কোয়েরি ইনসাইটস আপনাকে ক্লাউড এসকিউএল ডাটাবেসের জন্য কোয়েরি পারফরম্যান্স সমস্যা সনাক্ত করতে, নির্ণয় করতে এবং প্রতিরোধ করতে সাহায্য করে। এটি স্ব-পরিষেবা, স্বজ্ঞাত পর্যবেক্ষণ এবং ডায়াগনস্টিক তথ্য প্রদান করে যা সনাক্তকরণের বাইরেও যায় এবং আপনাকে পারফরম্যান্স সমস্যার মূল কারণ সনাক্ত করতে সহায়তা করে।

এই কোডল্যাবে, আপনি শিখবেন কিভাবে PostgreSQL ইনস্ট্যান্সের জন্য একটি ক্লাউড SQL সেট আপ করতে হয়, ক্লাউড SQL ইনস্ট্যান্সকে ব্যাকএন্ড স্টোরেজ হিসেবে ব্যবহার করার জন্য একটি Node.js অ্যাপ স্থাপন করতে হয় এবং তারপর কোয়েরি দেখতে এবং নিরীক্ষণ করতে কোয়েরি ইনসাইট ব্যবহার করতে হয়।

পূর্বশর্ত

  • Node.js প্রোগ্রামিং ভাষা এবং সরঞ্জামগুলির সাথে প্রাথমিক পরিচিতি

তুমি কি করবে

  • Node.js অ্যাপে ক্লাউড SQL ব্যবহার করুন।
  • Node.js অ্যাপে SQL কমেন্টার সক্ষম করুন।
  • কোয়েরি পারফর্ম্যান্স নিরীক্ষণ এবং তদন্ত করতে ক্লাউড SQL-এর জন্য কোয়েরি ইনসাইট ব্যবহার করুন।

তোমার যা লাগবে

  • একটি Google ক্লাউড অ্যাকাউন্ট যেখানে আপনার API সক্ষম করার এবং পরিষেবা তৈরি করার অনুমতি রয়েছে

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন অথবা বিদ্যমান একটি পুনরায় ব্যবহার করুন। (যদি আপনার ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)

আপনি যে প্রকল্পটি ব্যবহার করছেন তার প্রকল্প আইডি মনে রাখবেন। এই কোডল্যাবে পরে এটিকে PROJECT-ID হিসাবে উল্লেখ করা হবে।

  1. এরপর, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে।

এই কোডল্যাবটি চালাতে খুব বেশি খরচ হবে না, এমনকি যদি কিছু হয়ও। "পরিষ্কার করুন এবং আরও জানুন" বিভাগে থাকা যেকোনো নির্দেশাবলী অনুসরণ করতে ভুলবেন না, যা আপনাকে পরামর্শ দেয় যে কীভাবে রিসোর্সগুলি বন্ধ করতে হবে যাতে এই টিউটোরিয়ালের বাইরে আপনাকে বিলিংয়ের সম্মুখীন না হতে হয়। গুগল ক্লাউডের নতুন ব্যবহারকারীরা $300USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন এ ক্লিক করুন।

ক্লাউড শেল সক্রিয় করুন

যদি আপনি আগে কখনও ক্লাউড শেল শুরু না করে থাকেন, তাহলে আপনাকে একটি মধ্যবর্তী স্ক্রিন (ভাঁজের নীচে) দেখানো হবে যেখানে এটি কী তা বর্ণনা করা হবে। যদি তাই হয়, তাহলে Continue এ ক্লিক করুন (এবং আপনি এটি আর কখনও দেখতে পাবেন না)। এই এককালীন স্ক্রিনটি কেমন দেখাবে:

ক্লাউড শেল ডায়ালগ উইন্ডো

ক্লাউড শেলের সাথে সংযোগ স্থাপন এবং সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে।

ক্লাউড শেল টার্মিনাল

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সকল ডেভেলপমেন্ট টুল রয়েছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি অফার করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে।

  1. আপনি সঠিক প্রকল্পটি ব্যবহার করছেন কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণিত এবং প্রকল্পটি ইতিমধ্যেই আপনার প্রকল্প আইডিতে সেট করা আছে।

আপনি সঠিক প্রকল্পটি ব্যবহার করছেন কিনা তা নিশ্চিত করতে নিম্নলিখিত কমান্ডটি চালান।

gcloud config list project

ক্লাউড শেল খোলার সময় আপনি যে প্রকল্পটি নির্বাচন করেছিলেন তার থেকে যদি আপনি ভিন্ন কোনও প্রকল্প ব্যবহার করতে চান, তাহলে আপনি নিম্নলিখিতটি চালিয়ে একটি নতুন প্রকল্প সেট করতে পারেন:

gcloud config set project <PROJECT-ID>;

৩. কোয়েরি ইনসাইটস সক্ষম করে PostgreSQL ইনস্ট্যান্সের জন্য একটি ক্লাউড SQL সেট আপ করুন

  1. ক্লাউড শেল চালু হওয়ার পর, আপনি কমান্ড লাইন ব্যবহার করে my-instance নামে একটি নতুন ক্লাউড SQL ইনস্ট্যান্স তৈরি করতে পারেন, যেখানে Query Insights সক্ষম থাকবে:
gcloud sql instances create my-instance --tier db-f1-micro --database-version=POSTGRES_12 --region=us-central --root-password=<PASSWORD> --insights-config-query-insights-enabled --insights-config-record-application-tags --insights-config-record-client-address

এখানে পতাকাগুলির একটি সংক্ষিপ্ত ব্যাখ্যা এবং তাদের অর্থ কী:

  • --tier db-f1-micro ফ্ল্যাগটি ন্যূনতম রিসোর্স সহ একটি মেশিন টাইপ নির্দিষ্ট করছে, যেহেতু এটি ডেভেলপমেন্টের উদ্দেশ্যে, এবং কোডল্যাবের জন্য আপনার খুব বেশি রিসোর্সের প্রয়োজন নেই। আপনি এখানে টিয়ার সম্পর্কে আরও জানতে পারেন।
  • --database-version=POSTGRES_12 ফ্ল্যাগটি এমন একটি ইনস্ট্যান্স তৈরি করে যা PostgreSQL সংস্করণ 12 হবে।
  • --region=us-central পতাকাটি সেই অঞ্চলটি নির্দিষ্ট করে যেখানে ইনস্ট্যান্সটি তৈরি করা হবে।
  • --root-password=<PASSWORD> ফ্ল্যাগ আপনাকে রুট postgres ব্যবহারকারীর জন্য পাসওয়ার্ড নির্দিষ্ট করতে দেয়। <PASSWORD> এর পরিবর্তে আপনার পছন্দের পাসওয়ার্ড ব্যবহার করতে ভুলবেন না।
  • --insights-config-query-insights-enabled ফ্ল্যাগটি আপনার ইনস্ট্যান্সে কোয়েরি ইনসাইট সক্ষম করে।
  • --insights-config-record-application-tags ফ্ল্যাগ অ্যাপ্লিকেশন ট্যাগ রেকর্ড করার অনুমতি দেয়। আপনি পরবর্তী বিভাগগুলিতে অ্যাপ্লিকেশন ট্যাগ সম্পর্কে আরও জানতে পারবেন।
  • --insights-config-record-client-address ফ্ল্যাগ ক্লায়েন্টের IP ঠিকানাগুলিকে Query Insights দ্বারা রেকর্ড করার অনুমতি দেয়।

আপনার প্রকল্পের জন্য আপনাকে sqladmin.googleapis.com API সক্রিয় করতে বলা হতে পারে। যদি আপনাকে অনুরোধ করা হয়, তাহলে API সক্রিয় করতে y নির্বাচন করুন।

ইনস্ট্যান্স তৈরি করতে কয়েক মিনিট সময় লাগবে। এই অপারেশনটি সম্পন্ন হলে, আপনার ইনস্ট্যান্স ব্যবহারের জন্য প্রস্তুত হবে।

  1. এখন একটি ডাটাবেস তৈরি করুন যা আপনি নমুনা অ্যাপের জন্য ব্যবহার করবেন:
gcloud sql databases create votesdb --instance my-instance

আপনি ক্লাউড কনসোলের মাধ্যমেও ইনস্ট্যান্সটি অ্যাক্সেস এবং কনফিগার করতে পারেন।

  1. নিম্নলিখিত কমান্ডটি চালিয়ে PROJECT-ID:ZONE-ID:INSTANCE-ID ফর্ম্যাটে ইনস্ট্যান্স সংযোগের নামটি পান। আপনি পরে আপনার Node.js অ্যাপটি কনফিগার করার সময় এটি ব্যবহার করবেন।
gcloud sql instances describe my-instance | grep connectionName

৪. অ্যাপটি ব্যবহার করার জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

আপনার GCP প্রোজেক্টের মধ্যে বিভিন্ন পরিষেবা ব্যবহারের অনুমতি প্রদানের জন্য পরিষেবা অ্যাকাউন্ট ব্যবহার করা হয়। এই কোডল্যাবের জন্য, আপনার ক্লাউড SQL ইনস্ট্যান্সের সাথে সংযোগ করার জন্য ক্লাউড SQL প্রক্সি অনুমতি প্রদানের জন্য আপনার একটি অ্যাকাউন্ট প্রয়োজন।

কনসোলে একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

  1. IAM পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যান এবং ক্লিক করুন -PCvKR3aQ2zKaUcml8w9lW4JNlmYtN5-r2--mC6kMUp6HOXW8wT1wUvLoYEPU-aA-oGskT3XkAqfNwRAKkZkllwTe6ugdrUVFwaeKT0M9Y1RwHA8JPZeGmCWYBfr8d9TSycNMIRSLw পৃষ্ঠার উপরে বোতাম।
  2. আপনার পরিষেবা অ্যাকাউন্টকে একটি অনন্য নাম এবং আইডি দিন এবং তৈরি করুন এ ক্লিক করুন।
  3. পরবর্তী পৃষ্ঠায়, Select a role এর ড্রপ-ডাউনে ক্লিক করুন। "Cloud SQL" ফিল্টার করুন এবং Cloud SQL Client role নির্বাচন করুন। CONTINUE এ ক্লিক করুন এবং তারপর DONE এ ক্লিক করুন।
  4. সার্ভিস অ্যাকাউন্ট তৈরি হয়ে গেলে, আপনার নতুন সার্ভিস অ্যাকাউন্টের জন্য Actions এর অধীনে তিনটি বিন্দুতে ক্লিক করুন এবং Manage keys নির্বাচন করুন। পরবর্তী পৃষ্ঠায়, ADD KEY নির্বাচন করুন এবং তারপর Create new key নির্বাচন করুন । JSON নির্বাচন করা হবে; সেই ডিফল্টটি রাখুন, এবং CREATE এ ক্লিক করুন। এটি একটি .json private key ফাইল ডাউনলোড করবে। CLOSE এ ক্লিক করুন।
  5. ক্লাউড শেল-এ, "আরও" মেনুতে তিনটি বিন্দুতে ক্লিক করুন এবং "আপলোড ফাইল" নির্বাচন করুন। আপনার স্থানীয় মেশিনে ডাউনলোড করা .json ফাইলটি ব্রাউজ করুন এবং এটি নির্বাচন করুন। এটি ক্লাউড শেলের আপনার হোম ডিরেক্টরিতে .json ফাইলটি আপলোড করবে।

৫. ক্লাউড এসকিউএল প্রক্সি ইনস্টল এবং চালু করুন

অ্যাপ্লিকেশন এবং ডাটাবেস ইনস্ট্যান্সের মধ্যে যোগাযোগের জন্য আপনি ক্লাউড এসকিউএল প্রক্সি ব্যবহার করবেন।

  1. ক্লাউড এসকিউএল প্রক্সি ডাউনলোড করুন। ক্লাউড শেলে, আপনি এটি চালাতে পারেন:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy && chmod +x cloud_sql_proxy
  1. ক্লাউড SQL ইনস্ট্যান্স ওভারভিউ পৃষ্ঠা থেকে কপি করা ইনস্ট্যান্স সংযোগের নাম দিয়ে <INSTANCE_CONNECTION_NAME> প্রতিস্থাপন করার পরে নিম্নরূপ প্রক্সি চালান।
./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 &

যদি এটি সফল হয়, তাহলে আপনি কয়েকটি লাইনের আউটপুট দেখতে পাবেন, যার শেষে " Ready for new connections " বার্তাটি থাকবে।

৬. অ্যাপটি স্থানীয়ভাবে ক্লোন করুন এবং পরীক্ষা করুন

  1. নমুনা অ্যাপ্লিকেশনের জন্য রেপো ক্লোন করুন এবং অ্যাপটি চালানোর জন্য প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করুন।
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples/

cd nodejs-docs-samples/cloud-sql/postgres/knex

npm install
  1. নিম্নলিখিত পরিবেশ ভেরিয়েবলগুলি সেট করুন:
export INSTANCE_CONNECTION_NAME='<PROJECT-ID>:<ZONE-ID>:<INSTANCE-ID>'
export DB_HOST='127.0.0.1:5432'
export DB_USER='postgres'
export DB_PASS='<PASSWORD>'
export DB_NAME='votesdb'
  1. নমুনা অ্যাপটি শুরু করুন।
npm start
  1. ওয়েব প্রিভিউতে ক্লিক করুন ওয়েব প্রিভিউ আইকন ক্লাউড শেল-এ, তারপর পোর্ট 8080-এ প্রিভিউ নির্বাচন করুন।

পোর্ট 8080 মেনু আইটেমের প্রিভিউ

আপনার ব্রাউজারে এখানে দেখানো ট্যাব বনাম স্পেসেস ভোটিং অ্যাপটি দেখতে পাবেন:

ট্যাব বনাম স্পেসেস ভোটিং অ্যাপের স্ক্রিনশট

  1. কিছু ভোট দিতে এবং ডাটাবেসে কিছু তথ্য সংরক্ষণ করতে বোতামগুলিতে ক্লিক করুন।

৭. সকল ভোট দেখার জন্য একটি পৃষ্ঠা যোগ করুন

যেহেতু এই নমুনা অ্যাপ্লিকেশনটি খুবই সহজ, তাই আপনি একটি অতিরিক্ত পৃষ্ঠা যুক্ত করবেন যা সমস্ত ভোট প্রদর্শন করবে। এটি করার প্রধান কারণ হল পরবর্তীতে কোয়েরি ইনসাইট ব্যবহার করার সময় আপনার কাছে আরও ডেটা দেখার জন্য।

  1. নমুনা অ্যাপটি বন্ধ করতে আপনার ক্লাউড শেলে Ctrl+c লিখুন।
  2. ক্লাউড শেলে, ক্লিক করুন সম্পাদক বোতাম খুলুন ক্লাউড শেল এডিটর চালু করার জন্য বোতাম।
  3. ফাইল এক্সপ্লোরারে, nodejs-docs-samples/cloud-sql/postgres/knex/server.js খুঁজুন এবং এডিটরে server.js ফাইলটি লোড করতে এটিতে ক্লিক করুন।

getVotes ফাংশনটি যেখানে সংজ্ঞায়িত করা হয়েছে তার পরে নিম্নলিখিত কোডটি যুক্ত করুন:

/**
 * Retrieve all vote records from the database.
 *
 * @param {object} pool The Knex connection object.
 * @returns {Promise}
 */
const getAllVotes = async pool => {
  return await pool
    .select('candidate', 'time_cast')
    .from('votes')
    .orderBy('time_cast', 'desc');
};
  1. '/getAllVotes' রুটের জন্য নিচের কোডটি যোগ করুন যেখানে অন্যান্য রুটগুলি সংজ্ঞায়িত করা হয়েছে:
app.get('/getAllVotes', async (req, res) => {
  pool = pool || createPool();
  try {
    // Query all votes from the database.
    const votes = await getAllVotes(pool);

    res.render('allvotes.pug', {
      votes: votes,
    });
  } catch (err) {
    console.error(err);
    res
      .status(500)
      .send('Unable to load page; see logs for more details.')
      .end();
  }
});
  1. nodejs-docs-samples/cloud-sql/postgres/knex/views ডিরেক্টরিতে allvotes.pug নামে একটি নতুন ফাইল তৈরি করুন। নিম্নলিখিত কোডটি পেস্ট করুন:
doctype html
html(lang="en")
  head
    title Tabs VS Spaces

    link(rel="stylesheet", href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css")
    link(rel="stylesheet", href="https://fonts.googleapis.com/icon?family=Material+Icons")
    script(src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js")
  body

    nav(class="red lighten-1")
      div(class="nav-wrapper")
        a(href="#" class="brand-logo center") Tabs VS Spaces

    div(class="section")

      h4(class="header center") Recent Votes
      ul(class="container collection center")
        each vote in votes
          li(class="collection-item avatar")
            if vote.candidate.trim() === 'TABS'
              i(class="material-icons circle green") keyboard_tab
            else
              i(class="material-icons circle blue") space_bar
            span(class="title") A vote for <b>#{vote.candidate}</b>
            p was cast at #{vote.time_cast}.
  1. ক্লিক করুন টার্মিনাল বোতাম খুলুন ক্লাউড শেলে ফিরে যেতে এবং চালানোর জন্য বোতাম:
npm start
  1. ওয়েব প্রিভিউ থেকে অ্যাপটি খুলুন যাতে নিশ্চিত হন যে এটি কাজ করছে। আপনার যোগ করা নতুন পৃষ্ঠাটি দেখতে ব্রাউজারে URL-এ /getAllVotes যোগ করুন।

৮. অ্যাপে SQL কমেন্টার সক্ষম করুন

এখন আপনি SQL Commenter ইনস্টল এবং সক্ষম করবেন, এটি একটি ওপেন-সোর্স লাইব্রেরি যা ORM গুলিকে কার্যকর করার আগে মন্তব্য সহ SQL স্টেটমেন্টগুলিকে উন্নত করতে সক্ষম করে। SQLcommenter বেশ কয়েকটি ORM এবং ফ্রেমওয়ার্ক সমর্থন করে, যার মধ্যে নমুনা অ্যাপটি যেটি ব্যবহার করে তাও রয়েছে: Knex.js। Query Insights এই মন্তব্যগুলিতে থাকা তথ্য ব্যবহার করে ডাটাবেসের কর্মক্ষমতা সম্পর্কে একটি অ্যাপ্লিকেশন-কেন্দ্রিক দৃষ্টিভঙ্গি দেয় এবং কোন অ্যাপ্লিকেশন কোড সমস্যা সৃষ্টি করছে তা সনাক্ত করে। কর্মক্ষমতা ওভারহেড ছোট হবে বলে আশা করা হচ্ছে। Query Insights ডকুমেন্টেশন দেখুন।

  1. নমুনা অ্যাপটি বন্ধ করতে আপনার ক্লাউড শেলে Ctrl+c লিখুন।
  2. SQLcommenter এর প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:
  npm install @google-cloud/sqlcommenter-knex @opencensus/nodejs @opencensus/propagation-tracecontext @opentelemetry/api @opentelemetry/core --save
  1. ক্লাউড শেলে, ক্লিক করুন সম্পাদক বোতাম খুলুন ক্লাউড শেল এডিটর চালু করার জন্য বোতাম।
  2. ফাইল এক্সপ্লোরারে, nodejs-docs-samples/cloud-sql/postgres/knex/server.js খুঁজুন এবং এডিটরে server.js ফাইলটি লোড করতে এটিতে ক্লিক করুন।
  3. ফাইলটিতে এই কোডটি খুঁজুন:
const process = require('process');

এর নিচে, নিম্নলিখিত কোডটি যোগ করুন:

const {wrapMainKnexAsMiddleware} = require('@google-cloud/sqlcommenter-knex');
  1. ফাইলটিতে এই কোডটি খুঁজুন:
// Set Content-Type for all responses for these routes.
app.use((req, res, next) => {
  res.set('Content-Type', 'text/html');
  next();
});

এর নিচে, নিম্নলিখিত কোডটি যোগ করুন:

app.use(wrapMainKnexAsMiddleware(Knex, {
    traceparent: true,
    tracestate: true,
    route: true,
    db_driver: true
}));

এটি হয়ে গেলে, আপনার কোডটি এরকম কিছু দেখাবে:

...
// Require process, so we can mock environment variables.
const process = require('process');

const {wrapMainKnexAsMiddleware} = require('@google-cloud/sqlcommenter-knex');
const express = require('express');
const Knex = require('knex');
const fs = require('fs');

const app = express();
app.set('view engine', 'pug');
app.enable('trust proxy');

// Automatically parse request body as form data.
app.use(express.urlencoded({extended: false}));
// This middleware is available in Express v4.16.0 onwards
app.use(express.json());

// Set Content-Type for all responses for these routes.
app.use((req, res, next) => {
  res.set('Content-Type', 'text/html');
  next();
});

app.use(wrapMainKnexAsMiddleware(Knex, {
    traceparent: true,
    tracestate: true,
    route: true,
    db_driver: true
}));
...
  1. ক্লিক করুন টার্মিনাল বোতাম খুলুন ক্লাউড শেলে ফিরে যেতে এবং চালানোর জন্য বোতাম:
npm start
  1. ট্যাবস বনাম স্পেসেস অ্যাপ্লিকেশনে, ডাটাবেসে আরও ডেটা যোগ করার জন্য আরও কিছু ভোট দিতে বোতামগুলিতে ক্লিক করুন।

৯. কোয়েরি পারফর্ম্যান্স এবং এন্ড-টু-এন্ড ট্রেসিং দেখতে ইনসাইট ব্যবহার করুন

কোয়েরি ইনসাইটস ড্যাশবোর্ড আপনাকে পারফরম্যান্স সমস্যাগুলি খুঁজতে ক্লাউড এসকিউএল কোয়েরিগুলির সমস্যা সমাধানে সহায়তা করে। ইনসাইটস অ্যাক্সেস করতে, আপনার ক্লাউড এসকিউএল ইনস্ট্যান্সের জন্য বাম নেভিগেশনে কোয়েরি ইনসাইট নির্বাচন করুন।

ডাটাবেস লোড - সকল কোয়েরি গ্রাফ

শীর্ষ-স্তরের কোয়েরি ইনসাইটস ড্যাশবোর্ডে ডাটাবেস লোড - সমস্ত কোয়েরি গ্রাফ দেখানো হয়েছে।

সকল প্রশ্নের গ্রাফ

গ্রাফটিতে CPU ক্যাপাসিটি, CPU এবং CPU wait, IO wait, এবং Lock wait এর তথ্য রয়েছে। এই মেট্রিক্সের অর্থ কী, মেট্রিক্স কোথায় সংরক্ষণ করা হয় সে সম্পর্কে আপনি আরও জানতে পারবেন এবং সমস্যাযুক্ত কোয়েরির জন্য এই গ্রাফটি কেমন দেখাবে তার কিছু উদাহরণ ডকুমেন্টেশনে দেখতে পাবেন। এই নমুনা অ্যাপ্লিকেশনের ক্ষেত্রে ডাটাবেস কোয়েরি লোড কম, তাই গ্রাফে কোনও বড় স্পাইক নেই।

কোন প্রশ্নগুলি সবচেয়ে বেশি লোডের জন্য দায়ী?

গ্রাফের নীচে, আপনি QUERIES টেবিলটি পাবেন যেখানে আপনার নির্বাচিত সময়সীমার জন্য স্বাভাবিককৃত কোয়েরিগুলি রয়েছে। টেবিলের কোয়েরিগুলি মোট কার্যকরকরণ সময় অনুসারে সাজানো হয়েছে।

শীর্ষ কোয়েরি টেবিল

আপনি একটি পৃথক কোয়েরিতে ক্লিক করে কোয়েরি সম্পর্কে বিস্তারিত তথ্য দেখতে পারেন, যেমন এই নির্দিষ্ট কোয়েরির ডাটাবেস লোড, কোয়েরি লেটেন্সি, কোয়েরি প্ল্যান নমুনা এবং শীর্ষ ব্যবহারকারীরা। যদি কোনও অ্যাপ্লিকেশন ORM ব্যবহার করে তৈরি করা হয়, যেমন নমুনা অ্যাপ্লিকেশনের ক্ষেত্রে হয়, তাহলে আপনি হয়তো জানেন না যে অ্যাপ্লিকেশনের কোন অংশটি কোন কোয়েরির জন্য দায়ী। শীর্ষ ট্যাগ বিভাগটি আপনাকে এটি বের করতে সাহায্য করতে পারে।

অ্যাপ্লিকেশনটিতে কোয়েরি লোড কোথা থেকে উৎপন্ন হচ্ছে?

ব্যবসায়িক যুক্তি দ্বারা ট্যাগ করা প্রশ্নের তালিকা দেখতে QUERIES টেবিল থেকে TAGS টেবিলে টগল করুন, যা আপনাকে আরও অ্যাপ্লিকেশন কেন্দ্রিক দৃশ্য দেবে।

শীর্ষ ট্যাগ টেবিল

TAGS টেবিলে, আপনি দেখতে পাবেন যে কোন রুট থেকে লোড তৈরি হয়েছে। উপরের স্ক্রিনশটে, আপনি দেখতে পাচ্ছেন যে '/getAllVotes' রুটের গড় এক্সিকিউশন সময় বেশি এবং গড়ে আরও বেশি সারি ফিরে এসেছে। যদিও টেবিলে আমরা যে এক্সিকিউশন সময় দেখতে পাচ্ছি তা এই ক্ষেত্রে সমস্যাযুক্ত নয়, তবুও ডেটা আরও বিশদে দেখার জন্য '/getAllVotes' এর জন্য সারিটিতে ক্লিক করা যাক।

কোয়েরিগুলি কেন ধীর গতিতে চলছে?

একটি কোয়েরি প্ল্যান দেখতে কোয়েরি প্ল্যান নমুনা গ্রাফের বিন্দুতে ক্লিক করুন।

নমুনা কোয়েরি পরিকল্পনা

কোয়েরি প্ল্যানগুলি দেখায় যে PostgreSQL কীভাবে কভারের নীচে একটি কোয়েরি কার্যকর করে, যা এমন কোনও অপারেশন আছে কিনা তা নির্ধারণ করা সহজ করে তোলে যা ধীরগতির দিকে পরিচালিত করে।

কোন অ্যাপ্লিকেশন কোড ধীরগতিতে অবদান রাখছে?

কোয়েরি ইনসাইটস এন্ড-টু-এন্ড ট্রেসিংয়ের ইন-কনটেক্সট ভিজ্যুয়ালাইজেশনও প্রদান করে, যা একটি অ্যাপ্লিকেশনের কোন অংশগুলি ধীর গতির কোয়েরি তৈরি করছে তা আরও তদন্তের জন্য সহায়ক হতে পারে।

একটি ইন-কনটেক্সট ট্রেস দেখতে END TO END ট্যাবে ক্লিক করুন।

এন্ড টু এন্ড ট্রেস

১০. পরিষ্কার করুন এবং আরও জানুন

আপনি Node.js অ্যাপ এবং ক্লাউড SQL PostgreSQL ডাটাবেসের সাহায্যে কোয়েরি ইনসাইট ব্যবহার করে কোয়েরি পারফর্ম্যান্স পর্যবেক্ষণ এবং তদন্ত করতে শিখেছেন!

পরিষ্কার করা

আপনি যদি আপনার ক্লাউড SQL ইনস্ট্যান্সটি চালু রাখতে না চান, তাহলে আপনি এখনই এটি মুছে ফেলতে পারেন।

gcloud sql instances delete my-instance

আরও জানুন