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

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

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

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

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

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

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

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

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

ความเร็ว

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

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

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

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

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

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

แบนด์วิดท์

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

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

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

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

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

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

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

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

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

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

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

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

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

firebase database:profile --raw

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

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

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

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

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

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