SQL Server TempDB bemutató

írta: Eric Blinn | Frissítve: 2020-07-17 | Megjegyzések (2) | kapcsolódó: több > Rendszeradatbázisok

probléma

az SQL Server alapértelmezés szerint négy rendszeradatbázissal van telepítve. Ezek a master, model, msdb és TempDB. Tudnom kell, hogy mi a “TempDB”rendszeradatbázis, és mire használják. Ezek a korábbi oktatóanyagok covermaster, modell ésmsdb nagyon részletesen.

megoldás

ez a tipp a TempDB adatbázist fogja lefedni. A TempDB egy adatbázis, amely rendelkeziksok funkció az SQL Server-en belül, de ritkán hívják kifejezetten. Annyi funkciója van, hogy gyakran az egyik legforgalmasabb, ha nem a legforgalmasabb adatbázis a legtöbb SQL Server-példányon. Olvassa el, hogy megtudja, miezek közül a funkciók közül sok!

SQL Server TempDB áttekintés

mi az SQL Server TempDB célja?

a TempDB egyik funkciója valami olyasmi, mint egy oldal vagy swap fájlaz operációs rendszer szintjén. Ha egy SQL Server-művelet túl nagy ahhoz, hogy befejezze a memóriában, vagy ha a lekérdezés kezdeti memória-támogatása túl kicsi, a művelet áthelyezhető a lemezre a TempDB-ben.

a TempDB másik funkciója a tárolásideiglenes táblák. Bárki, aki ideiglenes táblát hozott létre a T-SQL-ben egy font vagy hash előtag (#) vagy a doublepound/hash előtag (##) használatával, létrehozott egy objektumot a TempDB-ben, mivel ezek itt vannak tárolva.

CREATE TABLE #MSSQLTips (RowID int);
ez az SSMS képernyőkép azt mutatja, hogy az # mssqltips ideiglenes táblát a TempDB tárolja egy "ideiglenes táblák " nevű részfában"

amikor az atrigger végrehajtja a beillesztett és törölt virtuális táblákat, a rendszer eltároljaa TempDB-ben.

minden olyan adatbázis, amely useREAD elkötelezett pillanatfelvétel-elkülönítést (RCSI) használ, a tempdb-ben tárolja a saját verziószámozási adatait.

a TempDB fenti funkciói mindegyike befejeződik anélkül, hogy ténylegesen megemlítené a tempdb-t név szerint, így meglepő felhasználások lehetnek a TempDB számára.

a TempDB-t többféleképpen is meg lehet nevezni. Táblák generatedin TempDB hivatkozva az adatbázis egy create utasítás. A kód pontosan úgy néz ki, mint egy normál DDL művelet, de TempDB-ben futtatva a táblázat definíció szerint ideiglenes tábla.

CREATE TABLE TempDB.dbo.MSSQLTips(RowID int);
hasonlóan az utolsó screenshot Ez azt mutatja, hogy a táblázat lehet

TempDB regenerálódik után minden elején az SQL Server példány. Az előző munkamenet során a TempDB-ben létrehozott bármely objektum nem fog fennmaradni a szolgáltatás újraindításakor. A TempDB a kezdeti objektumlistát a modelladatbázisból kapja, amely általában üres vagy majdnem üres lesz.

az Index karbantartást opcionálisan a TempDB-ben is meg lehet kérni, ahelyett, hogy a felhasználói adatbázisban lévő szabad helyet használná.

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

futtatható az SQL Server TempDB adatbázis nélkül?

az SQL Server TempDB nélkül nem futtatható (kivéve nagyon extrém helyreállítási forgatókönyveket és nagyon rövid időszakokat).

a TempDB adatbázis verziója egyedi az SQL Server verziójához, kiadásához és patchleveléhez?

TempDB egy többnyire üres adatbázis, és nincs semmi különös about about any edition vagy patch szinten az SQL Server.

az elmúlt években csak 2 jelentős változás történt a TempDB-ben a verzió szintjén. Az első az, hogy az SQL Server 2016-tól kezdve a tempdb viselkedése megváltozott, így a T1117 és a T1118 nyomkövetési jelzők engedélyezése már nem tekinthető a legjobb gyakorlatnak. A második az, hogy az SQL Server 2019-től kezdve a TempDB néhány nehéz használatú rendszerobjektumát frissítették a memóriában lévő táblákra a tartalom csökkentése érdekébenés javítsa a kiszolgáló általános teljesítményét.

el tudja dobni vagy átnevezni a TempDB adatbázist, és ezt bármilyen okból meg kell tennie?

a TempDB-t nem lehet eldobni, leválasztani, offline állapotba hozni vagy átnevezni. Ezen műveletek bármelyikének megkísérlése hibát fog eredményezni. Nincs ok arra, hogy ezt meg kell kísérelni, mivel ez egy kritikus rendszeradatbázis.

SQL Server TempDB Adatbázis helye

milyen fizikai fájlok és nevek támogatják a TempDB adatbázist?

az alapértelmezett logikai fájlnevek a tempdev az adatoknál és a templog a naplóknál.Ezek megtalálhatók a lemezen tempdb.mdf és templog.ldf ill. Tempdbgyakran sok adatfájlok.

hány TempDB adatfájlnak kell lennie?

kell lennie egy TempDB adatfájlt minden szál/core/vCPU a példánylegfeljebb 8.

hol találom a TempDB adatbázist a lemezen és az SSMS-ben?

a fájlok a sys lekérdezésével találhatók meg.sysfiles dmv vagy a fájl ablaktábla a databaseproperties ablakban.

SELECT * FROM TempDB.sys.sysfiles;

van-e különbség abban, hogy a TempDB adatbázisfájlok hol találhatók (szükségük van-e a C:\, SAN stb.)?

a legjobb gyakorlatok azt diktálják, hogy a TempDB adatfájlok aktivitási szintjük miatt a leggyorsabban tárolhatók legyenek. Bizonyos esetekben ez tárolást jelentheta felhasználói adatbázis adatfájljaival, de egy külön kötet külön lemezen vanelőnyben részesítve, ha rendelkezésre áll.

különböző vélemények vannak a TempDB naplófájlról, de ez a szerző inkább ezt a fájlt helyezi el a többi tranzakciós naplófájllal együtt.

áthelyezhető a TempDB adatbázis?

a TempDB adatbázis áthelyezhető. A TempDB mozgatásának módja egyszerűmegvalósítani. Egyszerűen módosítsa a kívánt fájl(ok) fájlnév tulajdonságát. Az SQLServer az új névvel és/vagy az új helyen hozza létre a fájlo(ka) t a következő szolgáltatás indításakor. Csak ne felejtsd el, hogy menjen vissza, és törölje a nowunused TempDB fájlokat, hogy marad hátra.

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

SQL Server TempDB adatbázis mérete és növekedése

hogyan kell konfigurálni az adatbázis és a tranzakciós napló növekedési beállításait a TempDB adatbázis számára?

az Autogrowth beállításokat meghatározott számú MB-ra kell beállítani, nem pedig százalékra.Minden adatfájlnak azonos számú MB-t kell beállítania a növekedéshez.

az adatbázis fájljainak jobb méretezése általában a legjobb gyakorlat, de soha nem annyira, mint a TempDB esetében. Figyelje a példányt – különösen, ha azúj–, és határozza meg, hogy a fájlok normál működés közben nőnek-e.Ha igen, változtassa meg a kezdő méretet úgy, hogy az SQL Server ne kényszerüljön a fájlok következetes növekedésére minden szolgáltatás indítása után.

mekkora a TempDB adatbázis tipikus mérete és mekkora lehet?

erre a kérdésre nincs jó válasz. Ami egy példányra jellemző, lehetnem jellemző a másikra. Ez a szerző látott olyan eseteket, amikor a TempDB alapvetően kihasználatlan, átlagosan csak néhány MB használt helyet foglal el egy adott időpontban. Mégis, másokat folyamatosan lekérdeznek, és több száz GB helyet használnak – még a TB-ben mért intospace-ben is -, különösen az index karbantartási ablakában.

annak eldöntésekor, hogy mennyi helyet kell szentelni a TempDB-nek egy új példányon, kevés dolgot lehet tenni. Az új példány helyett egy régebbi, existinginstance? Ha igen, használjon perfmon nyomkövetést vagy ütemezett DMV-rögzítést a TempDB-ben használt hely meghatározásához több nap alatt. Győződjön meg róla, hogy tartalmazzaegy karbantartási ablak a rögzítéshez. Próbáljon meg elegendő helyet kiosztani az új példányon, hogy figyelembe vegye a nyomkövetés során elfoglalt legnagyobb használt helyet további kígyózási szobával. Ezután a megfelelő méretű fájlokat, hogy illeszkedjen a tér elosztását.

az alábbi 2 lekérdezés segíthet. Az első pillanatfelvételt készít az adat-és naplófájlok méretéről, valamint a fájlokban használt területről. Ez canbe futtatni rendszeresen követni használat idővel. A második lekérdezés visszaadja, hogy hányszor nőtt a naplófájl az instancewas legutóbbi újraindítása óta.

ha nincs olyan munkaterhelés, amely útmutatóként használható, és nincs más útmutatás, talán egy szoftvergyártótól, akkor az egyetlen dolog, amit meg lehet tenni, az, hogy megbizonyosodjon arról, hogy van-e hely a TempDB-ben a TempDB-ben rendezhető legnagyobb egyedi objektumok számára az index karbantartása során. Innen figyelemmel kíséri a felhasználást, és ennek megfelelően állítsa be.

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';

kiszolgáló TempDB adatbázis karbantartása

összezsugoríthatja a TempDB adatbázis adatbázisát és tranzakciós naplóját?

technikailag igen, de ez nem olyan művelet, amelyet valaha is be kell fejezni.A cél mindig a megfelelő méretű TempDB legyen. Ha valamilyen egyszeri műveletezek a fájlok megmagyarázhatatlanul növekednek, akkor a nextservice újraindításakor normalizálódnak.

újra kell építeni az indexeket?

a TempDB nem lesz része az indexhez kapcsolódó karbantartási terveknek. Ez azt jelenti, hogy nem kell újraépíteni az indexeket, átszervezni vagy frissíteni a statisztikákat.

ha futtatja az integritás-ellenőrzéseket, mi a kód?

különböző vélemények vannak arról, hogy ellenőrizni kell-e a tempdb integritását.Ez a szerző kifejti az érvet mellette és ellene, és lehetővé teszi az olvasó számára, hogy döntsön.

ellen: az integritás-ellenőrzési művelet nem tudja ellenőrizni a TempDB-t ugyanolyan összességgel, mint az összes többi adatbázis.A TempDB-ben létező adatok nagyon tranziensek, így az integritás-ellenőrzési művelet nem fog találni egy adott időpontban.Ugyanebből az okból, minden olyan adat, amely megsérül, valószínűleg aktív adat lesz, amely riasztást okoz, amikor a lemezről olvassák jóval az integritás-ellenőrzési művelet meghívása előtt.

mert: míg az integritás-ellenőrzés operationcannot ellenőrizni mindent TempDB, hogy ellenőrzi más adatbázisok, amelyek nem jelenti azt, hogy nincs értéke.A TempDB egy integrált adatbázis, ésha korrupció van, akkor feltétlenül tudnia kell róla, hogy korrekciós lépéseket lehessen tenni.

az integritás-ellenőrzés futtatásához szükséges kód az alábbiakban található.

DBCC CHECKDB ('TempDB'); 

SQL Server TempDB adatbázis-objektumok

melyek azok a legfontosabb táblák és eljárások a TEMPDB adatbázisban, amelyekről fontos tudni az SQL Server szakembereinek?

nincsenek.Ezt az adatbázist a temporarystorage objects.It nem jön telepítve anytables vagy eljárások.

tárolhatom a saját objektumaimat a TEMPDB adatbázisban?

objektumok természetesen létrehozhatók a TempDB-ben, de nem maradnak fenn az SQL Server szolgáltatás következő indításakor.

SQL Server TempDB Adatbázis-engedélyek

kinek van hozzáférése a TempDB adatbázishoz, és vannak-e különböző szintű engedélyek?

mindenkinek van hozzáférése a TempDB-hez.

SQL Server TempDB adatbázis biztonsági mentése

biztonsági másolatot kell készítenem a TempDB adatbázisról?

a TempDB nem menthető. Csak átmeneti adatokat tárol, és a szolgáltatás minden indításakor újra létrejön, így katasztrófa esetén nincs mit helyreállítani.

SQL Server TempDB adatbázis-helyreállítási modell

milyen helyreállítási TempDB-vel kell rendelkeznie a TempDB adatbázisnak, és módosítható-e a helyreállítási modell?

a TempDB egyszerű helyreállításban van, és ez nem változtatható meg.

SQL Server TempDB Database Restore

szükség van-e valaha a TempDB adatbázis visszaállítására?

a TempDB nem állítható vissza. A tempdb-ben nem lehet adat vagy kód, amelyet vissza kell állítani. Ha a TempDB megsérül, egyszerűen törölje az adatokat és a naplófájlokat, hogy a következő szolgáltatás indításakor újak keletkezhessenek.

következő lépések
  • ez a tipp megmutatja, hogyan kell riasztásokat készíteni a TempDB méretein belül talált problémákrólés lemezterület
  • ez a tipp bemutatja, hogyan lehet engedélyezni az azonnali fájl inicializálást, amely minden DBs fontos jellemzője, de különösen a TempDB, ha nem megfelelő méretű.

Utolsó frissítés: 2020-07-17

szkriptek beszerzése

következő tipp gomb

A szerzőről
Mssqltips szerző Eric Blinn Eric Blinn az idősebb. Patton Boggs Squire adatépítésze. Ő is egy SQL szerző és PASS Helyi Csoport vezetője.
az összes tippem megtekintése
kapcsolódó források

  • további SQL Server DBA tippek…

You might also like

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.