อะไรทำให้ทรัพยากร“ แพง”?


10

ฉันกำลังอ่านจำศีลและฉันพบข้อความเช่น "การเชื่อมต่อ JDBC ที่เปิดในหลาย ๆ คำขอไม่ใช่สิ่งที่ดีเพราะเป็นทรัพยากรที่มีราคาแพง"

ทรัพยากรราคาแพงหมายถึงอะไร?

แก้ไข: ฉันกำลังเพิ่มสิ่งที่ผู้ใช้ที่ไม่รู้จักได้เพิ่มไว้เป็นความคิดเห็นด้านล่าง

หากการสร้างการเชื่อมต่อฐานข้อมูลมีราคาแพงแล้วทำไมไม่ใช้สิ่งเดียวกันซ้ำแล้วซ้ำอีก (ไม่ใช่แคช) แทนที่จะปิดและเปิดทุกครั้ง?


2
ราคาแพงหมายความว่ามันจะทำร้ายคุณถ้าคุณใช้บ่อยเกินไปหรือไม่ตามที่ระบุไว้
Alexander Gessler

คำตอบ:


20

ทรัพยากรที่มีราคาแพงคือสิ่งที่:

  • ใช้เวลานานในการสร้าง / เริ่มต้น การเชื่อมต่อฐานข้อมูลใด ๆ อาจใช้เวลานานกว่า 1-2 วินาทีในการจับมือ
  • ใช้หน่วยความจำมาก การอ่านการอัพโหลดไฟล์ทั้งหมดลงในอาร์เรย์ไบต์ในหน่วยความจำก่อนที่จะจัดเก็บจะใช้หน่วยความจำจำนวนมากเป็นระยะเวลาสั้น ๆ
  • ใช้ CPU รอบมาก การคำนวณในการรวบรวมข้อมูลจำนวนมากสามารถเก็บภาษี CPU ของคุณในขณะที่กำลังทำการคำนวณ

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


ฉันชอบที่จะเห็นด้วย แต่ต้องชี้ให้เห็นว่ามันขัดแย้งกับตัวอย่างที่ @Sun ให้ เนื่องจากการตั้งค่าการเชื่อมต่อมีราคาแพงคุณจะเปิดการเชื่อมต่อของคุณต่อไป
ผู้ใช้ที่ไม่รู้จัก

2
ในกรณีนี้ให้ฉันอธิบาย: ถ้าบางสิ่งบางอย่างใช้เวลานานในการสร้าง / เริ่มต้นคุณต้องการ จำกัด จำนวนครั้งที่คุณสร้าง / เริ่มต้นทรัพยากรนั้น การเชื่อมต่อฐานข้อมูลไม่ได้ใช้ทรัพยากรจำนวนมากในขณะที่เปิดอยู่ดังนั้นจึงควรรวมทรัพยากรเหล่านี้
Berin Loritsch

5

อาจมีหลายสิ่งขึ้นอยู่กับทรัพยากรเฉพาะ ดังนั้นคุณอาจมีดังต่อไปนี้:

  • หน่วยความจำต้องใช้งานเท่าใด
  • เวลาที่ใช้ในการเชื่อมต่อ
  • ค่าใช้จ่ายในการรักษาการเชื่อมต่อนั้น

และอื่น ๆ

สิ่งอื่น ๆ ที่อาจทำให้บางสิ่งบางอย่างมีราคาแพงอาจต้องใช้การเข้าถึงฮาร์ดไดรฟ์หรือเครือข่ายระหว่างการทำงาน


2

ราคาแพงควรขึ้นต้นด้วย "computationally" ค่าใช้จ่ายในการคำนวณใช้เพื่ออ้างถึงจำนวนเวลาหรือทรัพยากร (CPU, หน่วยความจำ, ดิสก์, แบนด์วิดท์เครือข่าย) ที่จำเป็นสำหรับการดำเนินการอัลกอริทึมหรือโปรแกรมให้เสร็จสมบูรณ์


2

ค่าใช้จ่ายในการเชื่อมต่อฐานข้อมูลมาจากหลายปัจจัย

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

ที่กล่าวว่าคุณต้องเปิดการเชื่อมต่อ (หรืออย่างน้อยการทำธุรกรรม) นานพอที่จะทำให้แน่ใจว่าการทำธุรกรรมของคุณผ่านการทดสอบกรด (ความสอดคล้องของอะตอมที่แยกได้ทนทาน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.