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

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

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

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

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

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

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

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

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

ความเร็ว

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

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

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

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

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

พร็อพเพอร์ตี้สิทธิ์ถูกปฏิเสธจะไม่รวมอยู่ในรายงานความเร็วในการออกอากาศ

แบนด์วิดท์

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

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

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

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

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

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

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

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

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

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

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

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

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

firebase database:profile --raw

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

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

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

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

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

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