[LA DB 스터디] 2016-11-01 LA 한인 SQL Server 스터디 모임(가칭)

 

안녕하세요. 강성욱 입니다.

저희 스터디 그룹은 매주 화요일 8PM ~ 10PM (2시간) 스터디를 진행하며(상황에 따라 장소 및 시간은 변경 될 수 있습니다.) SQL Server를 함께 공부하고 업계의 다양한 트렌드 및 이슈를 공유하며 기술 및 네트워크를 공유하는 모임 입니다. LA 한인 SQL Server 스터디에 참여하고 싶은 분들은 카카오톡(ID : SQLMVP), 페이스북 메신져, email(jevida@naver.com) 등으로 연락 주시기 바랍니다. 사내 오피스에서 진행되기 때문에 출입이 자유롭지 못한 관계로 반드시 사전에 협의가 되어야 합니다.

 

스터디는 회원제로 운영되며 월회비($20)가 있습니다. 불성실 회원의 경우 회칙에 따라 참여 또는 기타 활동이 제한될 수 있습니다.

 

오늘의 주제는 SQL Server Internals Storage 부분에 대해서 강성욱님께서 발표해 주셨습니다. 지난 시간에 발표했던 스토리지 내용을 이어서 실제 SQL에서 발생할 수 있는 Disk corruption 부분에 대해서 살펴보고 SQL 장애 상황을 재현하여 해결하는 과정을 데모를 통해 직접 보여주었습니다.

 

 

스토리지에 대한 세션은 2주에 걸쳐 진행되었으며 1부에서는 디스크의 유형 및 특징, RAID 구성 등 디스크에 대한 일반적인 기술에 대해서 다루었으며 금일 2부에서는 디스크의 장애 유형, 해결 방법, SQL에서 디스크를 효율적으로 사용하는 방법에 대해서 살펴보았습니다.

 

 

이번 발표는 한국의 SQLTAG 스터디(http://sqltag.org)에서 2012년에 발표했던 내용으로 LA 한인 SQL Server 스터디에서 한번 더 진행하게 되었습니다. 최근에는 스토리지에도 세대교체가 진행되어 대부분의 많은 DB 시스템들이 SSD를 도입하여 사용하고 있어 일부 자료는 트렌드에 뒤쳐진 느낌도 있지만 실제 디스크 커럽션이나 장애 복구에 대한 내용은 여전히 필요한 기술로 직접 데모를 통한 실습으로 실제 데이터를 복구하는 방법에 대해서 다시 한번 살펴 볼 수 있는 시간이었습니다. 아래 이미지는 지난주에 이어 금일 발표했던 2차분의 발표 슬라이드 입니다.

 

 

 

 

 

 

 

파일은 서로 다른 배열에 위치하는 것이 좋다. 가장 좋은 것은 데이터 파일과 로그 파일, tempdb, 백업파일이 서로 다른 배열에 있는 것이다.

 

 

 

일반적으로 로그파일은 1+0에 위치하는것이 좋다. 로그 파일은 많은 쓰기가 필요 하다. RAID 1+0은 빠른 쓰기에 탁월하다. 최적의 디스크 구성은 비즈니스 및 스토리지 벤더의 권고를 참고하여 선택할 수 있도록 한다.

 

 

 

 

가능하면 백업은 디스크를 분리하자. 동일한 드라이브를 사용하지 않기 때문에 드라이브를 읽어서 빠른 기록이 가능하다. 데이터는 데이터드라이브를 스트리밍하고 백업도 가능한 빨리 기록 한다. 그리고 별도 배열에 있기 때문에 데이터 드라이브 손상시 백업이 손실 되지 않는다.

 

 

 

 

 

큰 용량의 소수 디스크보다 적은 용량의 많은 드라이브를 사용하는 것이 성능 면에서는 유리하다.

스핀들 파워라고 하여 디스크의 전체 성능을 고루 사용할 수 있도록 구성한다.

 

 

 

PHYSICAL_ONLY 페이지 및 레코드 헤더의 물리적 구조의 무결성 및 데이터베이스 할당 일관성으로 검사를 제한한다. 이 검사는 데이터베이스의 물리적 일관성 검사의 오버헤드를 줄이기 위한 목적으로 사용하며 사용자의 데이터를 손상시킬 가능성이 있는 조각난 페이지와 체크섬 오류, 그리고 일반적인 하드웨어 오류도 찾을 수 있다.

DBCC CHECKTABLE 전체 실행이 완료되는 데 걸리는 시간이 이전 버전보다 상당히 길 수 있다.. 그 이유는 1)논리적 검사가 더 포괄적 2)검사할 기본 구조 일부가 더 복잡함.

따라서 새로운 기능을 포괄할 수 있도록 여러 가지 검사 작업이 새로 도입되었다. 대형 데이터베이스에서는 PHYSICAL_ONLY 옵션을 사용하여 DBCC CHECKDB 실행 시간을 훨씬 단축시킬 수 있으므로 생산 시스템에서의 잦은 검사 작업에는 이 옵션을 사용하는 것이 좋다. 하지만 정기적으로 DBCC CHECKDB 전체 실행을 수행하는 것이 좋다. 이러한 실행 빈도는 개별 비즈니스 및 프로덕션 환경과 관련된 여러 가지 요소에 따라 달라진다. PHYSICAL_ONLY는 항상 NO_INFOMSGS와 함께 사용되며 어떠한 복구 옵션과도 함께 사용할 수 없다.

 

 

 

REPAIR_REBUILD데이터 손실 가능성이 없는 복구를 수행한다. 여기에는 비클러스터형 인덱스의 누락 행 복구와 같은 빠른 복구 작업과 인덱스 다시 작성과 같이 시간이 오래 걸리는 복구가 모두 포함된다. REPAIR_REBUILD FILESTREAM 데이터 관련 오류를 복구하지 않는다.

 

 

그리고 나머지 실습에서 데모 데이터베이스를 생성하고 Hexedit 툴을 이용하여 디스크의 바이너리를 강제로 수정하여 실제 디스크 일관성 오류 상황을 재현하고 이를 위의 방법을 이용하여 데이터를 복구하는 방법에 대해서 살펴보았습니다.

 

2016-11-01 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

LA 한인 SQL 스터디 모임, LA IT 모임, DB 스터디, SQL 스터디, SQL Server, DB 스터디, LA SQL Server, sqlmvp, SQL Angeles

[LA DB 스터디] 2016-10-25 LA 한인 SQL Server 스터디 모임(가칭)

 

안녕하세요. 강성욱 입니다.

저희 스터디 그룹은 매주 화요일 8PM ~ 10PM (2시간) 스터디를 진행하며(상황에 따라 장소 및 시간은 변경 될 수 있습니다.) SQL Server를 함께 공부하고 업계의 다양한 트렌드 및 이슈를 공유하며 기술 및 네트워크를 공유하는 모임 입니다. LA 한인 SQL Server 스터디에 참여하고 싶은 분들은 카카오톡(ID : SQLMVP), 페이스북 메신져, email(jevida@naver.com) 등으로 연락 주시기 바랍니다. 사내 오피스에서 진행되기 때문에 출입이 자유롭지 못한 관계로 반드시 사전에 협의가 되어야 합니다.

 

스터디는 회원제로 운영되며 월회비($20)가 있습니다. 불성실 회원의 경우 회칙에 따라 참여 또는 기타 활동이 제한될 수 있습니다.

 

오늘의 주제는 SQL Server Internals Storage 부분에 대해서 강성욱님께서 발표해 주셨습니다. 스토리지에서 사용되는 디스크의 종류, 성능에 대한 이야기, 스토리지 타입 및 RAID 구성 및 노하우 등 SQL 뿐만 아니라 일반적인 시스템 관점에서 자세하고 쉽게 설명해 주었습니다.

 

 

스토리지에 대한 세션은 2주에 걸쳐 진행될 예정이며 1주차에는 디스크에 대해서 자세히 살펴보는 시간을 가졌습니다. 2주차에는 실제 디스크에서 장애가 발생하였을 때 SQL 서버에서 발생할 수 있는 문제점을 공유하고 이를 해결하기 위한 방법에 대해서 다루도록 하겠습니다.

 

이번 발표는 한국의 SQLTAG 스터디(http://sqltag.org)에서 2012년에 발표했던 내용으로 LA 한인 SQL Server 스터디에서 한번 더 진행하게 되었습니다. 이번 발표를 하면서 느낀점은 2012년의 경우 SSD가 등장한지 오래되지 않은 시간으로 아직 SSD에 대한 정보 부족 및 도입에 대한 많은 고민(성능, 비용, 관리 등)이 필요한 시기였지만 4년이 지난 지금 SSD는 대중화 되었으며 성능 또한 그 시절에 비해 비약적으로 발전하여 그때의 트렌드 및 성능 자료가 많이 달라졌다는 것을 느낄 수 있었습니다. 물론 SQL Server 부분에서도 많은 변화가 있었지만 하드웨어 분야에 있어서는 너무 많은 발전이 이루어져 시스템 관점에서는 새로운 시대가 열린 듯 합니다. 기존에 DBA들이 많이 고민했던 부분들에 대해서 고민할 필요가 없어졌으며 튜닝에 대한 접근도 많이 달라져야 한다는 것을 다시 한번 느낄 수 있었습니다.

 

아래 이미지는 금일 진행했던 1차분의 발표 슬라이드 입니다. 2012년에 만들어졌던 자료로 다소 현재의 성능과 맞지 않은 부분도 있지만 전체적인 디스크에 대한 개념을 정리하는 차원에서 다루어보았습니다.

 

 

 

NCQ(Native Command Queuing)는 특정 상황에서 SATA장치의 성능을 향상시키기 위해 도입 되었다. IO 요청을 우선 Queue에 저장한 다음 전체 헤드의 움직임을 최소화 할 수 있도록 요청 순서를 재배열하는 방식이다. IO가 많이 일어나는 서버에서 주로 사용하는 방식이다. 최대 명령어 길이는 32(실제 31)이다. SCSI에서 사용하였다.

 

 

 

DMA 33에서는40, DMA 66 이상에서는 80핀 사용. 이때 80핀에서도 신호 대역폭을 증가 하는 대신 신호 간섭 때문에 (1,3,5), (2,4,6) 이렇게 번갈아 가며 신호를 전송하였다. 이처럼 신호 간섭으로 인해 실제 병렬전송에서 좋은 성능을 나타내지 못하였다.

 

 

 

SSD는 기존의 마그네틱 플래터 대신 플래쉬 메모리를 사용한다. 기존의 하드 드라이브 경우에는 하드 드라이브는 회전하는 자기 플래터와 헤드가 드라이브에 내장되어 오른쪽 섹터로 움직인다. 요청이 들어오면 드라이브 헤드는 레코드 플레이어 위로 바늘을 움직인다. 하드 드라이브가 다른 플래터에 엑세스 해야하는 경우 지연이 발생한다. OLTP에서는 랜덤 액세스가 매우 중요하다. SSD는 이런 패널티가 없이 모든 데이터에 엑세스가 가능하다. 또한 진동에 민감하지 않다.

 

 

 

데이터센터 안의 수 백개의 하드 드라이브 랙에서는 진동과 소음이 발생한다. 이는 디스크의 성능을 떨어 저하시킨다. 실제 한 연구 결과에서는 하드 드라이브 랙에 소음을 가했을 경우 작업 지연의 원인으로 밝혀 졌다.

 

 

 

인터리빙은 연속 블록을 읽을 때 한 블록을 읽은 후 OS에 전달하고 다음 섹터를 바로 읽을 수 없기에 데이터를 일정한 블록 단위로 배치하여 결과를 수신하는데 걸리는 시간을 단축한 것이다.

 

 

 

Raid 5는 드라이브가 데이터의 동일한 부분을 공유한다는 점에서 RAID 0과 유사하지만 하나의 드라이브 실패로 전체 배열이 다운되지 않도록 패리티를 추가하여 데이터를 보호한다. 어느 한 드라이브가 실패하면 다른 드라이브에서 그 내용을 리빌드 한다. 패리티를 계산하는 것은 프로세서 집약적이라 데이터 쓰기를 할 때 여러 블록의 패리티 데이터를 만들기 위해 검사해야 하는데 이때 성능 저하가 발생한다. 최근에는 RAID 컨트롤러의 발달로 전문 프로세서가 빠르게 계산될 수 있도록 디자인 되었다. 예를들어 500G가 드라이브 4개가 있으면 실제 용량은 1.5테라 이다. 다른 드라이브가 추가되는 동안에도 배열을 유지 할 수 있으며 서버다운 없이 가능하다.  리스트라이프가 되는 동안 느려질 수 있으나 추가 스핀들로 인하여 성능이 향상된다. RAID5는 하나의 디스크 깨짐은 방지하지만 2개 이상일때는 보호할 수 없다. RAID6 2개까지 가능하다. SATA처럼 큰 디스크에서는 리빌드 시간이 오래 걸릴 수 있다.

 

 

 

파티션 정렬은 추가 비용 없이 스토리지를 향상 할 수 있는 가장 쉽고 효과적인 방법이다. DBA는 하드웨어 구성이나 스키마 변경없이 작업이 가능하다. 아래 그림에서 상단 파티션은 정렬되어 있지 않아 데이터가 여러 섹터에 걸쳐 있기 때문에 페널티를 얻게 된다.

 

 

 

윈도우 2008 부터는 새로운 파티션은 자동으로 오프셋이 1024로 작동한다.2008 이전의 경우에는 수동으로 정렬 해 주어야 한다. 이때 방법은 아래의 4가지로 정의 할 수 있다. 이 작업은 다운타임을 필요로 한다. 따라서 기존 서버보다 새로 추가되는 서버에 도입하면 좋을 듯 하다.

 

 

 

 

SQL Server에서 가장 손쉽게 성능을 얻을 수 있는 방법은 MS의 권장 가이드대로 64K를 지정하는 방식이다. 그러나 일부 경우데 따라 다르게 지정 해야한다 OLTP에서는 8킬로의 작은 단위가 성능에 이익이 있을 수 있다. 포맷을 한 후에는 설정을 변경할 수 없다.

 

 

하드디스크는 데이터를 저장하는 기본 단위로 섹터를 사용한다. 하드디스크는 기본 저장소 격인 섹터가 여러 개 모인 큰 덩어리인 셈이다. 보통 하드디스크 섹터는 512B로 나뉘어져 있고 섹터마다 에러 수정 코드 ECC를 하나씩 갖고 있다. 4k 어드밴스드 포맷이란 섹터 8개를 합치고 ECC를 하나만 단 걸 말한다. 4k란 명칭은 512B 8개를 합한 4,096B를 섹터 단위 하나로 붙여져서 생긴 말이다. 4k 포맷을 쓰면 ECC가 차지할 자리가 줄어 하드디스크의 물리적 공간은 78% 늘어난다. 같은 용량이라도 포맷 기술 차이 하나로 실제로는 더 많은 데이터를 담을 수 있게 되는 셈이다. 또 액세스 횟수까지 덩달아 줄어 하드디스크 속도까지 빨라지는 효과를 볼 수 있다. 여러 번 액세스하면 에러 발생 확률도 높아지기 마련인데 섹터 단위를 크게 묶어 이 문제를 해결한 것이다.

 

 

다음 주에는 디스크 성능을 테스트하기 위한 툴 소개 및 디스크 커럽션, 장애 유형 및 해결 방안에 대해서 공유하도록 하겠습니다. 오늘도 늦은 시간까지 스터디 하시느라 고생 많으셨습니다.

 

2016-10-25 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

LA 한인 SQL 스터디 모임, LA IT 모임, DB 스터디, SQL 스터디, SQL Server, DB 스터디, LA SQL Server, sqlmvp, SQL Angeles

[LA DB 스터디] 2016-10-04 LA 한인 SQL Server 스터디 모임(가칭)

 

안녕하세요. 강성욱 입니다.

저희 스터디 그룹은 매주 화요일 8PM ~ 10PM (2시간) 스터디를 진행하며(상황에 따라 장소 및 시간은 변경 될 수 있습니다.) SQL Server를 함께 공부하고 업계의 다양한 트렌드 및 이슈를 공유하며 기술 및 네트워크를 공유하는 모임 입니다. LA 한인 SQL Server 스터디에 참여하고 싶은 분들은 카카오톡(ID : SQLMVP), 페이스북 메신져, email(jevida@naver.com) 등으로 연락 주시기 바랍니다. 사내 오피스에서 진행되기 때문에 출입이 자유롭지 못한 관계로 반드시 사전에 협의가 되어야 합니다.

 

스터디는 회원제로 운영되며 월회비($20)가 있습니다. 불성실 회원의 경우 회칙에 따라 참여 또는 기타 활동이 제한될 수 있습니다.

 

오늘의 주제는 데이터 타입(Data Type)으로 테이블을 생성할 때 데이터 특성에 따라 어떤 데이터타입을 사용해야 할지, 또는 데이터를 형 변환하여 사용하거나 연산을 할 때 데이터 타입에 따라 결과가 어떻게 표현되는지에 대한 내용을 살펴보고 실제 현업에서 발생할 수 있는 오류 케이스에 대해서 살펴 보았습니다.  저 또한 오랫동안 SQL Server를 운영하면서 모든 데이터 타입을 사용하지는 않았지만 이번 기회를 통해 데이터 타입에 대한 특성에 대해서 다시 한번 생각할 수 있는 의미있는 시간이었습니다.

 

 

오늘 발표는 Ryan(이하 라이언)님께서 진행해 주셨습니다. 라이언님은 소프트웨어 엔지니어로 금융분야에 개발 경험 및 지식이 많으신 분입니다. 오늘 데이터 타입을 발표하면서 금융권에서 사용하는 데이터 타입과 과거 데이터 타입이 다양하지 않았을 때 발생했던 해프닝등을 사례로 설명해 주셨는데 정말 재미있는 시간이었습니다. 

 

데이터 타입을 발표 첫 시작은 SQL Server에서 사용하는 데이터 타입을 카테고리화 하여 각 카테고리별로 설명을 진행해 주셨습니다. 발표 자료를 너무 잘 준비해주셔서 그리고 많이 준비해주셔서 2시간의 스터디 시간동안 다 진행하지 못해 다음 주 한번 더 발표를 진행해 주시기로 하였습니다. 데이터 타입에 대한 모든 것을 파헤쳐 보는 시간이었습니다.

 

 

늘 느끼는 것이지만 발표 준비를 하면 발표 준비를 하는 사람이 가장 많은 공부가 되는 듯 합니다. 라이언님께서도 발표 준비를 하면서 자신이 가장 많은 공부가 되었다고 합니다. 이번 발표에서 우리가 현업에서 쉽게 오해 또는 오류를 범할 수 있는 케이스를 잘 정리해 주셨는데 그 중 하나가 int 데이터 타입을 초과하는 숫자를 연산하였을 때 자동으로 NUMERIC으로 연산되는 케이스를 소개하면서 실제 현업에서 주의할 것을 당부하셨습니다.

관련 자료 : https://msdn.microsoft.com/ko-kr/library/ms187745.aspx

+, -, *, / 또는 % 산술 연산자를 사용하여 int, smallint, tinyint 또는 bigint 상수 값을 float, real, decimal 또는 numeric 데이터 형식으로 암시적 또는 명시적으로 변환하는 경우 SQL Server에서 데이터 형식과 식의 전체 자릿수를 계산할 때 적용하는 규칙은 쿼리에 자동으로 매개 변수가 지정되는지 여부에 따라 결과가 달라집니다.

그러므로 경우에 따라 쿼리의 비슷한 식이 다른 결과를 생성하기도 합니다. 쿼리에 자동으로 매개 변수가 지정되지 않는 경우 상수 값은 먼저 전체 자릿수가 상수 값을 보유할 수 있을 만큼 큰 numeric으로 변환된 다음 지정된 데이터 형식으로 변환됩니다. 예를 들어 상수 값 1 numeric (1, 0)으로 변환되고 상수 값 250 numeric (3, 0)으로 변환됩니다.

쿼리에 자동으로 매개 변수가 지정되는 경우 상수 값은 최종 데이터 형식으로 변환하기 전에 항상 numeric (10, 0)으로 변환됩니다. / 연산자가 들어 있는 경우 비슷한 쿼리 간에 결과 형식의 전체 자릿수뿐만 아니라 결과 값도 달라질 수 있습니다. 예를 들어 자동으로 매개 변수가 지정되며 SELECT CAST (1.0 / 7 AS float) 식이 포함된 쿼리의 결과 값은 자동으로 매개 변수가 지정되지 않는 동일한 쿼리의 결과 값과 달라집니다. 자동으로 매개 변수가 지정되는 쿼리의 결과는 numeric (10, 0) 데이터 형식에 맞게 잘리기 때문입니다.

 

 

 

SQL Server에서 큰 숫자 데이터 형식을 다루다 보면 NUMERIC DECIMAL 형식이 있는데 이 둘의 차이점은 무엇인지(결론 : 차이점 없습니다.), 전체 자릿수에 따라 데이터 저장소는 어떻게 차지하는지에 대해 살펴보고 자릿수에 따라 반환되는 결과 값에 대해서도 상세히 설명해 주셨습니다.

 

 

발표 중간에 궁금한 사항에 대해서는 그 자리에서 즉시 테스트를 진행하면서 궁금증을 풀어가며 진행되었으며 데이터 타입 및 사용법에 대한 설명을 실습과 함께 병행하여 이해하기 쉽게 전달해 주셨습니다.

 

 

이번 데이터 타입 시간은 너무 준비를 열심히 해주셔서 2시간 동안 절반 정도 밖에 진행하지 못했지만(사실 너무 재미있어서 다양한 테스트를 하는데 시간을 많이 사용하였습니다.) 사실 이 부분은 너무 중요하면서도 많은 사람들이 대부분 대충 이해하고 넘어가는 파트여서 이번 스터디에서는 심도있게 다루어야 할 필요성을 느껴 다음주에 이어서 나머지 내용을 발표하기로 하였습니다.

 

스터디 시간이 마무리되고 정리하는 단계에서는 데이터 길이에 따라 문자열이 잘리면서 데이터가 입력되는데 이때 오류가 반환되지않는 케이스에 대해서도 살펴 보았습니다. 프로시저 개발 및 파라메터의 데이터 타입 및 길이를 잘 정의해야함을 다시 한번 생각해보는 시간이었습니다.

create table tbl_a (col_1 varchar(10))

 

-- case a (fail)

insert into tbl_a values ('adsfewtrqwetewrfdsf')

 

-- case b (success, 데이터 잘림)

declare @a varchar(10)

set @a = 'aerfsadfsafdsafdsafdsaf'

insert into tbl_a values (@a)

 

-- case c (success, 데이터 잘림)

declare @b varchar(50)

set @b = @a

insert into tbl_a values (@a)

 

 

select * from  tbl_a

 

 

 

그리고 덤으로 최신 트렌드를 공유하는 시간으로 SQL Server 2016에 도입된 PolyBase DB(Azure Hadoop)에 대해서 간단히 소개를 하였습니다.

 

 

 

오늘도 유익한 시간이었습니다. SQL 뿐만 아니라 각 현업에서 겪은 다양한 운영 이슈, 프로그램 개발 이야기 등 다양한 내용을 공유하여 너무 좋았습니다. 모두 고생 많으셨습니다. 다음주에 뵙겠습니다.

 

2016-10-04 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

LA 한인 SQL 스터디 모임, LA IT 모임, DB 스터디, SQL 스터디, SQL Server, DB 스터디, LA SQL Server, sqlmvp, SQL Angeles

[LA DB 스터디] 2016-09-27 LA 한인 SQL Server 스터디 모임(가칭)

 

안녕하세요. 강성욱 입니다.

저희 스터디 그룹은 매주 화요일 8PM ~ 10PM (2시간) 스터디를 진행하며(상황에 따라 장소 및 시간은 변경 될 수 있습니다.) SQL Server를 함께 공부하고 업계의 다양한 트렌드 및 이슈를 공유하며 기술 및 네트워크를 공유하는 모임 입니다. LA 한인 SQL Server 스터디에 참여하고 싶은 분들은 카카오톡(ID : SQLMVP), 페이스북 메신져, email(jevida@naver.com) 등으로 연락 주시기 바랍니다. 사내 오피스에서 진행되기 때문에 출입이 자유롭지 못한 관계로 반드시 사전에 협의가 되어야 합니다.

 

스터디는 회원제로 운영됩니다. 불성실 회원의 경우 회칙에 따라 참여 또는 기타 활동이 제한될 수 있습니다.

 

오늘의 주제는 인덱스(INDEX)로 인덱스가 무엇인지, 어떤 종류의 인덱스가 있는지, 실제 인덱스는 어떤 원리로 동작하는지, 인덱스와 DB성능과의 관계 등에 대해서 알아 보았습니다. 많은 개발자 또는 DBA분들이 인덱스만 있으면 무조건 빠르지 않을까? 라고 단순히 생각하는데, 인덱스에도 전략이 필요하며 인덱스의 개념과 원리 + 비즈니스의 중요성에 대해서 다시 한번 살펴보는 소중한 시간이었습니다.

 

 

 

오늘 발표는 SK님께서 준비해주셨습니다. 흔히 인덱스를 설명할 때 사전, 또는 목차 등으로 간단하게 생각하는데, 이번 인덱스 시간에는 단순한 개념이 아닌, 실제 인덱스가 움직이는 원리, 인덱스 생성시 주의해야 할 점, 인덱스 컬럼에 대한 전략, DB 성능과의 관계에 대해서 심도 있게 다루었습니다.

 

 

인덱스의 종류와 인덱스가 어떤 구조로 이루어지는지, 인덱스가 데이터를 어떤 방식으로 찾아가는지, 인덱스 페이지는 어떻게 관리되는지에 대해서 상세한 설명을 해주셨으며, 그림 자료를 바탕으로 이해하기 쉽게 설명해 주셨습니다.

 

 

발표 마지막에는 오늘 배운 인덱스와 관련된 간단한 퀴즈까지 준비해오셔서 스터디에 참여하신 분들에게 깜작 문제 및 얼마나 이해했는지 확인하는 시간을 마련해 주셨습니다. 실제로 발표자료를 보고 듣고 하는 경우에는 이해가 가는데 막상 문제에 부딪혔을 때에는 잘 못푸는 경우가 많은데 복습의 시간과 함께 총정리하는 유익한 시간이었습니다.

발표와 질문, 다양한 토론이 이루어지면서 서로의 생각을 공유하고 지식을 전달하는 과정이 화이트보드에 오늘의 흔적으로 남았습니다. 인덱스를 설명하기 위해 B-tree에 대한 자료구조를 설명하고 인덱스 데이터에 대한 변경이 일어났을 때 어떻게 DB가 동작하는지에 대한 내용을 설명하였습니다.

 

데이터베이스는 다양한 환경에서도 최고의 성능을 발휘해야 하는 시스템으로 안정적으로 대용량의 데이터베이스를 운영하기 위해서는 하나의 지식으로 해결할 수 없지만 지금의 작은 노력과 시간들이 모여 현재의 문제점 개선 및, 앞으로 발생 가능성이 있는 여러 장애를 사전에 예방할 수 있는 시스템을 구현할 수 있는 듯 합니다. 오늘도 많은 회원님들께서 늦은 시간까지 고생 많으셨습니다. 반복되는 일교차에 건강관리 주의하시고 다음주도 유익하고 재미있는 스터디 시간을 기대하면서 다음주에 만나요~~~

 

2016-09-27 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

LA 한인 SQL 스터디 모임, LA IT 모임, DB 스터디, SQL 스터디, SQL Server, DB 스터디, LA SQL Server, sqlmvp, SQL Angeles

[LA DB 스터디] 2016-09-20 LA 한인 SQL Server 스터디 모임(가칭)

 

안녕하세요. 강성욱 입니다.

저희 스터디 그룹은 매주 화요일 8PM ~ 10PM (2시간) 스터디를 진행하며(상황에 따라 장소 및 시간은 변경 될 수 있습니다.) SQL Server를 함께 공부하고 업계의 다양한 트렌드 및 이슈를 공유하며 기술 및 네트워크를 공유하는 모임 입니다. LA 한인 SQL Server 스터디에 참여하고 싶은 분들은 카카오톡(ID : SQLMVP), 페이스북 메신져, email(jevida@naver.com) 등으로 연락 주시기 바랍니다. 사내 오피스에서 진행되기 때문에 출입이 자유롭지 못한 관계로 반드시 사전에 협의가 되어야 합니다.

 

스터디는 회원제로 운영됩니다. 불성실 회원의 경우 회칙에 따라 참여 또는 기타 활동이 제한될 수 있습니다.

 

오늘의 주제는 조인(JOIN)으로 조인의 종류와 실제 SQL Server 옵티마이저가 조인을 실행하는 알고리즘에 대해서 알아보고 각 조인에 대한 장단점, 특징에 대해서도 살펴 보았습니다. 아마 대부분의 DBA분들이 공감하시겠지만 개인적으로 DB에서 가장 어려운 부분이 SELECT라고 생각합니다. 성능에 영향을 받지 않으면서 여러 테이블을 조인하여 원하는 데이터를 조회하는 것이 대부분의 튜닝 이슈에 해당하지 않을까 생각합니다. 이번 시간을 통해서 조인의 원리에 대해서 이해하고 SQL Server를 튜닝하는 방법에 대해서 한 발짝 더 다가서는 소중한 시간이었습니다.

 

 

오늘 발표는 YS님께서 진행해 주셨습니다. 조인에 대한 타입과 조인 알고리즘에 대해서 잘 정리해 주셨으며 실제 데모 쿼리까지 작성하셔서 어떻게 옵티마이저가 움직이는지에 대해서 자세히 설명 주셨습니다. 발표 슬라이드도 또한 정성이 느껴지는 시간이었습니다.

 

 

많은 분들이 조인은 사용하면서 ON절과 WHERE절에 대해서 차이점을 잘 이해 못하는 경우를 많이 보았습니다. 그래서 이번 발표시간에 ONWHERE에 대한 차이점을 특별히 준비해달고 요청하였는데, 예제 코드와 결과 화면을 준비해주셔서 스터디에 참여한 모든 분들이 쉽게 이해할 수 있는 시간이었습니다.

 

 

발표 중간에 의견 및 질문사항에 대해서는 즉석에서 테스트를 통하여 궁금증을 해소하였으며 실제 성능 사례를 바탕으로 다양한 경험담이 공유되는 시간이었습니다.

 

 

그림으로 설명된 발표자료는 시각적인 도움과 함께 실제 동작을 이해하는데 많은 도움이 되었습니다.

 

 

아주 깊게는 아니지만 초보 과정에서는 다소 다루기 어려웠던 내용으로 JOIN에 대한 내용은 마무리가 되었습니다. 물론 이번 한번으로 끝나지는 않습니다. 항상 모든 내용은 반복적으로 다루어지며, SQL 튜닝이라는 과정은 하나의 지식으로 해결할 수 없기에 모든 과정은 소중하게 다루어집니다.

 

스터디 발표가 끝난 후 남은 시간동안 멀리서 참석해주신 사이먼님께서 (현재 SQL Saturday에서 활동중이기도 합니다.) 간단한 퀴즈를 내셨는데, 퀴즈를 통해서 트랜잭션의 동작에 대해서 잠깐이나마 정보를 교류할 수 있었습니다. 실제 트랜잭션에 대해서 우리가 오해하고 있던 부분들에 대해서 케이스별로 설명해 주셔서 정말 소중한 꿀팁 정보였습니다. 다음에 시간되면 좀더 자세히 다루어보는 시간을 마련해 보도록 하겠습니다.

 

사이먼님께서 Minimal Logging에 대해서 발표한 내용도 살짝 공유 합니다. 대용량 테이블을 다룰때 항상 로그 때문에 고민이 많은분들께서 보시면 좋겠습니다.

 

오늘도 많은 회원님들께서 늦은 시간까지 배움에 대한 열정을 보여주셨으며, ? 에 대한 물음으로 우리모두 SQL Server로 빙의되어 동작을 규명하고 이해하는데 정말 신나고 즐거운 스터디 시간이었습니다.  다음주도 기대되는 스터디 시간이었습니다.

 

다음주에 만나요~~~

 

2016-09-20 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

LA 한인 SQL 스터디 모임, LA IT 모임, DB 스터디, SQL 스터디, SQL Server, DB 스터디, LA SQL Server, sqlmvp, SQL Angeles

[LA DB 스터디] 2016-09-13 LA 한인 SQL Server 스터디 모임(가칭)

 

안녕하세요. 강성욱 입니다.

저희 스터디 그룹은 매주 화요일 8PM ~ 10PM (2시간) 스터디를 진행하며(상황에 따라 장소 및 시간은 변경 될 수 있습니다.) SQL Server를 함께 공부하고 업계의 다양한 트렌드 및 이슈를 공유하며 기술 및 네트워크를 공유하는 모임 입니다. LA 한인 SQL Server 스터디에 참여하고 싶은 분들은 카카오톡(ID : SQLMVP), 페이스북 메신져, email(jevida@naver.com) 등으로 연락 주시기 바랍니다. 사내 오피스에서 진행되기 때문에 출입이 자유롭지 못한 관계로 반드시 사전에 협의가 되어야 합니다.

 

스터디는 회원제로 운영됩니다. 불성실 회원의 경우 회칙에 따라 참여 또는 기타 활동이 제한될 수 있습니다.

 

오늘의 스터디 주제는 테이블(Table)로 테이블의 기본적인 특성과 데이터 타입에 따른 특성, 가변 데이터 길이에 따라 성능에 어떤 영향을 끼치는지에 대한 내용을 다루었습니다. 오늘은 총 6분이 참여 하였으며, 발표는 라이언님께서 진행해 주셨습니다. 이번 스터디 시간에는 특강으로 가상머신(VM)환경에서 Hot Add CPUCPU를 추가한 후 SQL Server 성능에 문제가 되는 이슈를 공유하는 case study 시간을 함께 가지려고 했는데 아쉽게도 발표자의 개인적인 사정으로 연기하게 되었습니다. 다음주에 오시면 재미있는 트러블슈팅 이야기를 들을 수 있을 듯 합니다.

 

늦은 시간까지 NXA 오피스에 모여서 SQL에 대한 열정을 불태우고 있는 회원님들 입니다. DBA 10년차 이상인 분들도 계시고, 소프트웨어 엔지니어, 프로그래머 등 다양한 멤버들로 구성되어 있습니다. 각기 다른 분야로 구성되다 보니 같은 주제에 대해서 다양한 시각으로 바라볼 수 있었으며 문제를 접근하는 방법에 대해서도 다양한 방법이 있다는 것을 느낄 수 있었습니다.

오늘 하루도 늦은 시간까지 고생 많으셨습니다. 특히 발표자분들은 준비하시느라 고생 많으셨습니다. 다음주에도 더욱 재미있는 주제로 알찬 스터디가 되리라 예상 됩니다.

 

2016-09-13 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

LA 한인 SQL 스터디 모임, LA IT 모임, DB 스터디, SQL 스터디, SQL Server, DB 스터디, LA SQL Server, sqlmvp, SQL Angeles

+ Recent posts