ข้อมูลเบื้องต้นเกี่ยวกับข้อมูลเชิงลึกของการค้นหาสำหรับ Cloud SQL

1. ก่อนเริ่มต้น

ข้อมูลเชิงลึกของการค้นหาสำหรับ Cloud SQL ช่วยให้คุณตรวจจับ วินิจฉัย และป้องกันปัญหาด้านประสิทธิภาพของการค้นหาสำหรับฐานข้อมูล Cloud SQL ได้ โดยมีข้อมูลการตรวจสอบและการวินิจฉัยแบบบริการตนเองที่ใช้งานง่าย ซึ่งนอกเหนือจากการตรวจหาแล้วยังช่วยคุณระบุสาเหตุที่แท้จริงของปัญหาด้านประสิทธิภาพได้อีกด้วย

ในโค้ดแล็บนี้ คุณจะได้เรียนรู้วิธีตั้งค่าอินสแตนซ์ Cloud SQL สำหรับ PostgreSQL, วิธีติดตั้งใช้งานแอป Node.js เพื่อใช้อินสแตนซ์ Cloud SQL เป็นที่เก็บข้อมูลแบ็กเอนด์ จากนั้นจึงใช้ข้อมูลเชิงลึกของคำค้นหาเพื่อดูและตรวจสอบคำค้นหา

ข้อกำหนดเบื้องต้น

  • มีความคุ้นเคยพื้นฐานกับภาษาโปรแกรมและเครื่องมือ Node.js

สิ่งที่คุณต้องทำ

  • ใช้ Cloud SQL ในแอป Node.js
  • เปิดใช้ SQL Commenter ในแอป Node.js
  • ใช้ข้อมูลเชิงลึกของการค้นหาสำหรับ Cloud SQL เพื่อตรวจสอบและตรวจสอบประสิทธิภาพการค้นหา

สิ่งที่คุณต้องมี

  • บัญชี Google Cloud ที่คุณมีสิทธิ์เปิดใช้ API และสร้างบริการ

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี)

จดรหัสโปรเจ็กต์ของโปรเจ็กต์ที่คุณใช้ ซึ่งจะเรียกว่า PROJECT-ID ในภายหลังใน Codelab นี้

  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย อย่าลืมทำตามวิธีการในส่วน "ล้างข้อมูลและดูข้อมูลเพิ่มเติม" ซึ่งจะแนะนำวิธีปิดแหล่งข้อมูลเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เปิดใช้งาน Cloud Shell

  1. จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell

เปิดใช้งาน Cloud Shell

หากไม่เคยเริ่มใช้ Cloud Shell มาก่อน คุณจะเห็นหน้าจอระดับกลาง (ด้านล่าง) ที่อธิบายว่า Cloud Shell คืออะไร ในกรณีนี้ ให้คลิกต่อไป (และคุณจะไม่เห็นหน้าจอนี้อีก) หน้าจอแบบครั้งเดียวจะมีลักษณะดังนี้

หน้าต่างกล่องโต้ตอบของ Cloud Shell

การจัดสรรและเชื่อมต่อกับ Cloud Shell จะใช้เวลาไม่นาน

เทอร์มินัล Cloud Shell

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก

  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคุณใช้โปรเจ็กต์ที่ถูกต้อง

เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์ของคุณแล้ว

เรียกใช้คำสั่งต่อไปนี้เพื่อยืนยันว่าคุณใช้โปรเจ็กต์ที่ถูกต้อง

gcloud config list project

หากต้องการใช้โปรเจ็กต์อื่นที่ไม่ใช่โปรเจ็กต์ที่คุณเลือกไว้เมื่อเปิด Cloud Shell คุณสามารถตั้งค่าโปรเจ็กต์ใหม่ได้โดยเรียกใช้คำสั่งต่อไปนี้

gcloud config set project <PROJECT-ID>;

3. ตั้งค่าอินสแตนซ์ Cloud SQL สำหรับ PostgreSQL โดยเปิดใช้ข้อมูลเชิงลึกของคิวรี

  1. หลังจากเปิด Cloud Shell แล้ว คุณสามารถใช้บรรทัดคำสั่งเพื่อสร้างอินสแตนซ์ Cloud SQL ใหม่ชื่อ my-instance โดยเปิดใช้ข้อมูลเชิงลึกของคำค้นหาได้ดังนี้
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 ระบุประเภทเครื่องที่มีทรัพยากรน้อยที่สุด เนื่องจากมีไว้เพื่อการพัฒนา และคุณไม่จำเป็นต้องใช้ทรัพยากรจำนวนมากสำหรับ Codelab ดูข้อมูลเพิ่มเติมเกี่ยวกับระดับได้ที่นี่
  • โดยแฟล็ก --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 ของไคลเอ็นต์ได้

คุณอาจได้รับแจ้งให้เปิดใช้ API sqladmin.googleapis.com สำหรับโปรเจ็กต์ หากมีข้อความแจ้ง ให้เลือก y เพื่อเปิดใช้ API

การสร้างอินสแตนซ์จะใช้เวลาหลายนาที เมื่อการดำเนินการนี้เสร็จสมบูรณ์แล้ว อินสแตนซ์จะพร้อมใช้งาน

  1. ตอนนี้ให้สร้างฐานข้อมูลที่จะใช้สำหรับแอปตัวอย่าง
gcloud sql databases create votesdb --instance my-instance

นอกจากนี้ คุณยังเข้าถึงและกำหนดค่าอินสแตนซ์ผ่าน Cloud Console ได้ด้วย

  1. รับชื่อการเชื่อมต่ออินสแตนซ์ในรูปแบบ PROJECT-ID:ZONE-ID:INSTANCE-ID โดยเรียกใช้คำสั่งต่อไปนี้ คุณจะใช้ข้อมูลนี้ในภายหลังเพื่อกำหนดค่าแอป Node.js
gcloud sql instances describe my-instance | grep connectionName

4. สร้างบัญชีบริการเพื่อใช้กับแอป

บัญชีบริการใช้ในการให้สิทธิ์เพื่อใช้บริการต่างๆ ภายในโปรเจ็กต์ GCP สำหรับ Codelab นี้ คุณต้องมีบัญชีเพื่อมอบสิทธิ์ให้พร็อกซี Cloud SQL เชื่อมต่อกับอินสแตนซ์ Cloud SQL

สร้างบัญชีบริการในคอนโซล

  1. ไปที่หน้าบัญชีบริการของ IAM แล้วคลิกปุ่ม -PCvKR3aQ2zKaUcml8w9lW4JNlmYtN5-r2--mC6kMUp6HOXW8wT1wUvLoYEPU-aA-oGskT3XkAqfNwRAKkZkllwTe6ugdrUVFwaeKT0M9Y1RwHA8JPZeGmCWYBfr8d9TSycNMIRsLw ที่ด้านบนของหน้า
  2. ตั้งชื่อและรหัสที่ไม่ซ้ำกันให้กับบัญชีบริการ แล้วคลิกสร้าง
  3. ในหน้าถัดไป ให้คลิกเมนูแบบเลื่อนลงสำหรับเลือกบทบาท กรองหา "Cloud SQL" แล้วเลือกบทบาทไคลเอ็นต์ Cloud SQL คลิกต่อไป แล้วคลิกเสร็จสิ้น
  4. หลังจากสร้างบัญชีบริการแล้ว ให้คลิกจุด 3 จุดในส่วนการดำเนินการสำหรับบัญชีบริการใหม่ แล้วเลือก "จัดการคีย์" ในหน้าถัดไป ให้เลือกเพิ่มคีย์ แล้วเลือกสร้างคีย์ใหม่ ระบบจะเลือก JSON ให้ ใช้ค่าเริ่มต้นนั้นต่อไป แล้วคลิกสร้าง ซึ่งจะดาวน์โหลดไฟล์คีย์ส่วนตัว .json คลิกปิด
  5. ใน Cloud Shell ให้คลิกจุด 3 จุดสำหรับเมนูเพิ่มเติม แล้วเลือกอัปโหลดไฟล์ เรียกดูไฟล์ .json ที่คุณดาวน์โหลดในเครื่อง แล้วเลือกไฟล์นั้น การดำเนินการนี้จะอัปโหลดไฟล์ .json ไปยังไดเรกทอรีหน้าแรกใน Cloud Shell

5. ติดตั้งและเปิดใช้พร็อกซี Cloud SQL

คุณจะใช้ Cloud SQL Proxy สำหรับการสื่อสารระหว่างแอปพลิเคชันกับอินสแตนซ์ฐานข้อมูล

  1. ดาวน์โหลดพร็อกซี Cloud SQL ใน Cloud Shell คุณสามารถเรียกใช้คำสั่งต่อไปนี้
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy && chmod +x cloud_sql_proxy
  1. เรียกใช้พร็อกซีดังนี้หลังจากแทนที่ <INSTANCE_CONNECTION_NAME> ด้วยชื่อการเชื่อมต่ออินสแตนซ์ที่คุณคัดลอกจากหน้าภาพรวมของอินสแตนซ์ Cloud SQL
./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 &

หากดำเนินการสำเร็จ คุณควรเห็นเอาต์พุต 2-3 บรรทัด โดยลงท้ายด้วยข้อความ Ready for new connections

6. โคลนและทดสอบแอปในเครื่อง

  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. คลิกตัวอย่างเว็บไอคอนตัวอย่างเว็บ ใน Cloud Shell แล้วเลือกแสดงตัวอย่างบนพอร์ต 8080

รายการเมนู &quot;แสดงตัวอย่างบนพอร์ต 8080&quot;

คุณควรเห็นแอปการโหวตแท็บเทียบกับช่องว่างดังที่แสดงที่นี่ในเบราว์เซอร์

ภาพหน้าจอของแอปการโหวตในแท็บเทียบกับพื้นที่ทำงาน

  1. คลิกปุ่มเพื่อโหวตและบันทึกข้อมูลบางอย่างในฐานข้อมูล

7. เพิ่มหน้าเพื่อดูคะแนนโหวตทั้งหมด

เนื่องจากแอปพลิเคชันตัวอย่างนี้เรียบง่ายมาก คุณจึงจะเพิ่มหน้าเว็บอีกหน้าหนึ่งที่แสดงคะแนนทั้งหมด เหตุผลหลักในการดำเนินการนี้คือเพื่อให้คุณมีข้อมูลมากขึ้นเมื่อใช้ข้อมูลเชิงลึกของคำค้นหาในภายหลัง

  1. ป้อน Ctrl+c ใน Cloud Shell เพื่อหยุดแอปตัวอย่าง
  2. ใน Cloud Shell ให้คลิกปุ่ม ปุ่มเปิดเครื่องมือแก้ไข เพื่อเปิดตัว Cloud Shell Editor
  3. ใน File Explorer ให้ค้นหา 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. คลิกปุ่ม ปุ่มเปิดเทอร์มินัล เพื่อกลับไปที่ Cloud Shell แล้วเรียกใช้คำสั่งต่อไปนี้
npm start
  1. เปิดแอปจากตัวอย่างเว็บเพื่อให้แน่ใจว่าแอปทำงานได้ เพิ่ม /getAllVotes ใน URL ในเบราว์เซอร์เพื่อดูหน้าใหม่ที่คุณเพิ่ม

8. เปิดใช้ SQL Commenter ในแอป

ตอนนี้คุณจะติดตั้งและเปิดใช้ SQL Commenter ซึ่งเป็นไลบรารีโอเพนซอร์สที่ช่วยให้ ORM เพิ่มคำสั่ง SQL ด้วยความคิดเห็นก่อนการดำเนินการได้ SQLcommenter รองรับ ORM และเฟรมเวิร์กหลายรายการ รวมถึงรายการที่แอปตัวอย่างใช้ ซึ่งก็คือ Knex.js ข้อมูลเชิงลึกของคําค้นหาใช้ข้อมูลในความคิดเห็นเหล่านี้เพื่อให้มุมมองที่เน้นแอปพลิเคชันเกี่ยวกับประสิทธิภาพของฐานข้อมูล และระบุโค้ดแอปพลิเคชันที่ทําให้เกิดปัญหา เราคาดว่าค่าใช้จ่ายด้านประสิทธิภาพจะต่ำ ดูเอกสารประกอบของ Query Insights

  1. ป้อน Ctrl+c ใน Cloud Shell เพื่อหยุดแอปตัวอย่าง
  2. เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งแพ็กเกจที่ SQLcommenter ต้องการ
  npm install @google-cloud/sqlcommenter-knex @opencensus/nodejs @opencensus/propagation-tracecontext @opentelemetry/api @opentelemetry/core --save
  1. ใน Cloud Shell ให้คลิกปุ่ม ปุ่มเปิดเครื่องมือแก้ไข เพื่อเปิดตัว Cloud Shell Editor
  2. ใน File Explorer ให้ค้นหา 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. คลิกปุ่ม ปุ่มเปิดเทอร์มินัล เพื่อกลับไปที่ Cloud Shell แล้วเรียกใช้คำสั่งต่อไปนี้
npm start
  1. ในแอปพลิเคชันแท็บเทียบกับช่องว่าง ให้คลิกปุ่มเพื่อโหวตเพิ่มเติมเพื่อเพิ่มข้อมูลลงในฐานข้อมูล

9. ใช้ข้อมูลเชิงลึกเพื่อดูประสิทธิภาพการค้นหาและการติดตามจากต้นทางถึงปลายทาง

แดชบอร์ดข้อมูลเชิงลึกของการค้นหาช่วยให้คุณแก้ปัญหาการค้นหา Cloud SQL เพื่อค้นหาปัญหาด้านประสิทธิภาพได้ หากต้องการเข้าถึงข้อมูลเชิงลึก ให้เลือกข้อมูลเชิงลึกของคําค้นหาในเมนูทางด้านซ้ายสําหรับอินสแตนซ์ Cloud SQL

กราฟภาระงานของฐานข้อมูล - การค้นหาทั้งหมด

แดชบอร์ดข้อมูลเชิงลึกของคำค้นหาระดับบนสุดจะแสดงกราฟภาระงานของฐานข้อมูล - การค้นหาทั้งหมด

กราฟการค้นหาทั้งหมด

กราฟประกอบด้วยข้อมูลความจุ CPU, CPU และการรอ CPU, การรอ IO และการรอล็อก ดูข้อมูลเพิ่มเติมเกี่ยวกับความหมายของเมตริกเหล่านี้ ที่จัดเก็บเมตริก และตัวอย่างลักษณะของกราฟนี้สำหรับคำค้นหาที่มีปัญหาได้ในเอกสารประกอบ ในกรณีของแอปพลิเคชันตัวอย่างนี้ ภาระงานการค้นหาฐานข้อมูลอยู่ในระดับต่ำ จึงไม่มีการเพิ่มขึ้นอย่างมากในกราฟ

คำค้นหาใดที่ทำให้เกิดการโหลดมากที่สุด

คุณจะเห็นตารางคำค้นหาที่มีคำค้นหาที่ทำให้เป็นมาตรฐานสำหรับช่วงเวลาที่คุณเลือกไว้ใต้กราฟ ระบบจะจัดเรียงการค้นหาในตารางตามเวลาในการดำเนินการทั้งหมด

ตารางคำค้นหายอดนิยม

คุณคลิกการค้นหาแต่ละรายการเพื่อดูข้อมูลโดยละเอียดเกี่ยวกับการค้นหา เช่น ภาระงานของฐานข้อมูลสำหรับการค้นหาที่เฉพาะเจาะจงนี้ เวลาในการตอบสนองของการค้นหา ตัวอย่างแผนการค้นหา และผู้ใช้ยอดนิยม หากสร้างแอปพลิเคชันโดยใช้ ORM ดังเช่นในแอปพลิเคชันตัวอย่าง คุณอาจไม่ทราบว่าส่วนใดของแอปพลิเคชันที่รับผิดชอบคำค้นหาใด ส่วนแท็กยอดนิยมจะช่วยให้คุณทราบข้อมูลดังกล่าวได้

การโหลดคําค้นหาในแอปพลิเคชันมาจากที่ใด

สลับจากตารางคำค้นหาไปยังตารางแท็กเพื่อดูรายการคำค้นหาที่ติดแท็กตามตรรกะทางธุรกิจ ซึ่งจะช่วยให้คุณเห็นมุมมองที่เน้นแอปพลิเคชันมากขึ้น

ตารางแท็กยอดนิยม

ในตารางแท็ก คุณจะเห็นการโหลดฐานข้อมูลที่แยกตามเส้นทางที่สร้างการโหลด ในภาพหน้าจอด้านบน คุณจะเห็นว่าเส้นทาง '/getAllVotes' มีเวลาในการดำเนินการโดยเฉลี่ยสูงกว่าและมีแถวที่แสดงผลโดยเฉลี่ยมากกว่า แม้ว่าเวลาในการดำเนินการที่เราเห็นในตารางจะไม่เป็นปัญหาในกรณีนี้ แต่ให้คลิกแถวของ '/getAllVotes' เพื่อดูข้อมูลโดยละเอียด

เหตุใดการค้นหาจึงทำงานช้า

คลิกจุดในกราฟตัวอย่างแผนการค้นหาเพื่อดูแผนการค้นหา

ตัวอย่างแพ็กเกจคำสั่ง

แพ็กเกจการค้นหาจะแสดงวิธีที่ PostgreSQL ดำเนินการค้นหาเบื้องหลัง ซึ่งจะช่วยให้คุณระบุได้ง่ายขึ้นว่ามีการดำเนินการใดที่ทำให้เกิดความล่าช้า

โค้ดแอปพลิเคชันใดที่ทำให้เกิดความล่าช้า

นอกจากนี้ ข้อมูลเชิงลึกเกี่ยวกับคำค้นหายังแสดงภาพการติดตามแบบครบวงจรในบริบท ซึ่งอาจเป็นประโยชน์ในการตรวจสอบเพิ่มเติมว่าส่วนใดของแอปพลิเคชันที่สร้างคำค้นหาที่ช้า

คลิกแท็บต้นทางถึงปลายทางเพื่อดูการติดตามในบริบท

การติดตามตั้งแต่ต้นจนจบ

10. ล้างข้อมูลและดูข้อมูลเพิ่มเติม

คุณได้เรียนรู้วิธีใช้ข้อมูลเชิงลึกของการค้นหาเพื่อตรวจสอบและตรวจสอบประสิทธิภาพการค้นหาด้วยแอป Node.js และฐานข้อมูล Cloud SQL PostgreSQL แล้ว

การล้างข้อมูล

หากไม่ต้องการให้อินสแตนซ์ Cloud SQL ทำงานต่อไป คุณสามารถลบอินสแตนซ์ได้เลย

gcloud sql instances delete my-instance

ดูข้อมูลเพิ่มเติม