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

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

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

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

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

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

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

ตีความผลลัพธ์ของคุณ

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

ความเร็ว

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

รายงานความเร็วมีคุณสมบัติดังต่อไปนี้:

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

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

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

คุณสมบัติ Permission Denied ไม่รวมอยู่ในรายงานความเร็วในการออกอากาศ

แบนด์วิธ

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

รายงานแบนด์วิธมีคุณสมบัติดังต่อไปนี้:

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

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

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

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

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

แบบสอบถามที่ไม่ได้จัดทำดัชนี

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

รายงานแบบสอบถามที่ไม่ได้จัดทำดัชนีจะแสดงคุณสมบัติต่อไปนี้:

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

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

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

firebase database:profile --raw

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

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

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

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

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

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