Pytania otagowane jako database-internals

Pytania techniczne dotyczące wewnętrznego działania silnika bazy danych.

1
DELETE vs TRUNCATE
Próbuję lepiej zrozumieć różnice między poleceniami DELETEi TRUNCATE. Moje rozumienie elementów wewnętrznych przebiega w następujący sposób: DELETE-> aparat bazy danych znajduje i usuwa wiersz z odpowiednich stron danych i wszystkich stron indeksu, w których wiersz jest wprowadzony. Im więcej indeksów, tym dłużej trwa usuwanie. TRUNCATE -> po prostu masowo usuwa …

4
Czy kolejność kolumn w definicji tabeli ma znaczenie?
Podczas definiowania tabeli pomocne jest uporządkowanie kolumn w grupach logicznych i samych grup według celu. Logiczne uporządkowanie kolumn w tabeli przekazuje znaczenie deweloperowi i jest elementem dobrego stylu. To jasne. Nie jest jednak jasne, czy logiczne uporządkowanie kolumn w tabeli ma jakikolwiek wpływ na ich fizyczne uporządkowanie w warstwie pamięci, …

2
Optymalizacja planów za pomocą czytników XML
Wykonanie zapytania stąd, aby wyciągnąć zdarzenia impasu z domyślnej sesji zdarzeń rozszerzonych SELECT CAST ( REPLACE ( REPLACE ( XEventData.XEvent.value ('(data/value)[1]', 'varchar(max)'), '<victim-list>', '<deadlock><victim-list>'), '<process-list>', '</victim-list><process-list>') AS XML) AS DeadlockGraph FROM (SELECT CAST (target_data AS XML) AS TargetData FROM sys.dm_xe_session_targets st JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address WHERE [name] …

1
Dlaczego skanowanie jest szybsze niż wyszukiwanie tego predykatu?
Udało mi się odtworzyć problem z wydajnością zapytania, który opisałbym jako nieoczekiwany. Szukam odpowiedzi, która koncentruje się na wewnętrznych. Na moim komputerze następujące zapytanie wykonuje skanowanie indeksu klastrowego i zajmuje około 6,8 sekundy czasu procesora: SELECT ID1, ID2 FROM two_col_key_test WITH (FORCESCAN) WHERE ID1 NOT IN ( N'1', N'2',N'3', N'4', …


1
Logiczne odczyty różnią się podczas uzyskiwania dostępu do tych samych danych LOB
Oto trzy proste testy, które odczytują te same dane, ale raportują bardzo różne logiczne odczyty: Ustawiać Poniższy skrypt tworzy tabelę testową ze 100 identycznymi wierszami, z których każdy zawiera kolumnę xml z wystarczającą ilością danych, aby upewnić się, że jest przechowywana poza wierszem. W mojej testowej bazie danych długość wygenerowanego …


1
Sonda klucze mieszające i pozostałe
Powiedzmy, że mamy takie zapytanie: select a.*,b.* from a join b on a.col1=b.col1 and len(a.col1)=10 Zakładając, że powyższe zapytanie używa łączenia mieszającego i ma wartość resztkową, kluczem sondy będzie, col1a resztą będzie len(a.col1)=10. Ale przechodząc przez inny przykład, widziałem zarówno sondę, jak i pozostałość, które są tą samą kolumną. Poniżej …

4
Czy indeks w kolumnie tożsamości powinien być nieklastrowany?
Czy dla tabeli z kolumną tożsamości należy utworzyć klastrowany lub nieklastrowany PK / indeks unikalny dla kolumny tożsamości? Powodem jest to, że dla zapytań zostaną utworzone inne indeksy. Kwerenda, która używa indeksu nieklastrowanego (na stercie) i zwraca kolumny, które nie są objęte indeksem, użyje mniej logicznych operacji we / wy …



1
Nieklastrowane przechowywanie indeksu w klastrowanym magazynie kolumn
W SQL Server nieunikalny indeks nieklastrowany w tabeli magazynu wierszy zawiera zakładkę obiektu podstawowego (RID lub klucz klastrowania) na wszystkich poziomach struktury indeksu nieklastrowanego. Zakładka jest przechowywana jako część nieklastrowanego klucza indeksu na wszystkich poziomach indeksu. Z drugiej strony, jeśli indeks nieklastrowany jest unikalny , zakładka jest obecna tylko na …


1
Co to jest narzut dla varchar (n)?
Chciałem zapytać o znaczenie tego fragmentu z dokumentu Postgres w odniesieniu do varchar(n)typu: Wymaganie dotyczące przechowywania krótkiego ciągu (do 126 bajtów) wynosi 1 bajt plus rzeczywisty ciąg, który obejmuje dopełnianie spacji w przypadku znaku. Dłuższe łańcuchy mają narzut 4 bajty zamiast 1. Załóżmy, że mam varchar(255)pole. A teraz następujące oświadczenia: …

1
Oszacowanie liczności poza histogramem
Ustawiać Mam problem ze zrozumieniem oszacowania liczności. Oto moja konfiguracja testowa: wersja 2010 bazy danych przepełnienia stosu SQL Server 2017 CU15 + GDR (KB4505225) - 14.0.3192.2 nowy CE (poziom zgodności 140) Mam ten proc: USE StackOverflow2010; GO CREATE OR ALTER PROCEDURE #sp_PostsByCommentCount @CommentCount int AS BEGIN SELECT * FROM dbo.Posts …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.