데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

안녕하세요.


대용량 데이터 조인에 대해서 조금 다른 방법을 소개해 보겠습니다.


우선 Hash, Nested Loop 조인에 대해서는 알고 계셔야 이해가 되실것 같습니다.


이전 시대와는 다르게 데이터는 상당히 많이 증가했고

디스크도 많이 발전했지만

Standard 라이센스 기준으로 메모리는 증가하지 못했습니다.(128GB)


덕분에 상황에 따라서는 Hash 보다 NL 조인이 빠를수 있는 상황이 한번씩 생기고 있습니다.


조건

1. 메모리보다 훨씬 큰 조인 테이블

2. 적절한 Non-Clustered Index


예를들어 수테라의 데이터는 128G의 메모리에서 Hash Join을 하기 위해서 유예 해시 조인을 하게 됩니다.

이 과정에서 디스크에 수테라 +@(상황에 따라서는 몇배 이상)의 작업이 발생하게 됩니다.

(메모리에 다 못올리는 데이터를 작업하는 알고리즘 비용은 엄청납니다.

크기에 배수가 아니고 제곱처럼 늘어나기도 합니다.)


Nested Loop를 활용할수 있는 적절한 Non-clustered 인덱스를 만들 수 있는 상황에는 

디스크 비용이 줄어서 Hash Join보다 훨씬 빨리 Join을 끝낼 수도 있습니다.


상황에 따라 메모리보다 훨씬 큰 대용량 데이터 설계하실때는 Nested Loop Join도 한번 고려해 볼수도 있을것 같습니다.


감사합니다.




No. Subject Author Date Views
2133 SQL Server 네이티브 컴파일된 저장 프로시저 성능 모니터링 jevida(강성욱) 2019.03.25 455
2132 SQL Server 2017 소규모 시스템에서 향상된 리소스 사용 jevida(강성욱) 2019.03.25 262
2131 클러스터 컬럼스토어 인덱스(Clusterd Columnstore Index)에서 대량 인서트 작업시 발생하는 래치 경합 최소화 트릭 jevida(강성욱) 2019.03.25 408
2130 클러스터 컬럼스토어 인덱스(Clusterd Columnstore Index)에서 대량 인서트 작업시 발생하는 래치 경합 최소화 트릭 jevida(강성욱) 2019.03.25 395
2129 SQL Server 2016 향상된 복제 기능 – 배포 데이터베이스 클린업 향상 jevida(강성욱) 2019.03.25 294
2128 SQL Server 2017향상된 복제 기능 – 배포 데이터베이스의 AG 지원 jevida(강성욱) 2019.03.25 444
2127 SQL Server 2017 향상된 복제 기능 - 복제에이전트 프로필 매개변수의 동적 새로 고침 jevida(강성욱) 2019.03.25 493
2126 SQL Server update on Docker jevida(강성욱) 2019.03.25 383
2125 SQL Server 2017에서 향상된 UDF 실행 계획 jevida(강성욱) 2019.03.25 351
2124 ETL data error with MariaDB ODBC 3.0 (from Aurora to MS SQL) jevida(강성욱) 2019.03.25 507
2123 Run the SQL Server 2017 with Docker jevida(강성욱) 2019.03.25 432
2122 SQL Server Configuration Manager 실행 오류 (WMI 공급자 연결 오류) jevida(강성욱) 2019.03.25 471
2121 BULK INSERT 동시에 여러개 실행 향지 2019.01.30 856
» 대용량 데이터 조인에 대한 고민 ( Hash Join VS Nested Loop Join ) 향지 2018.04.04 4287
2119 How to check if Azure SQL is using In-Memory jevida(강성욱) 2018.03.31 3234
2118 MSSQL-CLI를 활용한 크로스플랫폼에서 SQL Server 관리하기 jevida(강성욱) 2018.03.31 3548
2117 SSMS – Search for execution plan jevida(강성욱) 2018.03.31 3730
2116 SQL Server Parallelism and Wait change (CXAPCKET, CXCONSUMER) jevida(강성욱) 2018.03.31 3943
2115 SQL Server Statistics Update row sampling rate and histogram step jevida(강성욱) 2018.03.31 3641
2114 SSMS – AlwaysOn Group Latency report jevida(강성욱) 2018.03.31 3381





XE Login