ทำโปรไฟล์ฐานข้อมูลของคุณ

วัดประสิทธิภาพของ Firebase Realtime Database ด้วยเครื่องมือโปรไฟล์ฐานข้อมูล ที่สร้างขึ้นใน Firebase CLI เครื่องมือ Profiler จะบันทึกกิจกรรมทั้งหมดในฐานข้อมูลในช่วงระยะเวลาหนึ่งๆ จากนั้นจะสร้างรายงานแบบละเอียด ใช้รายงานแบบละเอียดเพื่อแก้ปัญหาเกี่ยวกับ ประสิทธิภาพของฐานข้อมูล ระบุพื้นที่ที่มีปัญหา และลดการค้นหาที่ไม่ได้จัดทำดัชนี

สร้างโปรไฟล์

  1. ก่อนเริ่มการสร้างโปรไฟล์ Firebase Realtime Database ให้ตรวจสอบว่าคุณใช้ Firebase CLI เวอร์ชันล่าสุด และได้เริ่มต้นใช้งานสำหรับฐานข้อมูลและโปรเจ็กต์ที่ต้องการสร้างโปรไฟล์แล้ว โปรดทราบ ว่าคุณต้องเป็นผู้แก้ไขหรือเจ้าของโปรเจ็กต์นั้นจึงจะทำโปรไฟล์ได้

  2. เริ่มการสร้างโปรไฟล์ฐานข้อมูลด้วยคำสั่งต่อไปนี้

    firebase database:profile
    Profiler จะแสดงข้อความสถานะขณะบันทึกการดำเนินการจาก ฐานข้อมูลและสร้างโปรไฟล์

  3. กด Enter เพื่อสร้างโปรไฟล์ให้เสร็จสมบูรณ์และแสดงผลลัพธ์

ตีความผลลัพธ์

เครื่องมือโปรไฟล์จะรวบรวมข้อมูลที่เก็บรวบรวมไว้เกี่ยวกับการดำเนินการของฐานข้อมูล และแสดงผลลัพธ์ใน 3 หมวดหมู่หลัก ได้แก่ ความเร็ว แบนด์วิดท์ และคําค้นหาที่ไม่ได้ทําดัชนี

ความเร็ว

รายงานความเร็วจะวัดเวลาในการตอบกลับของเซิร์ฟเวอร์ (เป็นมิลลิวินาที) สำหรับการดำเนินการแต่ละประเภท อย่างไรก็ตาม ความเร็วที่วัดในรายงานความเร็วอาจไม่ แสดงถึงความเร็วที่ผู้ใช้ปลายทางได้รับจริง ปัจจัยต่างๆ รวมถึง สภาพเครือข่าย อาจทำให้เกิดเวลาในการตอบสนองที่ฝั่งไคลเอ็นต์

รายงานความเร็วประกอบด้วยพร็อพเพอร์ตี้ต่อไปนี้

  • เส้นทาง: เส้นทางในฐานข้อมูลที่เกิดการดำเนินการ หากมีโหนดย่อยมากกว่า 25 รายการ เครื่องมือโปรไฟล์จะยุบโหนดเหล่านี้เป็นเส้นทางหลักและเพิ่มเครื่องหมาย $wildcard คุณอาจเห็นรูทไดเรกทอรีของฐานข้อมูลในรายงาน ซึ่งแสดงด้วยเครื่องหมายทับ /
  • จำนวน: จำนวนการดำเนินการที่เกิดขึ้นในเส้นทางที่ระบุ
  • ความเร็วในการดำเนินการโดยเฉลี่ย: เวลาโดยเฉลี่ยที่เซิร์ฟเวอร์ใช้ในการดำเนินการ ตรรกะทางธุรกิจที่จำเป็นในการจัดการการดำเนินการประเภทหนึ่งๆ ในเส้นทางนั้น ช่วงเวลาที่วัดที่นี่จะเริ่มหลังจากช่วงเวลาที่วัดโดย "เวลาที่รอดำเนินการโดยเฉลี่ย" ที่อธิบายไว้ด้านล่าง
  • เวลาที่รอดำเนินการโดยเฉลี่ย: เวลาโดยเฉลี่ยที่คำขอใช้ในการรอคิว ก่อนที่จะได้รับการดำเนินการ ความล่าช้านี้เป็นเรื่องปกติสำหรับคำขอทั้งหมดที่ไคลเอ็นต์เป็นผู้เริ่ม เวลาในการตอบสนองของคำขอฝั่งเซิร์ฟเวอร์ทั้งหมดโดยประมาณคือผลรวมของ เวลาที่รอดำเนินการและความเร็วในการดำเนินการของคำขอนั้น
  • ปฏิเสธสิทธิ์: จำนวนการดำเนินการที่เส้นทางที่ระบุซึ่งถูกบล็อกโดยกฎของฐานข้อมูล Firebase ในฐานข้อมูล
รายงานความเร็วตามประเภทการดำเนินการ
ความเร็วในการอ่านการดำเนินการ เวลาในการตอบกลับของเซิร์ฟเวอร์สำหรับคำขอของไคลเอ็นต์ในการอ่านข้อมูลจาก ฐานข้อมูล โดยทั่วไปเวลาในการอ่านจะปรับขนาดตามปริมาณข้อมูล ที่อ่าน แต่แม้แต่การอ่านขนาดเล็กบางรายการก็อาจล่าช้าเนื่องจากการ ดึงข้อมูลล่วงหน้าของแคช
ความเร็วในการดำเนินการเขียน เวลาในการตอบกลับของเซิร์ฟเวอร์สำหรับคำขอของไคลเอ็นต์ในการเขียนข้อมูลลงใน ฐานข้อมูล เขียนสเกลเวลาการดำเนินการพร้อมปริมาณข้อมูลที่เขียน
ความเร็วในการดำเนินการของ Connect เวลาในการตอบกลับของเซิร์ฟเวอร์สำหรับคำขอในการสร้างไคลเอ็นต์ฐานข้อมูล เวลาในการตอบสนองสำหรับคำขอการเชื่อมต่อส่วนใหญ่เกิดจากการเก็บบัญชีฝั่งเซิร์ฟเวอร์ในหน่วยความจำที่เกี่ยวข้องกับการจัดการการเชื่อมต่อ
ความเร็วในการดำเนินการออกอากาศ

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

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

พร็อพเพอร์ตี้ Permission Denied จะไม่รวมอยู่ใน รายงานความเร็วในการออกอากาศ

แบนด์วิดท์

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

รายงานแบนด์วิดท์ประกอบด้วยพร็อพเพอร์ตี้ต่อไปนี้

  • เส้นทาง: เส้นทางในฐานข้อมูลที่เกิดการดำเนินการ หากมีโหนดลูกมากกว่า 25 รายการ เครื่องมือโปรไฟล์จะยุบโหนดเหล่านี้เป็นเส้นทางหลัก

  • ทั้งหมด: ไบต์ขาออกหรือขาเข้าทั้งหมดที่ใช้ในการดำเนินการทั้งหมด ในเส้นทางที่ระบุ

  • จำนวน: จำนวนการดำเนินการที่เกิดขึ้นในเส้นทางที่ระบุ

  • ค่าเฉลี่ย: จำนวนไบต์ที่ดาวน์โหลดหรืออัปโหลดโดยเฉลี่ยในการดำเนินการที่เส้นทางที่ระบุ (ไบต์/เขียนหรือไบต์/อ่าน)

รายงานแบนด์วิดท์
ไบต์ที่ดาวน์โหลด ข้อมูลที่ใช้ผ่านการอ่านและการออกอากาศที่ส่งผ่าน SDK ของไคลเอ็นต์และ REST API
ไบต์ที่อัปโหลด ข้อมูลที่ใช้ผ่านคำขอเขียนที่เข้ามายังเซิร์ฟเวอร์ฐานข้อมูล การลบจะปรากฏเป็นการเขียนที่มี 0 ไบต์ในส่วนขาเข้า

คำค้นหาที่ไม่ได้จัดทำดัชนี

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

รายงานการค้นหาที่ไม่ได้จัดทำดัชนีจะแสดงพร็อพเพอร์ตี้ต่อไปนี้

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

การทำโปรไฟล์ขั้นสูง

หากต้องการดูการดำเนินการทั้งหมดที่ฐานข้อมูลจัดการ ให้ใช้แฟล็ก --raw เมื่อสร้างโปรไฟล์ฐานข้อมูล ดังนี้

firebase database:profile --raw

เอาต์พุตดิบยังมีข้อมูลไคลเอ็นต์สำหรับการดำเนินการแต่ละอย่าง เช่น สตริง userAgent และที่อยู่ IP ดูข้อมูลเพิ่มเติมเกี่ยวกับการดำเนินการต่างๆ ที่สร้างโปรไฟล์ใน Firebase Realtime Database ในFirebase Realtime Database ประเภทการดำเนินการ

เครื่องมือโปรไฟล์: ไม่ใช่เครื่องมือสำหรับการเรียกเก็บเงิน

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

ต่อไปนี้คือตัวอย่างการเข้าชมเครือข่ายที่พบบ่อยซึ่ง Firebase เรียกเก็บเงิน และไม่ได้รวมอยู่ในโปรไฟล์ฐานข้อมูลของคุณ

  • ค่าใช้จ่ายของโปรโตคอล: จำเป็นต้องมีการรับส่งข้อมูลเพิ่มเติมระหว่างเซิร์ฟเวอร์และไคลเอ็นต์ เพื่อสร้างและรักษาเซสชัน การรับส่งข้อมูลนี้อาจรวมถึงค่าใช้จ่ายของโปรโตคอลแบบเรียลไทม์ของ Firebase Realtime Database, ค่าใช้จ่ายของ WebSocket และค่าใช้จ่ายของส่วนหัว HTTP ทั้งนี้ขึ้นอยู่กับโปรโตคอลพื้นฐาน ทุกครั้งที่มีการสร้างการเชื่อมต่อ ค่าใช้จ่ายนี้รวมกับค่าใช้จ่ายในการเข้ารหัส SSL จะส่งผลต่อค่าใช้จ่ายในการเชื่อมต่อ แม้ว่าโดยปกติแล้วการเชื่อมต่อนี้จะไม่ใช้แบนด์วิดท์มากนัก แต่ก็อาจใช้แบนด์วิดท์จำนวนมากได้หากเพย์โหลดมีขนาดเล็กมากหรือคุณเชื่อมต่อบ่อยครั้งและใช้เวลาสั้นๆ
  • ค่าใช้จ่ายในการเข้ารหัส SSL: มีค่าใช้จ่ายที่เกี่ยวข้องกับค่าใช้จ่ายในการเข้ารหัส SSL ที่จำเป็นสำหรับการเชื่อมต่อที่ปลอดภัย โดยเฉลี่ยแล้ว ต้นทุนนี้ จะอยู่ที่ประมาณ 3.5 KB สำหรับการแฮนด์เชคครั้งแรก และประมาณ 40 B สำหรับ ส่วนหัวของระเบียน TLS ในแต่ละข้อความขาออก สำหรับแอปส่วนใหญ่ ค่าธรรมเนียมนี้จะเป็น เปอร์เซ็นต์เล็กๆ ของใบเรียกเก็บเงิน อย่างไรก็ตาม เปอร์เซ็นต์นี้อาจเพิ่มขึ้นมากหาก กรณีเฉพาะของคุณต้องใช้การแฮนด์เชค SSL จำนวนมาก เช่น อุปกรณ์ ที่ไม่รองรับตั๋วเซสชัน TLS อาจต้องใช้การแฮนด์เชคการเชื่อมต่อ SSL จำนวนมาก

อ่านเพิ่มเติมเกี่ยวกับการทำความเข้าใจและการประมาณค่าใช้จ่าย