«database-internals» 태그된 질문

데이터베이스 엔진의 내부 작업에 대한 기술적 인 질문이 있습니다.

2
임시 테이블이 열망하는 스풀보다 할로윈 문제에 대한 더 효율적인 솔루션 인 이유는 무엇입니까?
대상 테이블에 아직없는 경우에만 소스 테이블에서 행을 삽입하는 다음 쿼리를 고려하십시오. INSERT INTO dbo.HALLOWEEN_IS_COMING_EARLY_THIS_YEAR WITH (TABLOCK) SELECT maybe_new_rows.ID FROM dbo.A_HEAP_OF_MOSTLY_NEW_ROWS maybe_new_rows WHERE NOT EXISTS ( SELECT 1 FROM dbo.HALLOWEEN_IS_COMING_EARLY_THIS_YEAR halloween WHERE maybe_new_rows.ID = halloween.ID ) OPTION (MAXDOP 1, QUERYTRACEON 7470); 하나의 가능한 계획 형태에는 병합 조인 및 열성적인 스풀이 포함됩니다. …

4
인덱스 고유성 오버 헤드
인덱스 비용 및 고유성이 유익한 지 아닌지 (아마도 둘 다)에 대해 사무실의 여러 개발자와 토론을 진행하고 있습니다. 문제의 핵심은 경쟁 리소스입니다. 배경 나는 이전에 언급 한 토론을 읽었습니다. Unique 인덱스가 유지 관리에 추가 비용이 들지 않는다는Insert 작업이 B- 트리에 맞는 위치를 암시 적으로 확인하고 고유하지 않은 인덱스에서 중복이 발견되면 유니티를 …

2
FILESTREAM 내부자 정보 검색
FILESTREAM 기능이 Microsoft SQL Server 2012에서 활성화되면 SQL Server는 시스템에서 "숨겨진"공유를 만듭니다. 공유는 다음과 같이 정의됩니다. Sharename FILESTREAM_SHARE Path \\?\GLOBALROOT\Device\RsFx0320\<localmachine>\FILESTREAM_SHARE Remark SQL Server FILESTREAM share Maximum users unlimited Users Caching Manual caching of documents Permissions NT-AUTHORITY\Authenticated Users, FULL 이름은 SQL Server 구성 관리자 에서 FILESTREAM을 처음 구성 할 때 제공하는 …

2
MySQL에서 HAVING이 SELECT 별칭을 사용할 수있는 이유는 무엇입니까?
SQL에서 내가 아는 한 개념적 해석 순서 인 논리적 쿼리 처리 순서는 다음과 같은 방식으로 FROM으로 시작합니다. 에서 어디 GROUP BY HAVING 고르다 주문 이 목록을 따르면 별칭이 아직 생성되지 않았기 때문에 WHERE 절에 SELECT 별칭을 사용할 수없는 이유를 쉽게 알 수 있습니다. T-SQL (SQL Server)은이를 엄격하게 따르며 SELECT를 전달할 …


1
SQL Server가 시스템 프로 시저에 전달 된 문자열에 대한 개체 이름을 교환 할 수있는 기능
객체 이름을 시스템 저장 프로 시저에 전달하는 것이 합법적 인 이유는 무엇입니까 sp_helptext? 객체 이름을 문자열로 변환하는 메커니즘은 무엇입니까? 예 : -- works sp_helptext myproc sp_helptext [myproc] sp_helptext [dbo.myproc] -- and behaves the same as a string sp_helptext 'myproc' sp_helptext 'dbo.myproc' -- does not work sp_helptext dbo.myproc -- Msg 102, …

2
이 두 SQL Server 롤백은 어떻게 다릅니 까?
SQL Server 2008 R2에서이 두 롤백은 어떻게 다른가요? ALTER몇 분 동안 명령문을 실행 한 다음 'Execceling Executing'을 누르십시오. 완전히 롤백하는 데 몇 분이 걸립니다. 동일한 ALTER명령문을 실행 하지만 LDF파일이 성공적으로 완료되기에 충분히 크지 않은지 확인하십시오 . 한때 LDF제한이 충족되고 더 '자동 증가'가 허용되지 않습니다, 쿼리 실행이 즉시 중단 (또는 롤백이 …

1
슬롯 배열 및 총 페이지 크기
많은 포럼과 많은 블로그에서 페이지가 아래와 같이 구성되어 있음을 계속 읽습니다. 페이지 크기 : 16 x 512B = 8192B 페이지 헤더 : = 96B 최대 행 _ 행 : = 8060B (8192-96-8060) B = 36B로 남습니다. 좋습니다, 이것은 논리적이고 정확합니다. 내가 가진 질문은 이것입니다. 왜 많은 사람들이 나머지 36B가 슬롯 …

1
이러한 유사한 쿼리가 다른 최적화 단계 (트랜잭션 처리와 빠른 계획)를 사용하는 이유는 무엇입니까?
이 연결 항목 의 예제 코드 어디에 버그를 보여줍니다 SELECT COUNT(*) FROM dbo.my_splitter_1('2') L1 INNER JOIN dbo.my_splitter_1('') L2 ON L1.csv_item = L2.csv_item 올바른 결과를 반환합니다. 그러나 다음은 잘못된 결과를 반환합니다 (2014 년 새로운 카디널리티 추정기를 사용하여) SELECT (SELECT COUNT(*) FROM dbo.my_splitter_1('2') L1 INNER JOIN dbo.my_splitter_1('') L2 ON L1.csv_item = L2.csv_item) …

1
이 스트림 집계가 필요한 이유는 무엇입니까?
이 쿼리를 확인하십시오. 매우 간단합니다 (테이블 및 인덱스 정의 및 repro 스크립트에 대해서는 게시물 끝 참조). SELECT MAX(Revision) FROM dbo.TheOneders WHERE Id = 1 AND 1 = (SELECT 1); 참고 : "AND 1 = (SELECT 1) 은이 쿼리가 자동 매개 변수화되지 않도록하는 것입니다. 그리고 계획은 다음과 같습니다 ( 계획 링크를 …

1
SQL Server는 실제로 테이블의 IDENTITY VALUE를 어디에 저장합니까?
나는 누군가가 이것에 대해 올바른 방향으로 나를 가리킬 수 있기를 바랍니다. 여기까지 내 작업이 있습니다. SELECT * FROM sys.identity_columns"last_value"를 제공하는 시스템 뷰이지만 해당 뷰에 대한 정의는 내부 함수를 사용 IdentityProperty(colName, 'LastValue')하므로 막 다른 골목입니다 (시스템 테이블에서 가져 오지 않음). 인터넷의 모든 곳에서 (내가 본 것)은 DBCC IDENT_...명령을 사용하여 가치를 밝힐 …

3
연결 물리적 조작 : 실행 순서를 보장합니까?
표준 SQL에서 결과는 union all어떤 순서로도 보장되지 않습니다. 따라서 다음과 같은 것이 있습니다. select 'A' as c union all select 'B' 순서에 관계없이 두 행을 반환 할 수 있습니다 (실제로 'A'가 'B'보다 앞에 올 것이라는 것을 알고있는 데이터베이스에서 실제로도). SQL Server에서는 "연결"물리적 작업을 사용하여 실행 계획으로 바뀝니다. 연결 연산이 입력을 …

1
특정 테이블에 대한 ROW_OVERFLOW_DATA 페이지를 나열하십시오.
ROW_OVERFLOW_DATA 행이있는 테이블의 페이지 목록을 가져 오려고합니다. 문서화되지 않은 DMV에서 할당 된 페이지 목록을 얻을 수 sys.db_db_database_page_allocations있지만 해당 DMV의 출력에 ROW_OVERFLOW_DATA 페이지가없는 것 같습니다. 내가 찾을 수없는 다른 DMV가 있습니까? 최소한의 완전하고 (희망적으로!) 검증 가능한 예 : USE tempdb; IF OBJECT_ID(N'dbo.t', N'U') IS NOT NULL DROP TABLE dbo.t; GO CREATE …

2
효율적인 범위 집계 쿼리를위한 데이터베이스?
간단한 예로, 다음과 같은 테이블이 있다고 가정하십시오. seq | value ----+------ 102 | 11954 211 | 43292 278 | 19222 499 | 3843 테이블에는 수억 개의 레코드가 포함될 수 있으므로 다음과 같은 쿼리를 자주 수행해야합니다. SELECT sum(value) WHERE seq > $a and seq < $b seq인덱스 된 경우에도 일반적인 데이터베이스 …

2
중첩 루프 조인이 왼쪽 조인 만 지원하는 이유는 무엇입니까?
Craig Freedman의 블로그 인 Nested Loops Join 에서 중첩 루프 조인이 올바른 외부 조인을 지원할 수없는 이유를 설명합니다. 문제는 외부 테이블의 각 행마다 한 번씩 내부 테이블을 여러 번 스캔한다는 것입니다. 이러한 다중 스캔 중에 동일한 내부 행이 여러 번 발생할 수 있습니다. 어떤 시점에서 우리는 특정 내부 행이 참여하지 …

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