전체 글 1383

MySQL/MariaDB MyISAM 스토리지 엔진 특성

MySQL/MariaDB MyISAM 스토리지 엔진 특성 Version : Mariadb 5.5.4.2-WinX64 MyISAM은 ISAM(indexed Sequential Access Method)의 단점을 보완하기 위해 나온 업그레이드 버전으로 비-트랜잭션-세이프(non-transanctional-safe) 테이블을 관리 한다. [기본적인 특징] 데이터 저장에 제한이 없고 효율적이다. (속도가 빠른편이다.) B-Tree, R-Tree, Full-Text 인덱스를 지원 테이블 락 사용으로 읽기 성능은 좋으나 빈번한 쓰기가 빈번한 경우 부적합. 트랜잭션 미지원 MyISAMpack라는 압축 옵션 제공 MyISAM에는 InnoDB의 버퍼풀과 비슷한 역할을 하는 것이 키 캐시(Key cache, 키 버퍼라고도..

MySQL, MariaDB 2015.07.30

SQL Server 2016 Feature in CTP2

SQL Server 2016 Feature in CTP2 Version : SQL Server 2016 SQL Server 2016에 포함된 새로운 기능들에 대해서 알아 본다. [데이터베이스 엔진] Always Encrypted : 보장 데이터는 항상 암호화 된다. SQL Server는 암호화된 데이터를 저장하고 투명하게 처리한다. (https://msdn.microsoft.com/en-us/library/mt163865.aspx) 강화된 In-Memory OLTP SQL Server 2014에서의 많은 제약이 해소 되었다. (http://sqlperformance.com/2015/05/sql-server-2016/in-memory-oltp-enhancements) 컬럼스토어 인덱스는 실시간 운영 분석을..

SQL Server 2016 설치 변경 사항

SQL Server 2016 설치 변경 사항 Version : SQL Server 2016 SQL Server 2016 CTP 2에서 설치 시 변경된 사항에 대해서 알아 본다. SQL Server 2016에 대한 설치방법은 이전 포스트를 참고 한다. SQL Server 2016 설치 : http://sqlmvp.kr/220386777927 [PolyBase 조회 서비스] 기능 선택 페이지에서 외부 데이터에 대한 PolyBase 쿼리 서비스를 선택할 수 있는 옵션이 추가 되었다. 이 기능은 표준 T-SQL문을 사용하여 하둡 데이터 및 SQL Server 데이터를 통해 통합 질의를 할 수 있다. 외부 데이터에 대한 PolyBase 쿼리 서비스를 설치하려면 아래 요구사항을 만족해야 한다. SQL Server ..

Error 17053 타사 네트워크 장치의 SMB 파일 공유 오류

Error 17053 타사 네트워크 장치의 SMB 파일 공유 오류 Version : SQL Server 2012, 2014 SQL Server 2012부터는 추적플래그를 사용하지 않고 원격 SMB 파일 공유에 데이터베이스를 생성하여 운용할 수 있다. SQL Server는 데이터베이스에 대한 SMB 파일 공유를 사용 하도록 클러스터를 구성할 수 있다. SMB 파일 공유와 함께 저장소로 SQL Server 설치 옵션 https://msdn.microsoft.com/ko-kr/library/hh759341(v=sql.120).aspx 데이터 로그 파일을 생성하거나 열 때 SQL Server는 다양한 파일 조작 API를 호출한다. Win32 API는 DeviceIoControl을 호출하여 장치 드라이버에 대한 ..

MySQL/MariaDB InnoDB 스토리지 엔진 특성

MySQL/MariaDB InnoDB 스토리지 엔진 특성 Version : Mariadb 5.5.4.2-WinX64 InnoDB 스토리지 엔진은 MySQL/MariaDB에서 레코드 기반의 잠금을 제공하고 있으며 때문에 높은 동시성 처리가 가능하고 안정적이며 성능이 뛰어나다. InnoDB의 구조는 크게 메모리 영역과 CPU 연산 영역, 디스크 스토리지 영역으로 구분할 수 있다. 메모리 영역에는 버퍼풀과 로그 버퍼가 있으며 CPU 연산에는 인서트 버퍼 머지 스레드, Write 스레드, 로그 스레드, 그외 기타 스레드가 있다. 디스크 영역에는 시스템 테이블 스페이스와 사용자 테이블 스페이스, 리두로그가 존재한다. [InnoDB 스토리지 엔진 특성] 프라이머리 키에 의한 클러스터링 : 모든 테이블은 기본적으로 ..

MySQL, MariaDB 2015.07.27

최신 SQL Server Native Client 설치하기

최신 SQL Server Native Client 설치하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server용 서비스팩(SP) 또는 누적 업데이트(CU)를 설치하는 경우 SQL Server Native Client가 업데이트 되지 않는 것을 알 수 있다. 또한 업데이트를 찾기가 어려울 수 있다. SP또는 CU 패키지에서 가져오는 방법에 대해서 알아본다. SP 또는 CU 패키지를 실행할 때 설치될 폴더를 확인할 수 있다. 확인된 폴더의 위치를 탐색기를이용하여 이동하면 SQL 설치 랜딩 페이지를 볼 수 있다. 여기에서 해당 지역의 폴더로 이동한다. KOR의 경우 1042 폴더이며 ENU는 1033 폴더이다. 여기서 /x64/setup/x64로 이..

Sys.dm_os_waiting_tasks를 활용한 실행중인 병렬쿼리 확인

Sys.dm_os_waiting_tasks를 활용한 실행중인 병렬쿼리 확인 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 Sys.dm_os_waiting_tasks를 활용하여 실행중인 병렬쿼리의 정보를 확인한다. SELECT [owt].[session_id], [owt].[exec_context_id], [ot].[scheduler_id], [owt].[wait_duration_ms], [owt].[wait_type], [owt].[blocking_session_id], [owt].[resource_description], CASE [owt].[wait_type] WHEN N'CXPACKET' THEN RIGHT ([owt].[resource_de..

DBCC DROPCLEANBUFFERS가 작동하지 않을 때

DBCC DROPCLEANBUFFERS가 작동하지 않을 때 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 DBCC DROPCLEANBUFFERS는 버퍼 풀에서 빈 버퍼를 모두 제거하는 명령이다. 이 명령을 사용하면 서버를 종료하고 다시 시작하지 않아도 완전히 빈 버퍼 캐시를 사용하여 쿼리를 테스트할 수 있다. 버퍼풀에서 빈 버퍼를 삭제하려면 CHECKPOINT를 사용하여 빈 버퍼 캐시를 만든다. CHECKPOINT는 현재 데이터베이스에 대한 모든 커밋되지 않은 페이지를 디스크로 기록하고 버퍼를 비운다. 다음 내용은 DBCC DROPCLEANBUFFERS 사용하어 빈 버퍼를 제거한 상태에서 SELECT를 이용하여 데이터를 조회하였는데 물리적 읽기가 ..

손상된 부트페이지 복구하기

손상된 부트페이지 복구하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 데이터베이스 장애 중 큰 이슈는 부트페이지 손상이다. 부트 페이지가 손상된 경우에는 데이터베이스를 온라인 또는 긴급 모드로 전환될 수 없다. 이번 포스트는 손상된 부트페이지를 복구하는 방법에 대해서 알아본다. 부트 페이지를 손상하고 복원하기 위한 테스트 데이터베이스를 생성한다. 생성된 데이터베이스를 분리하여 데이터파일에 사용자가 접근할 수 있도록 한다. -- Drop old database USE [master]; GO IF DATABASEPROPERTYEX (N'Company', N'Version') > 0 BEGIN ALTER DATABASE [Company] SET SI..

Temp table 객체 생성시 세션간 충돌하지 않는 이유

Temp table 객체 생성시 세션간 충돌하지 않는 이유 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 데이터베이스를 사용할 때 temp table(임시 테이블)을 많이 사용한다. 단일 tempdb가 여러 세션에서 동일한 개체를 만드는 경우에도 어떻게 충돌을 방지할 수 있을까? 다음 간단한 테스트를 통해서 임시테이블 생성과 충돌 방지에 대해서 알아본다. 아래 스크립트는 임시 테이블을 생성한다. -- Session 1: Table creation CREATE TABLE #temptable_test ( id INT NOT NULL IDENTITY (1,1) ,Name CHAR(100) NOT NULL ,DOJ DATETIME NOT NULL ); 테..