คำถามติดแท็ก query-performance

สำหรับคำถามเกี่ยวกับการปรับปรุงประสิทธิภาพและ / หรือประสิทธิภาพของการสืบค้นฐานข้อมูล

1
OPTION FORCE ORDER ปรับปรุงประสิทธิภาพจนกว่าแถวจะถูกลบ
ฉันมีแบบสอบถาม SQL Server 2008 ที่ค่อนข้างซับซ้อน (ประมาณ 200 บรรทัดของ SQL ที่มีความหนาแน่นพอสมควร) ซึ่งไม่ทำงานตามที่ฉันต้องการ เมื่อเวลาผ่านไปประสิทธิภาพจะลดลงจากประมาณ 0.5 วินาทีเป็นประมาณ 2 วินาที ดูที่แผนการดำเนินการมันค่อนข้างชัดเจนว่าการเรียงลำดับตัวเชื่อมใหม่จะทำให้ประสิทธิภาพดีขึ้น ฉันทำและมันลงไปถึงประมาณ 3 วินาที ตอนนี้แบบสอบถามมีคำแนะนำ "คำสั่งตัวเลือกการบังคับ"และชีวิตเป็นสิ่งที่ดี ตามมาด้วยฉันวันนี้ล้างฐานข้อมูล ฉันเก็บประมาณ 20% ของแถวที่จะดำเนินการในฐานข้อมูลที่เกี่ยวข้องอื่นใดนอกจากการลบแถว ... แผนปฏิบัติการที่ได้รับการทยอย มันผิดทั้งหมดจำนวนแถวย่อยบางอย่างจะกลับมาและ (ตัวอย่าง) แทนที่ a: <Hash> กับ <NestedLoops Optimized='false' WithUnorderedPrefetch='true'> ในขณะนี้เวลาของแบบสอบถามเริ่มจากประมาณ. 3 ถึงประมาณ 18 วินาที (!) เพียงเพราะฉันลบแถว หากฉันลบคำใบ้คำค้นหาฉันกลับไปใช้เวลาสอบถามข้อมูลประมาณ 2 วินาที ดีกว่า แต่แย่กว่านั้น ฉันได้ทำซ้ำปัญหาหลังจากกู้คืนฐานข้อมูลไปยังสถานที่และเซิร์ฟเวอร์หลายแห่ง …

2
ประสิทธิภาพช้าแทรกแถวน้อยลงในตารางขนาดใหญ่
เรามีกระบวนการที่ใช้ข้อมูลจากร้านค้าและอัปเดตตารางสินค้าคงคลังทั่วทั้ง บริษัท ตารางนี้มีแถวสำหรับทุกร้านค้าตามวันที่และตามรายการ ที่ลูกค้าที่มีร้านค้ามากมายตารางนี้จะมีขนาดใหญ่มาก - ตามลำดับ 500 ล้านแถว โดยทั่วไปกระบวนการอัปเดตคลังโฆษณานี้จะเรียกใช้หลายครั้งต่อวันเนื่องจากร้านค้าป้อนข้อมูล สิ่งเหล่านี้เรียกใช้การอัพเดทข้อมูลจากร้านค้าเพียงไม่กี่แห่ง อย่างไรก็ตามลูกค้าสามารถเรียกใช้สิ่งนี้เพื่ออัปเดต, พูดว่า, ร้านค้าทั้งหมดใน 30 วันที่ผ่านมา ในกรณีนี้กระบวนการหมุน 10 เธรดและอัปเดตคลังเก็บของแต่ละร้านในเธรดแยกต่างหาก ลูกค้าร้องเรียนว่ากระบวนการใช้เวลานาน ฉันได้ทำโพรเซสและพบว่ามีหนึ่งแบบสอบถามที่ INSERT ในตารางนี้ใช้เวลานานกว่าที่คาดไว้ บางครั้ง INSERT นี้จะเสร็จสมบูรณ์ใน 30 วินาที เมื่อฉันรันคำสั่ง ad-hoc SQL INSERT กับตารางนี้ (ล้อมรอบด้วย BEGIN TRAN และ ROLLBACK), ad-hoc SQL จะทำงานให้เสร็จสมบูรณ์ตามลำดับมิลลิวินาที ข้อความค้นหาที่ทำงานช้าอยู่ด้านล่าง แนวคิดคือการบันทึก INSERT ที่ไม่ได้อยู่ที่นั่นและภายหลังเพื่อปรับปรุงพวกเขาในขณะที่เราคำนวณบิตของข้อมูล ขั้นตอนก่อนหน้าในกระบวนการระบุรายการที่จำเป็นต้องได้รับการปรับปรุงทำการคำนวณบางอย่างและยัดผลลัพธ์ลงในตาราง tempdb Update_Item_Work กระบวนการนี้ทำงานใน 10 เธรดแยกกันและแต่ละเธรดมี …

1
วิธีรับประสิทธิภาพคิวรีที่แม่นยำ
ฉันพยายามปรับปรุงประสิทธิภาพของโพรซีเดอร์ที่เก็บไว้ เมื่อฉันรัน SP มันจะเสร็จสิ้นเกือบจะในทันทีราวกับมีบางสิ่งบางอย่างถูกแคช ฉันถูกบอกให้ใช้ SQL สองบรรทัดต่อไปนี้ก่อนดำเนินการ SP ใน SSMS: DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE เมื่อฉันรัน SP ด้วยโค้ดสองบรรทัดด้านบน SP จะเสร็จสิ้นในเวลาประมาณ 8 วินาที อย่างไรก็ตามนี่เป็นการให้เวลาดำเนินการจริงแก่ฉันจริง ๆ หรือไม่ ฉันจะรู้ได้อย่างไร

1
การเชื่อมต่อที่ไม่ได้ใช้งานมากเกินไปอาจส่งผลต่อประสิทธิภาพของ PostgreSQL 9.2 ได้หรือไม่
บางคำสั่งบนเซิร์ฟเวอร์ฐานข้อมูลของฉันดูเหมือนจะใช้เวลานานในการตอบสนองและฉันเชื่อว่าการใช้งาน CPU สูง เมื่อทำงานps auxฉันเห็นการเชื่อมต่อ ~ 250 "ไม่ได้ใช้งาน" (ซึ่งฉันเชื่อว่ามีมากเกินไป) ฉันยังไม่ได้เริ่มทำการวินิจฉัยอย่างเต็มรูปแบบ แต่ฉันอยากรู้ว่านี่เป็นจุดเริ่มต้นที่ดีหรือไม่ ฉันกำลังใช้ PgBouncer กับการรวมธุรกรรมระดับเดียวกัน ฉันสงสัยว่าฉันสามารถลดจำนวนการidleเชื่อมต่อได้อย่างง่ายดายด้วยการปรับขนาดพูล อย่างไรก็ตามฉันไม่ต้องการเริ่มทำการเปลี่ยนแปลงมากเกินไปเว้นแต่จะมีเหตุผลที่ดีที่จะทำ การidleเชื่อมต่อจำนวนมากใน PostgreSQL 9.2 มีผลต่อประสิทธิภาพหรือไม่ ขอบคุณมาก ๆ!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.