Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

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

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

  3. กด Enter เพื่อกรอกรายละเอียดและแสดงผล

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

เครื่องมือ Profiler รวบรวมข้อมูลที่เก็บรวบรวมเกี่ยวกับการดำเนินงานฐานข้อมูลของคุณและแสดงผลในสามประเภทหลัก: ความเร็ว , แบนด์วิดธ์ และ คำสั่ง unindexed

ความเร็ว

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

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

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

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

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

สถานที่ให้บริการอนุญาตปฏิเสธไม่ได้รวมอยู่ในรายงานออกอากาศความเร็ว

แบนด์วิดธ์

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

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

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

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

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

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

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

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

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

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

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

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

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

firebase database:profile --raw

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

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

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

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

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

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