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

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

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

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

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

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

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

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

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

ความเร็ว

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

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

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

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

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

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

แบนด์วิดท์

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

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

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

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

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

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

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

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

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

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

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

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

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

firebase database:profile --raw

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

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

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

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

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

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