跳到主要内容
返回文章列表

AlloyDB เปิด ai.tune_sql แบบ Preview ช่วยหาแนวทางปรับ Query

AlloyDB ใช้ AI อ่าน execution plan, schema และสถิติเพื่อแนะนำ rewrite, index และการตั้งค่า PostgreSQL

AlloyDB เปิด ai.tune_sql แบบ Preview ช่วยหาแนวทางปรับ Query

Google Cloud เพิ่มใน release notes วันที่ 2 พฤศจิกายน 2026 ว่า AlloyDB for PostgreSQL มีฟังก์ชัน ai.tune_sql สำหรับขอคำแนะนำปรับประสิทธิภาพ SQL ด้วยโมเดลภาษา ฟีเจอร์อยู่ใน Preview และเริ่มใช้ได้กับ google_ml_integration เวอร์ชัน 1.6.2 ขึ้นไป ฟังก์ชันอ่าน query plan, schema และสถิติการทำงานเพื่อชี้คอขวด แล้วเสนอทางเลือกอย่างการเขียน query ใหม่ การสร้าง index การเก็บสถิติ และการตั้งค่า database คำแนะนำเหล่านี้เป็นจุดตั้งต้นให้ DBA ตรวจสอบ ไม่ใช่คำสั่งเปลี่ยนฐานข้อมูลโดยอัตโนมัติ

วิเคราะห์มากกว่าเพียงข้อความ SQL

การปรับ query จากตัว SQL อย่างเดียวมักพลาดข้อมูลสำคัญ เช่น ลำดับ join ที่ optimizer เลือก การกระจายค่าจริงในตาราง หรือจำนวน row ที่อ่านเกินจำเป็น Google ระบุว่า ai.tune_sql ใช้ execution plan และ runtime stats ประกอบ จึงสามารถเสนอทั้ง rewrite และชนิด index ที่เหมาะกับเงื่อนไข รวมถึง expression index, GIN และ ScaNN ในกรณีที่เกี่ยวข้อง นอกจากนี้ยังแนะนำ ANALYZE, VACUUM, การเก็บสถิติหลายคอลัมน์ และค่า GUC โดยดูหน่วยความจำกับ buffer ของระบบ

ทีมฐานข้อมูลควรอ่านคำแนะนำเป็นสมมติฐานที่ต้องพิสูจน์ด้วย EXPLAIN และการวัดเวลาจริง การเพิ่ม index อาจช่วย query หนึ่งแต่เพิ่มต้นทุนเขียนและพื้นที่จัดเก็บ ส่วนการเปลี่ยน GUC อาจกระทบ workload อื่น การจัดอันดับจึงควรดูความถี่ของ query, ผลต่อ p95 latency และต้นทุนรวม ไม่ใช่เลือกข้อเสนอที่ดูเหมือนเร็วที่สุดเพียงรายการเดียว

เงื่อนไขก่อนทดลองและข้อจำกัด

คู่มือ Google ระบุว่าต้องใช้ AlloyDB ที่รัน PostgreSQL 18 ขึ้นไป เปิด Vertex AI integration และติดตั้ง google_ml_integration 1.6.2 หรือใหม่กว่า พร้อมเปิด google_db_advisor และ hypopg ซึ่งใช้ประเมิน index ที่เสนอ ต้องลงทะเบียน endpoint ของ Gemini แล้วตั้งค่า google_db_advisor.llm_model_id และ google_db_advisor.enable_ai_tune_sql ใน session ฐานข้อมูล การใช้ SET มีผลเฉพาะ session; หากต้องการค่าถาวรต้องกำหนดระดับ database หรือ instance อย่างตั้งใจ

ข้อจำกัดสำคัญคือ query ที่ใช้ prepared statement หรือ parameter placeholder ยังรับคำแนะนำ rewrite ไม่ได้ แม้ยังได้คำแนะนำประเภทอื่น Google แนะนำให้แทน placeholder ด้วยค่าตัวอย่างที่เป็นตัวแทนของงานก่อนเรียกฟังก์ชัน หากเปิด explain_analyze = TRUE จะรองรับเฉพาะ SELECT แบบอ่านอย่างเดียวหนึ่งคำสั่ง การใช้กับ INSERT, UPDATE, DELETE หรือ SELECT FOR UPDATE จะเกิด error จึงไม่ควรนำ SQL จากแอปทั้งหมดมาทดลองตรง ๆ โดยไม่มีตัวกรอง

กระบวนการนำไปใช้ในทีม

เริ่มจากเลือก query ช้าที่มี baseline ชัดเจนจาก Query Insights หรือ pg_stat_statements จด execution plan, เวลาเฉลี่ยและ p95, ปริมาณข้อมูล และค่าใช้จ่าย แล้วเรียก ai.tune_sql ในสภาพแวดล้อมที่ควบคุมได้ แยกข้อเสนอเป็น rewrite, index, stats และ configuration ทดสอบทีละอย่างกับข้อมูลใกล้ production เพื่อแยกผลของแต่ละการเปลี่ยนแปลง หากเสนอ index ให้ตรวจขนาดและ write amplification; หากเสนอ VACUUM หรือ ANALYZE ให้ประเมินช่วงเวลาที่เหมาะกับ workload

เพราะฟังก์ชันใช้ LLM ผ่าน Vertex AI ทีมควรตรวจสิทธิ์ของ service agent, endpoint และนโยบายข้อมูลที่ส่งไปประกอบคำขอ รวมถึงต้นทุนเรียกโมเดลและการเก็บ log ของฐานข้อมูล ก่อนนำ query ที่อาจมีข้อมูลอ่อนไหวไปทดลอง ใน Preview พฤติกรรมและเงื่อนไขอาจเปลี่ยนได้ จึงควรเก็บวิธีปรับ query แบบเดิมไว้และทำ code review สำหรับทุกการเปลี่ยนแปลง ค่าที่มีประโยชน์ที่สุดของฟีเจอร์นี้คือช่วยให้ DBA มีรายการสมมติฐานจาก plan และสถิติเร็วขึ้น แล้วใช้การวัดจริงเป็นผู้ตัดสิน

แหล่งข่าว: Google Cloud release notes วันที่ 2 พฤศจิกายน 2026 และ คู่มือ Tune SQL queries using AI