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. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี)
จดรหัสโปรเจ็กต์ของโปรเจ็กต์ที่คุณใช้ ซึ่งจะเรียกว่า PROJECT-ID ในภายหลังใน Codelab นี้
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย อย่าลืมทำตามวิธีการในส่วน "ล้างข้อมูลและดูข้อมูลเพิ่มเติม" ซึ่งจะแนะนำวิธีปิดแหล่งข้อมูลเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เปิดใช้งาน Cloud Shell
- จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell
หากไม่เคยเริ่มใช้ Cloud Shell มาก่อน คุณจะเห็นหน้าจอระดับกลาง (ด้านล่าง) ที่อธิบายว่า 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ได้ อย่าลืมแทนที่ <PASSWORD> ด้วยรหัสผ่านที่คุณเลือก - ฟีเจอร์
--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 Proxy สำหรับการสื่อสารระหว่างแอปพลิเคชันกับอินสแตนซ์ฐานข้อมูล
- ดาวน์โหลดพร็อกซี 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 - ใน 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');
};
- เพิ่มโค้ดต่อไปนี้สำหรับ
'/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 Commenter ในแอป
ตอนนี้คุณจะติดตั้งและเปิดใช้ SQL Commenter ซึ่งเป็นไลบรารีโอเพนซอร์สที่ช่วยให้ ORM เพิ่มคำสั่ง SQL ด้วยความคิดเห็นก่อนการดำเนินการได้ SQLcommenter รองรับ ORM และเฟรมเวิร์กหลายรายการ รวมถึงรายการที่แอปตัวอย่างใช้ ซึ่งก็คือ Knex.js ข้อมูลเชิงลึกของคําค้นหาใช้ข้อมูลในความคิดเห็นเหล่านี้เพื่อให้มุมมองที่เน้นแอปพลิเคชันเกี่ยวกับประสิทธิภาพของฐานข้อมูล และระบุโค้ดแอปพลิเคชันที่ทําให้เกิดปัญหา เราคาดว่าค่าใช้จ่ายด้านประสิทธิภาพจะต่ำ ดูเอกสารประกอบของ Query Insights
- ป้อน
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 - ใน File Explorer ให้ค้นหา
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