แอปพลิเคชันใช้เซสชันมากเกินไปเมื่อใด


9

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

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

Oracle DBA ของคุณจะพิจารณาว่าแอปพลิเคชันที่ใช้เซสชัน (หรือการละเมิด) มากเกินไป ณ จุดใด

แก้ไข: ปัจจุบันหนึ่งในผู้บริโภคที่ใหญ่ที่สุดของเซสชันคือองค์ประกอบนี้ที่ใช้การโหลดเส้นทางโดยตรงเพื่อโหลดจำนวนมากหลายตาราง (20-30) พร้อมกัน

คำตอบ:


10

เช่นเดียวกับทุกสิ่งมันขึ้นอยู่กับ

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

การเปิดจำนวนเซสชันอาจเป็นปัญหาได้หาก DBA ไม่ได้ใช้การจัดการ PGA อัตโนมัติ หากคุณใช้การจัดการ PGA ด้วยตนเอง PGA จะได้รับการกำหนดค่าแบบต่อเซสชันดังนั้นแต่ละเซสชันสามารถจัดสรรแยกต่างหากSORT_AREA_SIZEสำหรับการเรียงลำดับระหว่างองค์ประกอบ PGA อื่น ๆ หากคุณสร้างเซสชันจำนวนมากในฐานข้อมูลโดยใช้การจัดการ PGA ด้วยตนเองและแต่ละเซสชันพยายามเพิ่มประสิทธิภาพการใช้งาน PGA ให้มากที่สุดคุณสามารถอดเซิร์ฟเวอร์ RAM และทำให้เกิดปัญหาประสิทธิภาพการทำงานสำหรับทุกคน สมมติว่าคุณใช้ Oracle 10.1 หรือใหม่กว่าอย่างไรก็ตามมีการจัดการ PGA อัตโนมัติ ในกรณีดังกล่าว DBA จะกำหนดค่าPGA_AGGREGATE_TARGET(หรือรวม PGA ในขนาดMEMORY_TARGET11g) และฐานข้อมูลจะดูแลให้มั่นใจว่าการรวม PGA ในทุกเซสชันนั้นถูก จำกัด เพื่อให้ฐานข้อมูลหมดทรัพยากร

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

ตอนนี้ถ้าคุณกำลังสร้างเซสชันจำนวนมากเพื่อให้คุณสามารถทำงานได้มากขึ้นในแบบคู่ขนานนั่นจะสร้างปัญหาเกี่ยวกับประสิทธิภาพมากกว่าจำนวนเซสชัน มันง่ายพอที่จะกำหนดค่าฐานข้อมูลเพื่อรองรับ 1,000 เซสชันตัวอย่างเช่นมันยากมากที่จะกำหนดค่าฐานข้อมูลที่จะไม่ตายในกองถ้าทั้ง 1000 เซสชันพร้อมกันออกแบบสอบถามเนื้อกับคลังข้อมูล หากแอปพลิเคชันของคุณใช้ทรัพยากรทั้งหมดที่มีอยู่ในฐานข้อมูลสำหรับการสืบค้นของคุณ DBA อาจต้องการพิจารณาใช้Oracle Resource Managerเพื่อจัดลำดับความสำคัญของแอปพลิเคชันและ / หรือผู้ใช้ที่แตกต่างกัน ตัวอย่างเช่น DBA สามารถกำหนดค่าตัวจัดการทรัพยากรเพื่อให้การใช้งาน CPU เท่ากับ 100% แอปพลิเคชันของคุณในการรวมรับ 50% ของ CPU แอปพลิเคชันอื่น ๆ ในการรวมได้รับ 25% และอื่น ๆ ทั้งหมดจะได้รับ 25% . หากไม่มีคำขออื่นใดที่รอการอนุมัติแอปพลิเคชันของคุณจะสามารถใช้ CPU ทั้งหมดได้ 100%

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

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