แบบสอบถามข้ามฐานข้อมูลมีราคาแพงใน SQL Server หรือไม่


15

แบบสอบถามข้ามฐานข้อมูลมีราคาแพงใน SQL Server หรือไม่ ฐานข้อมูลทั้งหมดอยู่ในอินสแตนซ์เดียวกัน


3
ฉันไม่เคยพบหลักฐานใด ๆ ที่บ่งบอกว่าเป็น ข้อยกเว้นเพียงอย่างเดียวที่ฉันสามารถนึกได้ (แต่ยังไม่ได้ทดสอบ) คือ (a) เครื่องมือเพิ่มประสิทธิภาพไม่สามารถได้รับประโยชน์จากความสัมพันธ์ที่ไม่สามารถระบุได้อย่างชัดเจน (เช่นสามารถได้รับประโยชน์จากคำจำกัดความของคีย์ต่างประเทศ ฐานข้อมูล) หรือ (b) มีปัญหาเกี่ยวกับสถิติที่เป็นปัญหาผ่านเซิร์ฟเวอร์ที่เชื่อมโยง แต่ฉันคิดว่าอาจมีบางกรณีที่แม้แต่ในฐานข้อมูลที่ผู้ใช้ที่เรียกใช้แบบสอบถามไม่สามารถดูสถิติได้ ไม่ทราบว่า (ข) เป็นจริงหรือไม่ - ยังไม่ได้ทดสอบเพิ่งรู้ว่าอาจเป็นปัญหาร้ายแรงในเซิร์ฟเวอร์
Aaron Bertrand

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

1
@ โทมัสคุณเห็นความแตกต่างอย่างชัดเจนโดยดูจากแผนค้นหาจริงหรือไม่
Max Vernon

@ โจนาธาน: คำจำกัดความของ "แพง" นั้นสัมพันธ์กับทางเลือกอื่น ดังนั้นคุณพยายามทำอะไรและคุณกำลังตัดสินใจระหว่างอะไร หากไม่มีข้อมูลเพิ่มเติมอาจเป็นไปได้ที่จะได้รับคำตอบที่ถูกต้องสำหรับคำถามนี้ที่มูลค่าหน้าตา แต่ในเวลาเดียวกันนั้นผิดอย่างยิ่งสำหรับสถานการณ์ของคุณ ทุกอย่างมีค่าใช้จ่าย แต่ค่าใช้จ่ายที่อาจเป็นได้ทั้งราคาถูกหรือแพงขึ้นอยู่กับสิ่งที่คุณกำลังเปรียบเทียบกับ และค่าใช้จ่ายในการค้นหา (เช่นเวลาการช่วงชิงและอื่น ๆ ) จะต้องมีการชั่งน้ำหนักเทียบกับค่าบำรุงรักษาต้นทุนฮาร์ดแวร์ ฯลฯ
โซโลมอน Rutzky

ฉันต้องการทราบค่าใช้จ่ายเมื่อเปรียบเทียบกับแบบสอบถามในตารางเดียวกัน
Jonathan Allen

คำตอบ:


6

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

ค่าใช้จ่าย DTC ในกรณีนี้อาจถูกมองว่าเป็นลบต่อประสิทธิภาพ โดยทั่วไปแล้วความแตกต่างจะเล็กน้อยแม้ว่า Microsoft อธิบายธุรกรรม DTC เช่น:

ธุรกรรมแบบกระจายมักใช้ทรัพยากรระบบที่สำคัญ

โปรโมชั่นการทำธุรกรรม

... ซึ่งจะแนะนำการลดประสิทธิภาพหากเซิร์ฟเวอร์ของคุณไม่สามารถให้ทรัพยากรที่ต้องการได้

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

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

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

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


1
If a local transaction spans two or more databases on the same instance of the Database Engine, the instance uses an internal two-phase commit to commit all of the databases involved in the transaction.- หากคุณพบเป็นอย่างอื่นโปรดรายงานข้อผิดพลาดในการเชื่อมต่อด้วยขั้นตอนการทำสำเนาที่ชัดเจน
Jon Seigel

1
บทความโปรโมชันธุรกรรมสำหรับธุรกรรม CLR
stacylaray

-2

ใน SQL Server 2014 ตารางเพิ่มประสิทธิภาพหน่วยความจำไม่รองรับธุรกรรมข้ามฐานข้อมูล คุณไม่สามารถเข้าถึงฐานข้อมูลอื่นจากธุรกรรมเดียวกันหรือแบบสอบถามเดียวกันที่เข้าถึงตารางที่ปรับให้เหมาะสมหน่วยความจำ คุณไม่สามารถคัดลอกข้อมูลจากตารางในฐานข้อมูลหนึ่งไปยังตารางที่ปรับให้เหมาะสมหน่วยความจำในฐานข้อมูลอื่นได้อย่างง่ายดาย http://msdn.microsoft.com/en-us/library/dn584627(v=sql.120).aspxธุรกรรมที่แจกจ่ายและฐานข้อมูลข้ามไม่ได้รับการสนับสนุนสำหรับการทำมิเรอร์ฐานข้อมูล / AOAG http://technet.microsoft.com/en-us/library/hh393530.aspx หากคุณกำลังจะใช้การผูกมัดเจ้าของระวังความเสี่ยงด้านความปลอดภัยhttp://msdn.microsoft.com/en-us/library/ms188676.aspx


ซึ่งใช้กับสถานการณ์ที่ "ทรัพยากรที่ครอบคลุมหลายอินสแตนซ์หรือเซิร์ฟเวอร์" เท่านั้น ในกรณีนี้เรากำลังพูดถึงอินสแตนซ์เดียวที่มีหลายฐานข้อมูล
Jonathan Allen

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