มีการดึงข้อมูลจาก SQL Server ที่ถูกบีบอัดเพื่อส่งข้อมูลหรือไม่?


20

ดึงข้อมูลจาก Microsoft SQL Server ถูกบีบอัดหรือไม่ หากสิ่งนี้ถูกควบคุมโดยสตริงการเชื่อมต่อมีวิธีง่าย ๆ ที่จะบอกได้หรือไม่ว่าแอพใดกำลังใช้งานอยู่

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

ตราบใดที่เราอยู่ในหัวข้อฉันอยากรู้อยากเห็น: มีการส่งข้อมูลในรูปแบบไบนารีหรือ ASCII หรือไม่? ตัวอย่างเช่นหากค่า12345ถูกสอบถามจากINTคอลัมน์จะมีการส่งค่าเป็นห้าไบต์ 0x31, 0x32, 0x33, 0x34, 0x34, 0x35; สองไบต์ที่จำเป็นสำหรับค่านั้น หรือสี่ไบต์ตามต้องการสำหรับคอลัมน์?

เพื่อความชัดเจนฉันเข้าใจว่ามีตัวเลือกเกี่ยวกับการจัดเก็บข้อมูลด้วยการบีบอัดและสำรองข้อมูล ฉันถามเกี่ยวกับวิธีการส่งข้อมูล


การบีบอัดเป็นกลไกภายใน หน้าถูกบีบอัดบนดิสก์และในบัฟเฟอร์พูล แต่มีการสตรีมไบต์ปกติบนการโยง @ShawnMelton ได้บล็อกเกี่ยวกับการดมรูปแบบลวดก่อนหน้านี้และหวังว่าจะตอบสนองต่อไฮไลท์
Mark Storey-Smith

สิ่งที่ฉันเขียนเน้นไปที่การเข้ารหัส ฉันสามารถเลือกข้อมูลที่ฉันดึงในรูปแบบที่อ่านได้ แต่ฉันไม่ได้ลองค่าจำนวนเต็ม วิธีเดียวที่จะทราบได้อย่างแน่นอนคือเพียงแค่ติดตั้งและลองใช้งาน: mssqltips.com/sqlservertip/2436//
Shawn Melton

@ MarkStorey-Smith: ดังนั้นคำตอบคือ "ไม่" ข้อมูลไม่ถูกบีบอัด? เป็นเรื่องน่าละอาย แต่ช่วยอธิบายได้ว่าทำไมคิวรีขนาดใหญ่เหล่านี้อาจใช้เวลานานในการส่ง ดูเหมือนว่าฉันต้องการแคชที่ใกล้ชิดกับร่างกายมากขึ้น หากคุณต้องการที่จะให้คำตอบที่แท้จริงฉันจะยอมรับมัน
Jon of All Trades

@ShawnMelton: แน่นอนว่ามันเป็นวิธีที่เหมาะสมที่จะทำฉันแค่ไม่มีพื้นหลังเครือข่ายเพียงพอที่จะไปถึงเลเยอร์ที่ถูกต้องและมั่นใจในสิ่งที่ฉันเห็น โชคดีสำหรับฉันมีคนที่มีทักษะมากขึ้นและมีเวลามากขึ้นในมือของพวกเขา!
Jon of All Trades

คำตอบ:


16

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

มันถูกถามมาก่อน:

http://connect.microsoft.com/SQLServer/feedback/details/412131/enable-network-compression-compress-tds-stream

http://connect.microsoft.com/SQLServer/feedback/details/377479/wan-compression-option

รายการยังเปิดอยู่ดังนั้นอาจมีความหวังบ้าง ไม่มีวิธีควบคุมสิ่งนี้ผ่านสายเชื่อมต่อที่ฉันเคยเห็น

ในระหว่างนี้มีผลิตภัณฑ์บางอย่างที่อ้างว่าทำเช่น

http://www.nitrosphere.com/products/nitroaccelerator/

http://toonel.net/tcpany.htm

คุณยังสามารถกำหนดค่าเครือข่ายระหว่าง SQL Server ของคุณและแอพพลิเคชันเซิร์ฟเวอร์เพื่อสนับสนุนการบีบอัด (และสิ่งอื่น ๆ เช่นการเข้ารหัส) แต่คุณอยู่นอกเหนือขอบเขตของฉันที่นี่และฉันไม่แน่ใจว่าจะรองรับคุณลักษณะทุกอย่างของ SQL หรือไม่ เซิร์ฟเวอร์

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


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

สำหรับผลกระทบของการบีบอัดยกเว้นว่าคุณอยู่ใน Fusion-IO หรือโซลูชันชนิด SSD ระดับไฮเอนด์อื่น ๆ คุณเกือบจะแน่นอน I / O ที่ถูกผูกไว้ในปัจจุบันและไม่ใช่ CPU-bound ดังนั้นตราบใดที่คุณมีโอเวอร์เฮดของ CPU คุณควรเห็นประสิทธิภาพที่เร็วขึ้นด้วยการเปิดใช้งานการบีบอัด (แต่สิ่งนี้จะไม่เปลี่ยนประสิทธิภาพของเครือข่ายเนื่องจากข้อมูลจะไม่ถูกบีบอัดก่อนส่งข้อมูล) ฉันบอกว่าการไม่รู้อะไรเกี่ยวกับเซิร์ฟเวอร์แอปพลิเคชันของคุณข้อมูลหรือรูปแบบการใช้งานของคุณ - คุณอาจมีกรณีที่การบีบอัดทำให้ประสิทธิภาพลดลงหรือที่ข้อมูลไม่เหมาะสมสำหรับอัตราส่วนการบีบอัดที่ดี


เป็นเครือข่ายที่เป็นปัญหาอย่างน้อยเมื่อมีการส่งสัญญาณ 10s MB ฉันสามารถสืบค้นข้อมูลได้ในไม่กี่วินาทีบนเซิร์ฟเวอร์ใน RDP แต่กล่าวว่าเซิร์ฟเวอร์อยู่นอกสถานะแล้วจึงคัดลอกข้อมูลไปยังคอมพิวเตอร์ในที่ตั้งธุรกิจ - โดยใช้ไฟล์แบบง่ายหรือโดยการสอบถามจากคอมพิวเตอร์ที่อยู่ในเครื่องให้ฉัน - ใช้เวลาไม่กี่นาที
Jon of All Trades

ดังนั้นบางทีคุณควรทำซ้ำมิรเรอร์หรืออย่างอื่นและค้นหาข้อมูลในเครื่องจากการคัดลอก วิธีนี้ทำให้ผู้ใช้ปลายทางไม่รู้สึกถึงความล่าช้าในการตอบสนอง วิธีที่คุณใช้วิธีนี้ขึ้นอยู่กับความสดใหม่ของข้อมูลที่ต้องการ และไม่ว่าคุณต้องการผู้ใช้ปลายทางเพื่อค้นหาข้อมูล 10s MBs ในครั้งเดียว
Aaron Bertrand

เผง ถ้าเราไม่สามารถย้ายเซิร์ฟเวอร์ BI ได้ เกี่ยวกับปริมาณข้อมูลที่ใช้สำหรับการวิเคราะห์ (ใช้ QlikView, ATM) ดังนั้นปีของข้อมูลและมิติและข้อเท็จจริงมากมาย ไฟล์มีขนาดไม่เกิน 100 MB พร้อมการบีบอัดและนี่เป็นเพียงข้อมูลไม่กี่ปี!
Jon of All Trades

@JonofAllTrades หมายถึงความตั้งใจที่ดีที่สุด ... ดูเหมือนว่าคุณกำลังพยายามแก้ไขปัญหาที่ไม่ถูกต้องด้วยวิธีการแก้ปัญหาที่ผิด
Mark Storey-Smith

@ MarkStorey-Smith: ทางเลือกคืออะไร? มีข้อมูลจำนวนมากและช้าในการเข้าถึงข้าม WAN ของเรา แอรอนกล่าวถึงแคชในตัวบางชนิดจะช่วยได้ การลดปริมาณการส่งข้อมูลจะลดขอบเขตการวิเคราะห์ของผู้ใช้ซึ่งเอาชนะวัตถุประสงค์ของการค้นพบข้อมูลภาพ
Jon of All Trades

4

ดึงข้อมูลจาก Microsoft SQL Server ถูกบีบอัดหรือไม่ หากสิ่งนี้ถูกควบคุมโดยสตริงการเชื่อมต่อมีวิธีง่าย ๆ ที่จะบอกได้หรือไม่ว่าแอพใดกำลังใช้งานอยู่

เทคนิค, ผลสามารถถูกบีบอัดเล็กน้อย

ตารางข้อมูลสตรีม (TDS) 7.3B - สนับสนุนครั้งแรกโดย SQL Server 2008 R2 แนะนำสิ่งที่เรียกว่าการบีบอัดบิตแมป nullซึ่งช่วยให้แถวที่มีหลายค่า null จะถูกส่งโดยใช้ไบต์น้อยกว่าปกติจำเป็นโดยค่าเขตข้อมูล null

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

Null bitmap เป็นรูปแบบการบีบอัดรูปแบบเดียวที่ TDS รองรับในปัจจุบัน หากแถวไม่ได้บีบอัดบิตแมปเป็นโมฆะแสดงว่าไม่มีการบีบอัด

ตราบใดที่เราอยู่ในหัวข้อฉันอยากรู้อยากเห็น: มีการส่งข้อมูลในรูปแบบไบนารีหรือ ASCII หรือไม่?

คอลัมน์ที่มีชนิดข้อมูลที่ไม่ใช่ข้อความจะถูกส่งโดยใช้รูปแบบไบนารีที่กำหนดโดยโปรโตคอล TDS


2

ดังที่กล่าวไว้ในที่อื่น ๆเพื่อแก้ไขปัญหานี้คุณสามารถลองติดตั้ง VPN และเปิดใช้งานการบีบอัดได้

อย่างที่คนอื่น ๆ บอกว่าไม่มีการบีบอัดข้อมูลใน SQL Server TDS Protocol มันก็คุ้มที่จะบอกว่าโดยปริยายไม่มีการเข้ารหัสเช่นกัน ในการเปิดใช้งานการเข้ารหัสคุณต้องใช้ใบรับรองและระบุในสตริงการเชื่อมต่อ

ทางออกที่ง่ายที่สุดในการแก้ปัญหาทั้งสองคือการเปิดช่องทาง VPN ที่เปิดใช้งานการเข้ารหัสและการบีบอัด Simple Microsoft PPTP แก้ปัญหาทั้งสองอย่างและติดตั้งง่าย


1

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


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