SQL Server에서 검색 한 데이터는 전송을 위해 압축됩니까?


20

Microsoft SQL Server에서 검색된 데이터는 압축됩니까? 연결 문자열에 의해 제어되는 경우 특정 앱에서 사용 중인지 알 수있는 간단한 방법이 있습니까?

분석 도구를 검토 중이며 네트워크를 통해 데이터를 전송하는 데 몇 분이 걸릴 수 있습니다. 동일한 원격 서버의 압축 데이터 저장소에서 데이터를 가져 오면 성능이 향상되어야하는지 궁금합니다.

우리가 주제에 관한 한 데이터가 바이너리 또는 ASCII로 전송됩니까? 예를 들어, 값 12345INT열 에서 쿼리 되면 5 바이트 0x31, 0x32, 0x33, 0x34, 0x35로 전송됩니까? 값에 필요한 2 바이트; 또는 열에 필요한 4 바이트?

분명히, 나는 압축으로 데이터를 저장 하고 백업하는 것과 관련된 옵션이 있음을 이해 합니다. 데이터 전송 방법에 대해 묻고 있습니다.


압축은 내부 메커니즘입니다. 페이지는 디스크와 버퍼 풀에서 압축되지만 와이어의 일반 바이트 스트림입니다. @ShawnMelton은 이전에 와이어 형식 스니핑에 대해 블로그를 작성했으며 하이라이트로 희망적으로 응답 할 것입니다.
Mark Storey-Smith

내가 쓴 것은 암호화 여부에 더 집중했습니다. 정수 값을 시도하지 않았지만 읽을 수있는 형식으로 가져온 데이터를 선택할 수 있습니다. 유일한 방법 확실 단지 설정이 알고 그것을 시도 : mssqltips.com/sqlservertip/2436/...
숀 멜튼

@ MarkStorey-Smith : 답이 "아니오"인데 데이터가 압축되지 않습니까? 그것은 부끄러운 일이지만 이러한 큰 쿼리가 전송하는 데 오랜 시간이 걸리는 이유를 설명하는 데 도움이됩니다. 물리적으로 더 가까운 캐시가 필요한 것 같습니다. 당신이 그것을 실제 답변으로 만들고 싶다면, 나는 그것을 받아 들일 것입니다.
모든 거래의 존

@ShawnMelton : 확실히 올바른 방법으로 들리지만, 올바른 레이어에 도달하고 내가보고있는 것에 확신을 가질 수있는 충분한 네트워킹 배경이 없습니다. 다행히 저에게는 더 많은 기술과 시간을 가진 사람들이 있습니다!
모든 거래의 존

답변:


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에서에서 공연 섬유에이 알려진예측 네트워크 I / O에 영향을.


유선으로 전송되는 바이트 형식에 대해 잘 모르겠습니다. 이를 위해 일종의 패킷 스니퍼를 설정해야합니다 (또는 누군가 이미 이미 수행했으며 차임 할 것입니다).

압축의 영향에 관해서는 Fusion-IO 또는 기타 고급형 SSD 유형 솔루션을 사용하지 않는 한 거의 확실하게 현재 I / O 바운드이며 CPU 바운드가 아닙니다. 따라서 CPU 오버 헤드가있는 한 압축을 사용하면 더 빠른 성능을 볼 수 있습니다 (그러나 데이터는 전송 전에 압축되지 않기 때문에 네트워크 성능 이 변경되지 않습니다 ). 서버, 응용 프로그램, 데이터 또는 사용 패턴에 대해 전혀 알지 못한다고 말하면 압축이 실제로 성능을 저하 시키거나 데이터가 압축 비율이 좋은 후보가 아닌 경우가 될 수 있습니다.


적어도 10 초의 MB를 전송할 때 문제가되는 것은 확실히 네트워크입니다. RDP의 서버 자체에서 몇 초 만에 데이터를 쿼리 할 수 ​​있지만 서버는 물리적으로 상태가 없으므로 간단한 파일 op 또는 로컬 컴퓨터에서 로컬로 쿼리하여 비즈니스 위치의 컴퓨터에 데이터를 복사합니다. 몇 분이 걸립니다.
모든 거래의 존

따라서 복제, 미러링 또는 다른 작업을 수행하고 복사본에서 로컬로 데이터를 쿼리해야합니다. 이렇게하면 최종 사용자가 대기 시간을 느끼지 못합니다. 접근 방식은 데이터의 최신 상태에 따라 다릅니다. 또한 최종 사용자가 한 번에 10MB의 데이터를 쿼리해야하는지 여부
Aaron Bertrand

정확하게. BI 서버를 재배치 할 수 없다면 데이터의 양과 관련하여, 분석은 QlikView, ATM을 사용하여 수년간의 데이터와 많은 차원과 사실에 사용됩니다. 파일 압축 범위는 최대 100MB 이며 몇 년 동안의 데이터입니다.
모든 거래의 존

@JonofAllTrades 가장 좋은 의도를 가진 Meant ... 잘못된 솔루션으로 잘못된 문제를 해결하려고하는 것처럼 들립니다.
Mark Storey-Smith

@ MarkStorey-Smith : 대안은 무엇입니까? 많은 데이터가 있으며 WAN을 통한 액세스 속도가 느립니다. Aaron이 언급했듯이 일종의 로컬 캐시가 도움이 될 것입니다. 전송되는 데이터의 양을 줄이면 사용자의 분석 범위가 줄어들어 시각적 데이터 검색의 목적이 무효화됩니다.
모든 거래의 존

4

Microsoft SQL Server에서 검색된 데이터는 압축됩니까? 연결 문자열에 의해 제어되는 경우 특정 앱에서 사용 중인지 알 수있는 간단한 방법이 있습니까?

기술적으로 결과 매우 약간 압축 될 있습니다 .

SQL Server 2008 R2에서 처음 지원되는 TDS (Tabular Data Stream) 7.3B는 null 비트 맵 압축 이라는 것을 도입 하여 여러 개의 null을 포함하는 행을 일반적으로 null 필드 값에 필요한 것보다 적은 바이트를 사용하여 전송할 수 있습니다.

서버는 결과를 보낼 때 선택에 따라 일반 행과 널 비트 맵 압축 행을 혼합 할 수 있습니다. 클라이언트는이를 제어 할 수 없으므로 관련 클라이언트 측 구성 옵션을 사용할 수 없습니다.

널 비트 맵은 현재 TDS에서 지원하는 유일한 압축 형식입니다. 행이 널 비트 맵으로 압축되지 않은 경우 압축되지 않은 상태로 전송됩니다.

우리가 주제에 관한 한 데이터가 바이너리 또는 ASCII로 전송됩니까?

텍스트가 아닌 데이터 형식의 열 은 TDS 프로토콜에 의해 정의 된 이진 형식을 사용하여 전송됩니다 .


2

다른 곳 에서 언급했듯이이 문제를 해결하려면 VPN 설정 및 압축 사용을 고려할 수 있습니다.

다른 사람들이 말했듯이 SQL Server TDS 프로토콜에는 압축이 내장되어 있지 않습니다. 또한 기본적으로 암호화도 없다고 말할 가치가 있습니다. 암호화를 사용하려면 인증서를 사용하고 연결 문자열에이를 지정해야합니다.

두 문제를 해결하는 가장 쉬운 해결책은 암호화 및 압축이 활성화 된 VPN 터널을 여는 것입니다. 간단한 Microsoft PPTP는 두 가지 문제를 모두 해결하며 설정이 쉽습니다.


1

관련 데이터를 캐시하고 n 시간마다 동기화하는 로컬 SQL 인스턴스를 설정하지 않는 이유는 무엇입니까? 살펴볼 또 다른 사항은 큐브를 미리 계산하고 요약 셀에 도달하면 '세부 정보 가져 오기'버튼이 있습니다. 그런 다음 관련 세부 행만 가져옵니다.


첫 문장은 이 주석 과 비슷 합니다 .
Aaron Bertrand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.