반응형

Machine Learning(ML) 이란?


알파고와 이세돌의 바둑 대결로 알파고에 관심이 증가함에 따라 알파고에 접목된 Machine Learning 또한 관심도가 높아졌다.

현재 AI 분야에서 주로 사용되는 분야로 한국어로는 기계 학습이라고 한다.

Machine learning(기계 학습)이 주목 받는 이유는 단 하나다.

AI분야에서 음성인식, 자연어 처리, 영상 처리 등 전반적인 부분에서 처리 및 인식 성능이 타 기술보다 높게 측정되었기 때문이다.

알파고가 보여준 엄청난 바둑 경기력은 바로 이 Machine Learning에서 비롯 되었다.

수천 수만개의 바둑 기보를 통해 학습한 기계 알파고를 인간 이세돌이 이기기는 쉽지 않았고 사람들은 알파고의 능력에 감탄하고 열광하면서

AI에 대한 기대가 커지게 된 것이다.


그럼 이 Machine Learning으로 할 수 있는 일이 무엇이 있을까?

충분한 학습에 필요한 데이터만 있으면 그 데이터를 기반으로 학습 된 모델을 통해 앞으로 일어날 일을 예측하고 분석할 수 있으며 분류 또한 가능해 진다.

예로 들어 과거 기상 데이터를 학습하여 내일 또는 미래의 날씨를 예측하거나 스팸 메일 분류 같은 일까지 정확하게 처리할 수 있다.

이처럼 충분한 데이터 셋만 있다면 어느 분야에서도 사용이 가능한 Machine Learning은 앞으로도 대체 가능한 방법이 나오지 않는다면 활발하게 연구 될 것이고 AI의 시대가 점점 더 가까워 지고 있다는 것을 알 수 있다.

반응형
반응형

B-TREE 구조란?

- B-Tree라고 하면 사람들은 이진 트리(Binary Tree)라고 생각하는 사람들이 많다. 하지만 SQL SERVER에서 B-Tree는 이진 트리가 아니다!

- Root node, Intermediate Level, Leaf nodes/data pages의 총 3가지 단계로 구성된다.

- 각 노드의 키 값은 하위 노드들을 나누는 값이 되어야 한다

- 각 노드는 정렬된 상태

- SQL Server에서는 B-Tree와 Linked list를 합친 B+Tree를 사용


참고 사이트 : https://docs.microsoft.com/ko-kr/sql/relational-databases/sql-server-index-design-guide?view=sql-server-2017


반응형

'Database > SQL Server' 카테고리의 다른 글

SQL 매월 마지막일 출력  (0) 2019.06.20
트랜잭션 격리수준과 with(nolock) 힌트  (0) 2019.04.29
SQL 실행계획  (0) 2018.11.12
[MSSQL] Table Column 속성 변경  (0) 2018.06.25
Database 내 모든 테이블 정보 확인  (0) 2018.06.14
반응형

실행계획이란?

- 옵티마이저가 쿼리의 최적 실행 방법을 결정하여 나타내는 쿼리의 동작 계획

- 작성된 쿼리문의 성능을 파악할 수 있는 DBMS가 지원해주는 정보

- 작성된 쿼리가 어떤 식으로 동작하는지 내용을 파악할 수 있다


실행계획의 중요성

- 자신이 작성한 쿼리의 실행계획을 제대로 파악하지 못한채 쿼리를 작성하게 되면 데이터가 많아졌을 때 성능 저하가 발생!


MS-SQL에서 실행계획 보는 방법

- 실행계획을 확인할 쿼리를 드래그 한 후 Ctrl+L 을 누르면 선택된 영역 쿼리의 실행계획을 볼 수 있다


실행계획에 나오는 용어 정리

Table Scan    -  테이블 내 전체 데이터를 모두 검색(full scan)

Table Seek    -  인덱스를 사용하여 검색

Index Scan    -  인덱스를 검색하여 데이터를 검색(range scan)

Index Seek    -  인덱스를 사용하여 검색

Hash join      -  두 테이블간에 인덱스가 없고 Equal Join을 사용할 경우

NS Lookup    -  

빨간색으로 표시된 부분이 실행계획에 많이 있으면 데이터가 많아짐에 따라 성능 저하의 위험이 있다는 뜻!


실행계획을 볼 때 유의 할 점!

- 실행 계획에 Table Scan / Index Scan 이 있으면 전체 검색을 하기 때문에 Table Seek / Index Seek으로 바꿔주는게 일반적으로 좋다

- Scan을 Seek로 바꿀려면 Where에 사용하는 컬럼에 Index를 걸어주면 해결된다.(* 단 Index에 대한 이해가 필수!)

- 데이터 검색할 Row수가 적으면 쿼리 옵티마이져가 자동적으로 Scan으로 검색하니 참고!



*앞으로 실행계획을 통해 자신이 만든 쿼리와 SP의 성능을 확인하고 개선하는 습관을 가지는 것이 좋다!!!!*


*SQL Server 2014 기준으로 작성한 글입니다.




반응형

'Database > SQL Server' 카테고리의 다른 글

트랜잭션 격리수준과 with(nolock) 힌트  (0) 2019.04.29
B-TREE 구조  (0) 2018.11.15
[MSSQL] Table Column 속성 변경  (0) 2018.06.25
Database 내 모든 테이블 정보 확인  (0) 2018.06.14
동적 쿼리와 정적 쿼리  (0) 2018.05.23

+ Recent posts