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

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

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

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

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

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

  3. กด Enter เพื่อกรอกโปรไฟล์และแสดงผล

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

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

ความเร็ว

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

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

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

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

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

คุณสมบัติการปฏิเสธ สิทธิ์ไม่รวมอยู่ในรายงานความเร็วการแพร่ภาพ

แบนด์วิธ

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

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

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

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

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

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

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

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

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

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

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

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

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

firebase database:profile --raw

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

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

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

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

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

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