SQL Server databáze TempDB Tutorial

: Eric Blinn | Aktualizováno: 2020-07-17 | Komentáře (2) | Související: Více > z Databáze Systému

Problém

SQL Server je nainstalován s čtyři databází systému ve výchozím nastavení. Jsou master, model, msdb a TempDB. Potřebuji vědět, co je systémová databáze „TempDB“ a k čemu se používá. Tyto předchozí návody covermaster, model andmsdb velmi podrobně.

řešení

tento tip pokryje databázi TempDB. TempDB je databáze, která mámnoho funkcí v rámci serveru SQL, ale je zřídka nazýváno explicitně. Má tolik funkcí, že je často jednou z nejrušnějších, ne-li nejrušnější databáze na většině instancí serveru SQL. Čtěte dále a dozvíte se comnoho z těchto funkcí je!

SQL Server TempDB přehled

jaký je účel SQL Server TempDB?

jednou z funkcí TempDB je jednat jako stránka nebo odkládací soubor na úrovni operačního systému. Pokud je operace SQL Serveru příliš velká na to, aby byla dokončena v paměti, nebo pokud je počáteční grant paměti pro dotaz příliš malý, může být operace přesunuta na disk v TempDB.

další funkcí TempDB je ukládánídočasné tabulky. Každý, kdo vytvořil dočasnou tabulku v T-SQL pomocí předpony libry nebo hash ( # ) nebo předpony doublepound/hash ( # # ), vytvořil objekt v TempDB, protože to je místo, kde jsou uloženy.

CREATE TABLE #MSSQLTips (RowID int);
To SSMS screenshot ukazuje, že dočasné tabulky #MSSQLTips je uložen v databáze TempDB v podstromu s názvem "Dočasné Tabulky"

Když atrigger je provádění vložené a odstraněné virtuální tabulky jsou storedin TempDB.

všechny databáze, které používají COMMITTED SNAPSHOT ISOLATION (RCSI), budou mít své informace o verzování uloženy v TempDB.

každá z výše uvedených funkcí TempDB je dokončena, aniž by se někdy skutečně zmínila o tempdb jménem, a proto může být překvapivé použití pro TempDB.

TempDB lze také volat explicitně několika způsoby. Tabulky lze vygenerovat v TempDB odkazem na databázi v příkazu create. Kód vypadá přesně jako normální operace DDL, ale při spuštění v TempDB je tabulka podle definice dočasnou tabulkou.

CREATE TABLE TempDB.dbo.MSSQLTips(RowID int);
jako poslední screenshot ukazuje to, že tabulka může být

TempDB se regeneruje při každém spuštění instance serveru SQL Server. Anyobjects, které mohly být vytvořeny v TempDB během předchozí relace nebude trvat po restartu služby. TempDB dostane svůj počáteční seznam objektů z databáze themodel, která bude obecně prázdná nebo téměř prázdná.

Index maintenance lze volitelně požádat o třídění v TempDB spíše než o pokus o to pomocí volného místa v databázi uživatelů.

ALTER INDEX ON . REBUILD WITH (SORT_IN_TEMPDB = ON);

mohu spustit SQL Server bez databáze TempDB?

SQL Server nelze spustit (s výjimkou velmi extrémních scénářů obnovy a velmi krátkých období) bez TempDB.

je verze databáze TempDB jedinečná pro verzi, edici a patchlevel SQL Serveru?

TempDB je většinou prázdná databáze a na úrovni SQL Serveru není nic zvláštního.

v posledních letech došlo k pouze 2 smysluplným změnám TempDB na úrovni verze. První je, že začíná v SQL Server 2016 chování TempDBwas změnil tak, že povolení trasování příznaky T1117 a T1118 jsou již considereda nejlepší praxe. Druhým je, že počínaje SQL Server 2019 byly některé těžké systémové objekty v TempDB upgradovány na tabulky v paměti, aby se snížil obsah a zlepšil celkový výkon serveru.

můžete zrušit nebo přejmenovat databázi TempDB a měli byste to udělat z nějakého důvodu?

TempDB nelze zrušit, oddělit, offline nebo přejmenovat. Pokus o některé z těchto operací vrátí chybu. Neexistuje žádný důvod, proč by se o to nemělo pokoušet, protože se jedná o kritickou systémovou databázi.

umístění databáze SQL Server TempDB

jaké fyzické soubory a názvy podporují databázi TempDB?

výchozí logické názvy souborů jsou tempdev pro data a templog pro log.Lze je nalézt na disku jako tempdb.mdf a templog.ldf resp. TempDBcommonly má mnoho datových souborů.

kolik datových souborů TempDB by mělo být?

měl by existovat jeden datový soubor TempDB pro každé vlákno/jádro / vCPU na instancewith maximálně 8.

Kde najdu databázi TempDB na disku a v SSMS?

soubory lze nalézt dotazováním sys.sysfiles dmv nebo podokno souborů v okně databaseproperties.

SELECT * FROM TempDB.sys.sysfiles;

dělá to rozdíl, kde jsou umístěny databázové soubory TempDB (potřebují být na C:\, SAN atd.)?

osvědčené postupy diktují, že vaše datové soubory TempDB by měly být na nejrychlejším úložišti vzhledem k jejich úrovni aktivity. V některých případech to může znamenat ukládání do datových souborů databáze uživatelů, ale je preferován samostatný svazek na samostatném disku, pokud je k dispozici.

existují různé názory na soubor protokolu TempDB, ale tento autor dává přednost vložení tohoto souboru s ostatními soubory protokolu transakcí.

lze databázi TempDB přesunout?

databáze TempDB může být přesunuta. Metoda pro přesun TempDB je snadnáimplementovat. Jednoduše upravit název souboru vlastnost požadovaného souboru(y). žádné soubory je třeba přesunout, jako když jsou přesunuty jiné systémové databáze. SQLServer vytvoří soubor(y) s novým názvem a / nebo v novém umístění při startu další služby. Nezapomeňte se vrátit a odstranit soubory Nowunused TempDB, které zůstanou pozadu.

ALTER DATABASE MODIFY FILE ( NAME = N'tempdev', FILENAME = N'G:\DATA\tmp.mdf');GOALTER DATABASE MODIFY FILE ( NAME = N'templog', FILENAME = N'H:\LOG\tmplog.ldf');GO

velikost a růst databáze SQL Server TempDB

jak by mělo být nakonfigurováno nastavení růstu databáze a protokolu transakcí pro databázi TempDB?

nastavení automatického růstu by mělo být nastaveno na konkrétní počet MB, nikoli na procento.Každý datový soubor by měl mít stejný počet MBs nastavených pro růst.

správná velikost souborů pro databázi je obecně nejlepší praxe, ale nikdy víc než pro TempDB. Sledujte instanci-zejména pokud anonové-a zjistěte, zda soubory rostou během normálního provozu.Pokud ano, změňte počáteční velikost tak, aby SQL Server nebyl nucen neustále růst soubory po každém spuštění služby.

jaká je typická velikost databáze TempDB a jak velká může být?

na tuto otázku není dobrá odpověď. To, co je typické pro jednu instanci, můženení typické pro jinou. Tento autor viděl případy, kdy je TempDB v podstatě nevyužitý v průměru jen několik MB použitého prostoru v daném okamžiku. Dosud, othersare neustále dotazováni a pomocí stovky GB prostoru-i intospace měřeno v TB-zejména během okna údržby indexu.

při rozhodování o tom, kolik místa věnovat TempDB na nové instanci, jsouněkolik věcí, které lze udělat. Nahrazuje nová instance starší existujícíinstance? Pokud ano, použijte perfmon trace nebo plánovaný DMV capture k určení použitého prostoru v TempDB v průběhu několika dnů. Nezapomeňte do tohoto snímku zahrnout okno údržby. Pokuste se přidělit dostatek místa na nové instanci, aby se zohlednil největší použitý prostor zachycený během trasování s další krouticí místností. Pak správné velikosti souborů, aby se vešly do tohoto přidělení prostoru.

níže uvedené 2 dotazy mohou pomoci. První bude mít snímek o velikostidatové a logové soubory spolu s prostorem použitým v souborech. To canbe spustit v pravidelných intervalech sledovat využití v průběhu času. Druhý dotaz budevrátit, kolikrát se soubor protokolu rozrostl od posledního restartu instancebyl restartován.

Pokud tam není existující pracovní vytížení, které mohou být použity jako vodítko a thereisn ani jiné vedení, možná od dodavatele softwaru, pak jediná věc, kterou lze udělat, je, aby se ujistil, že je prostor v databázi TempDB na účet pro largestanticipated jednotlivé objekty, které mohou být řazeny v databázi TempDB během index maintenancewindows. Odtud Sledujte používání a odpovídajícím způsobem upravte.

USE TempDB;GOSELECT GETUTCDATE() AS SnapshotDateTime, groupid --0 = data, 1 = log, SUM(size/128.) SizeOnDiskInMB, SUM(FILEPROPERTY(name, 'spaceused')/128.) MBUsedWithinFile FROM TempDB.sys.sysfilesGROUP BY groupid; SELECT * FROM sys.dm_os_performance_countersWHERE counter_name = 'Log Growths' AND instance_name = 'tempdb';

údržba databáze tempdb serveru

můžete zmenšit databázi a protokol transakcí pro databázi TempDB?

technicky Ano, ale toto není operace, která by měla být někdy dokončena.Cílem by mělo být vždy správné velikosti TempDB. Pokud nějaká jednorázová operacezpůsobuje, že tyto soubory rostou nevysvětlitelně, vrátí se do normálu při dalším restartu služby.

měli byste znovu vytvořit indexy?

TempDB nebude součástí žádných plánů údržby souvisejících s indexem. To znamená, že nedochází k obnově indexů, reorganizaci nebo aktualizaci statistik.

měli byste spustit kontroly integrity co je Kód?

existují různé názory na to, zda by měl být empdb zkontrolován z hlediska integrity.Tento autor rozloží argumentpro a proti a umožní čtenáři rozhodnout.

proti: operace kontroly integrity nemůže zkontrolovat TempDB se stejným součtem jako všechny ostatní databáze.Data, která existují v TempDB ishighly přechodné, takže kontrola integrity operace nebude najít muchto kontrolu v daném okamžiku.Ze stejného důvodu jsou všechna data, která se stanou poškozenými, pravděpodobně aktivními daty, která způsobí upozornění při čtení z disku dlouho předtím, než bude pravděpodobně vyvolána operace kontroly integrity.

Pro: zatímco operace kontroly integrity nemůže zkontrolovat vše v TempDB, které kontroluje v jiných databázích, které neznamená, že nemá žádnou hodnotu.TempDB je integrální databáze apokud existuje korupce, je to nezbytné, aby bylo možné přijmout nápravná opatření.

kód pro spuštění kontroly integrity je níže.

DBCC CHECKDB ('TempDB'); 

SQL Server databáze TempDB Databáze Objektů

Jaké jsou klíčové tabulky a postupy v databáze TEMPDB databáze, které jsou důležitépro SQL Server Profesionály vědět o?

žádné nejsou.Tato databáze se používá pro dočasnéskladování objects.It není nainstalován s anytables nebo postupy.

mohu ukládat své vlastní objekty do databáze TEMPDB?

objekty lze určitě vytvořit v TempDB, ale nebudou přetrvávat po spuštění služby SQL Server.

oprávnění databáze SQL Server TempDB

kdo má přístup k databázi TempDB a existují různé úrovně oprávnění?

každý má přístup a stejný přístup k TempDB.

zálohování databáze tempdb SQL Server

musím zálohovat databázi TempDB?

TempDB nelze zálohovat. Ukládá pouze přechodná data a je znovu vytvořenakaždé spuštění služby, takže v případě katastrofy není co Obnovit.

SQL Server TempDB Database Recovery Model

jaké obnovení TempDB by měla databáze TempDB mít a může se model obnovy změnit?

TempDB je v jednoduché obnově a to nelze změnit.

SQL Server TempDB Database Restore

je někdy potřeba obnovit databázi TempDB?

TempDB nelze obnovit. V tempdb by neměla být žádná data a žádný kód, které mají být obnoveny. Pokud se TempDB poškodí, jednoduše odstraňte data a logfiles, aby bylo možné při příštím spuštění služby vygenerovat nové.

Další Kroky
  • Tento tip ukazuje, jak tomake upozornění na problémy zjištěné v rámci databáze TempDB sizesand disku
  • Tento tip ukazuje, jak toenable okamžité inicializace souboru, což je důležitá vlastnost pro všechny DBs, butespecially TempDB, pokud to není správně dimenzován.

Naposledy Aktualizováno: 2020-07-17

se skripty

další tip tlačítko

O autorovi
MSSQLTips autor Eric BlinnEric Blinn je Sr. Datový Architekt pro panoše Pattona Boggse. Je také autorem SQL a vedoucím místní skupiny.
Zobrazit všechny mé tipy
související zdroje

  • více tipů SQL Server DBA…

You might also like

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.