1. ก่อนเริ่มต้น
ข้อมูลเชิงลึกของการค้นหาสำหรับ Cloud SQL ช่วยให้คุณตรวจหา วินิจฉัย และป้องกันปัญหาด้านประสิทธิภาพการค้นหาสำหรับฐานข้อมูล Cloud SQL เครื่องมือนี้มีแบบบริการตนเอง การตรวจสอบที่ใช้งานง่าย และการวินิจฉัยที่นอกเหนือจากการตรวจจับ เพื่อช่วยให้คุณระบุสาเหตุที่แท้จริงของปัญหาด้านประสิทธิภาพได้
ใน Codelab นี้ คุณจะได้ดูวิธีตั้งค่า Cloud SQL สำหรับอินสแตนซ์ PostgreSQL, ทำให้แอป Node.js ใช้งานได้เพื่อใช้อินสแตนซ์ Cloud SQL เป็นพื้นที่เก็บข้อมูลแบ็กเอนด์ รวมถึงใช้ข้อมูลเชิงลึกของการค้นหาเพื่อดูและตรวจสอบการค้นหา
ข้อกำหนดเบื้องต้น
- มีความคุ้นเคยกับภาษาและเครื่องมือในการเขียนโปรแกรม Node.js ในระดับพื้นฐาน
สิ่งที่คุณจะต้องทำ
- ใช้ Cloud SQL ในแอป Node.js
- เปิดใช้เครื่องมือแสดงความคิดเห็น SQL ในแอป Node.js
- ใช้ข้อมูลเชิงลึกของการค้นหาสำหรับ Cloud SQL เพื่อตรวจสอบและตรวจสอบประสิทธิภาพการค้นหา
สิ่งที่คุณต้องมี
- บัญชี Google Cloud ที่คุณมีสิทธิ์เปิดใช้ API และสร้างบริการ
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี)
จำรหัสโปรเจ็กต์สําหรับโปรเจ็กต์ที่คุณใช้อยู่ และจะมีการอ้างอิงใน Codelab ว่า PROJECT-ID
ในภายหลัง
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี ตรวจสอบว่าคุณได้ทำตามวิธีการใน "ล้างข้อมูลและดูข้อมูลเพิ่มเติม" ซึ่งจะแนะนำคุณเกี่ยวกับวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD
เปิดใช้งาน Cloud Shell
- คลิกเปิดใช้งาน Cloud Shell จาก Cloud Console
หากคุณไม่เคยเริ่มต้นใช้งาน Cloud Shell มาก่อน คุณจะเห็นหน้าจอตรงกลาง (ครึ่งหน้าล่าง) ซึ่งอธิบายว่านี่คืออะไร หากเป็นเช่นนั้น ให้คลิกดำเนินการต่อ (คุณจะไม่เห็นการดำเนินการนี้อีก) หน้าจอแบบครั้งเดียวมีลักษณะดังนี้
การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ทำงานอย่างต่อเนื่องใน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคุณกำลังใช้โปรเจ็กต์ที่ถูกต้อง
เมื่อเชื่อมต่อกับ Cloud Shell คุณควรเห็นว่าได้รับการตรวจสอบสิทธิ์แล้ว และโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์แล้ว
เรียกใช้คำสั่งต่อไปนี้เพื่อยืนยันว่าคุณกำลังใช้โปรเจ็กต์ที่ถูกต้อง
gcloud config list project
หากต้องการใช้โปรเจ็กต์อื่นที่ไม่ใช่โปรเจ็กต์ที่เลือกไว้เมื่อเปิด Cloud Shell คุณตั้งค่าโปรเจ็กต์ใหม่ได้โดยเรียกใช้
gcloud config set project <PROJECT-ID>;
3. ตั้งค่า Cloud SQL สำหรับอินสแตนซ์ PostgreSQL ที่เปิดใช้ข้อมูลเชิงลึกของการค้นหา
- หลังจากเปิดตัว 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
ได้ อย่าลืมเปลี่ยน <รหัสผ่าน> ด้วยรหัสผ่านที่คุณเลือก - แฟล็ก
--insights-config-query-insights-enabled
จะเปิดใช้ข้อมูลเชิงลึกของการค้นหาบนอินสแตนซ์ - แฟล็ก
--insights-config-record-application-tags
จะอนุญาตให้บันทึกแท็กแอปพลิเคชัน คุณจะได้ดูข้อมูลเพิ่มเติมเกี่ยวกับแท็กแอปพลิเคชันในส่วนต่อไป - แฟล็ก
--insights-config-record-client-address
จะช่วยให้ข้อมูลเชิงลึกของการค้นหาบันทึกที่อยู่ IP ของไคลเอ็นต์ได้
คุณอาจได้รับแจ้งให้เปิดใช้ API sqladmin.googleapis.com สำหรับโปรเจ็กต์ของคุณ หากมีข้อความแจ้ง ให้เลือก y
เพื่อเปิดใช้ API
การสร้างอินสแตนซ์อาจใช้เวลาหลายนาที เมื่อการดำเนินการนี้เสร็จสิ้น อินสแตนซ์ของคุณจะพร้อมใช้งาน
- ทีนี้สร้างฐานข้อมูลที่คุณจะใช้สำหรับแอปตัวอย่าง ดังนี้
gcloud sql databases create votesdb --instance my-instance
นอกจากนี้ยังเข้าถึงและกำหนดค่าอินสแตนซ์ผ่าน Cloud Console ได้ด้วย
- ดูชื่อการเชื่อมต่ออินสแตนซ์ในรูปแบบ
PROJECT-ID:ZONE-ID:INSTANCE-ID
โดยเรียกใช้คำสั่งต่อไปนี้ คุณจะต้องใช้ชื่อนี้ในภายหลังในการกำหนดค่าแอป Node.js
gcloud sql instances describe my-instance | grep connectionName
4. สร้างบัญชีบริการเพื่อใช้กับแอป
บัญชีบริการมีไว้เพื่อให้สิทธิ์การใช้บริการต่างๆ ภายในโปรเจ็กต์ GCP ของคุณ สำหรับ Codelab นี้ คุณต้องมีผู้ดูแลระบบจึงจะให้สิทธิ์พร็อกซี Cloud SQL ในการเชื่อมต่อกับอินสแตนซ์ Cloud SQL ได้
สร้างบัญชีบริการในคอนโซล
- ไปที่หน้าบัญชีบริการ IAM และคลิกปุ่ม ที่ด้านบนของหน้า
- ตั้งชื่อและรหัสที่ไม่ซ้ำกันให้บัญชีบริการ แล้วคลิกสร้าง
- ในหน้าถัดไป ให้คลิกเมนูแบบเลื่อนลงสำหรับ "เลือกบทบาท" ตัวกรองสำหรับ "Cloud SQL" แล้วเลือกบทบาทไคลเอ็นต์ Cloud SQL คลิกดำเนินการต่อ แล้วคลิกเสร็จสิ้น
- หลังจากสร้างบัญชีบริการแล้ว ให้คลิกจุด 3 จุดในส่วนการดำเนินการสำหรับบัญชีบริการใหม่ แล้วเลือก "จัดการคีย์" ในหน้าถัดไป ให้เลือกเพิ่มคีย์ แล้วเลือกสร้างคีย์ใหม่ ระบบจะเลือก JSON เก็บค่าเริ่มต้นนั้นไว้ แล้วคลิกสร้าง การดำเนินการนี้จะดาวน์โหลดไฟล์คีย์ส่วนตัว .json คลิกปิด
- ใน Cloud Shell ให้คลิกจุด 3 จุดของเมนูเพิ่มเติม แล้วเลือกอัปโหลดไฟล์ เรียกดูไฟล์ .json ที่คุณดาวน์โหลดในเครื่องของคุณแล้วเลือกไฟล์นั้น การดำเนินการนี้จะอัปโหลดไฟล์ .json ไปยังไดเรกทอรีหน้าแรกใน Cloud Shell
5. ติดตั้งและเปิดใช้งานพร็อกซี Cloud SQL
คุณจะใช้พร็อกซี Cloud SQL เพื่อสื่อสารระหว่างแอปพลิเคชันกับอินสแตนซ์ฐานข้อมูล
- ดาวน์โหลดพร็อกซี Cloud SQL ใน Cloud Shell คุณจะเรียกใช้สิ่งต่อไปนี้ได้
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy && chmod +x cloud_sql_proxy
- เรียกใช้พร็อกซีตามขั้นตอนต่อไปนี้หลังจากแทนที่
<INSTANCE_CONNECTION_NAME>
ด้วยชื่อการเชื่อมต่ออินสแตนซ์ที่คุณคัดลอกจากหน้าภาพรวมอินสแตนซ์ Cloud SQL
./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 &
หากสำเร็จ คุณควรเห็นเอาต์พุต 2-3 บรรทัดลงท้ายด้วยข้อความ Ready for new connections
6. โคลนและทดสอบแอปในเครื่อง
- โคลนที่เก็บสำหรับแอปพลิเคชันตัวอย่าง และติดตั้งแพ็กเกจที่จำเป็นต่อการเรียกใช้แอป
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples/ cd nodejs-docs-samples/cloud-sql/postgres/knex npm install
- ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้
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'
- เปิดแอปตัวอย่าง
npm start
- คลิกตัวอย่างเว็บ ใน Cloud Shell จากนั้นเลือกแสดงตัวอย่างบนพอร์ต 8080
คุณควรเห็นแอปโหวต "แท็บเทียบกับพื้นที่ทำงาน" ดังที่แสดงไว้ที่นี่ในเบราว์เซอร์ของคุณ
- คลิกปุ่มเพื่อโหวตและบันทึกข้อมูลบางอย่างในฐานข้อมูล
7. เพิ่มหน้าเพื่อดูคะแนนเสียงทั้งหมด
เนื่องจากแอปพลิเคชันตัวอย่างนี้ใช้งานง่ายมาก คุณจะเพิ่มหน้าเว็บเพิ่มเติมที่แสดงการลงคะแนนทั้งหมด เหตุผลหลักที่ทำเช่นนี้ก็เพื่อให้คุณมีข้อมูลที่ต้องดูมากขึ้นเมื่อใช้ข้อมูลเชิงลึกของการค้นหาในภายหลัง
- ป้อน
Ctrl+c
ใน Cloud Shell เพื่อหยุดแอปตัวอย่าง - ใน Cloud Shell ให้คลิกปุ่ม เพื่อเปิดใช้ Cloud Shell Editor
- ในโปรแกรมสำรวจไฟล์ ให้ค้นหา
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');
};
- เพิ่มโค้ดต่อไปนี้สำหรับเส้นทาง
'/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();
}
});
- สร้างไฟล์ใหม่ในไดเรกทอรี
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}.
- คลิกปุ่ม เพื่อกลับไปยัง Cloud Shell และเรียกใช้:
npm start
- เปิดแอปจากตัวอย่างเว็บเพื่อตรวจสอบว่าใช้งานได้ เพิ่ม
/getAllVotes
ใน URL ในเบราว์เซอร์เพื่อดูหน้าเว็บใหม่ที่คุณเพิ่ม
8. เปิดใช้ผู้แสดงความคิดเห็น SQL ในแอป
ตอนนี้คุณจะต้องติดตั้งและเปิดใช้ผู้แสดงความคิดเห็น SQL ซึ่งเป็นไลบรารีโอเพนซอร์สที่เปิดใช้ ORM เพื่อเพิ่มคำสั่ง SQL ที่มีความคิดเห็นก่อนการเรียกใช้ SQLcommenter รองรับ ORM และเฟรมเวิร์กมากมาย รวมถึงแบบที่แอปตัวอย่างใช้: Knex.js ข้อมูลเชิงลึกของการค้นหาจะใช้ข้อมูลในความคิดเห็นเหล่านี้ เพื่อให้มุมมองด้านประสิทธิภาพของฐานข้อมูลที่เน้นแอปพลิเคชันเป็นหลัก และระบุโค้ดของแอปพลิเคชันที่ทำให้เกิดปัญหา คาดว่าค่าใช้จ่ายด้านประสิทธิภาพจะมีเพียงเล็กน้อย ดูเอกสารประกอบข้อมูลเชิงลึกของการค้นหา
- ป้อน
Ctrl+c
ใน Cloud Shell เพื่อหยุดแอปตัวอย่าง - เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งแพ็กเกจที่ SQLcommenter ต้องการ
npm install @google-cloud/sqlcommenter-knex @opencensus/nodejs @opencensus/propagation-tracecontext @opentelemetry/api @opentelemetry/core --save
- ใน Cloud Shell ให้คลิกปุ่ม เพื่อเปิดใช้ Cloud Shell Editor
- ในโปรแกรมสำรวจไฟล์ ให้ค้นหา
nodejs-docs-samples/cloud-sql/postgres/knex/server.js
แล้วคลิกเพื่อโหลดไฟล์server.js
ในตัวแก้ไข - ค้นหาโค้ดนี้ในไฟล์:
const process = require('process');
เพิ่มโค้ดต่อไปนี้ไว้ที่ด้านล่าง
const {wrapMainKnexAsMiddleware} = require('@google-cloud/sqlcommenter-knex');
- ค้นหาโค้ดนี้ในไฟล์:
// 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
}));
...
- คลิกปุ่ม เพื่อกลับไปยัง Cloud Shell และเรียกใช้:
npm start
- คลิกปุ่มต่างๆ ในแอปพลิเคชัน "แท็บเทียบกับพื้นที่ทำงาน" เพื่อโหวตเพิ่มคะแนนเพื่อเพิ่มข้อมูลในฐานข้อมูล
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