Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Analytics platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabric
Warehouse-ban a Microsoft Fabric
SQL-adatbázisban a Microsoft Fabric
Frissíti a lekérdezésoptimalizálási táblákon vagy indexelt nézetben statisztikákat. Alapértelmezés szerint a lekérdezésoptimalizáló már frissíti a statisztikákat a lekérdezésterv továbbfejlesztéséhez; bizonyos esetekben javíthatja a lekérdezés teljesítményét UPDATE STATISTICS
vagy a tárolt eljárás sp_updatestats használatával, hogy az alapértelmezett frissítéseknél gyakrabban frissítse a statisztikákat.
A statisztikák frissítése biztosítja, hogy a lekérdezések up-todátumstatisztikákkal legyenek lefordítva. A statisztikák bármilyen folyamaton keresztüli frissítése automatikusan újrafordíthatja a lekérdezési terveket. Javasoljuk, hogy ne frissítse túl gyakran a statisztikákat, mert teljesítménybeli különbség van a lekérdezéstervek javítása és a lekérdezések újrafordításához szükséges idő között. Az adott kompromisszumok az alkalmazástól függenek.
UPDATE STATISTICS
a tempdb
használatával rendezheti a sorok mintáját a statisztikai adatok létrehozásához.
Jegyzet
További információ a Microsoft Fabric statisztikáiról: Statistics in Fabric data warehousing.
Transact-SQL szintaxis konvenciói
Szintaxis
Az SQL Server és az Azure SQL Database szintaxisa.
UPDATE STATISTICS table_or_indexed_view_name
[
{
{ index_or_statistics__name }
| ( { index_or_statistics_name } [ , ...n ] )
}
]
[ WITH
[
FULLSCAN
[ [ , ] PERSIST_SAMPLE_PERCENT = { ON | OFF } ]
| SAMPLE number { PERCENT | ROWS }
[ [ , ] PERSIST_SAMPLE_PERCENT = { ON | OFF } ]
| RESAMPLE
[ ON PARTITIONS ( { <partition_number> | <range> } [ , ...n ] ) ]
| <update_stats_stream_option> [ , ...n ]
]
[ [ , ] [ ALL | COLUMNS | INDEX ]
[ [ , ] NORECOMPUTE ]
[ [ , ] INCREMENTAL = { ON | OFF } ]
[ [ , ] MAXDOP = max_degree_of_parallelism ]
[ [ , ] AUTO_DROP = { ON | OFF } ]
] ;
<update_stats_stream_option> ::=
[ STATS_STREAM = stats_stream ]
[ ROWCOUNT = numeric_constant ]
[ PAGECOUNT = numeric_constant ]
Az Azure Synapse Analytics és a párhuzamos adattárház szintaxisa.
UPDATE STATISTICS [ schema_name . ] table_name
[ ( { statistics_name | index_name } ) ]
[ WITH
{
FULLSCAN
| SAMPLE number PERCENT
| RESAMPLE
}
]
[;]
A Microsoft Fabric szintaxisa.
UPDATE STATISTICS [ schema_name . ] table_name
[ ( { statistics_name } ) ]
[ WITH
{
FULLSCAN
| SAMPLE number PERCENT
}
]
[;]
Jegyzet
Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.
Érvek
table_or_indexed_view_name
A statisztikai objektumot tartalmazó tábla vagy indexelt nézet neve.
index_or_statistics_name vagy statistics_name | index_name vagy statistics_name
A frissíteni kívánt statisztikák statisztikáinak vagy nevének frissítéséhez használt index neve. Ha nincs megadva index_or_statistics_name vagy statistics_name, a lekérdezésoptimalizáló frissíti a tábla vagy indexelt nézet összes statisztikáját. Ide tartoznak az utasítással létrehozott statisztikák, a CREATE STATISTICS
bekapcsolt állapotban AUTO_CREATE_STATISTICS
létrehozott egyoszlopos statisztikák és az indexekhez létrehozott statisztikák.
További információ: AUTO_CREATE_STATISTICS
ALTER DATABASE SET Options. Egy tábla vagy nézet összes indexének megtekintéséhez használhatja a sp_helpindex.
FULLSCAN
Statisztikai adatok kiszámítása a tábla vagy indexelt nézetben lévő összes sor vizsgálatával.
FULLSCAN
és SAMPLE 100 PERCENT
ugyanazokkal az eredményekkel rendelkezik.
FULLSCAN
nem használható a SAMPLE
beállítással.
MINTA szám { PERCENT | SOROK }
Megadja, hogy a lekérdezésoptimalizáló hány sort használjon a statisztikai adatok frissítésekhez a táblában vagy indexelt nézetben. A PERCENT
szám értéke 0 és 100 között lehet, a ROWS
szám pedig 0 és a sorok teljes száma között lehet. Előfordulhat, hogy a lekérdezésoptimalizáló-minták tényleges százaléka vagy száma nem felel meg a megadott százalékos értéknek vagy számnak. A lekérdezésoptimalizáló például egy adatoldal összes sorát megvizsgálja.
SAMPLE
olyan speciális esetekben hasznos, amikor a lekérdezési terv az alapértelmezett mintavételezés alapján nem optimális. A legtöbb esetben nem szükséges megadni SAMPLE
, mert a lekérdezésoptimalizáló mintavételezést használ, és alapértelmezés szerint meghatározza a statisztikailag jelentős mintaméretet a kiváló minőségű lekérdezési tervek létrehozásához.
Jegyzet
Az SQL Server 2016 -ban (13.x) a 130-es adatbázis-kompatibilitási szint használatakor a statisztikai adatok mintavételezése párhuzamosan történik a statisztikák gyűjtésének teljesítményének javítása érdekében. A lekérdezésoptimalizáló párhuzamos mintastatisztikákat fog használni, ha egy tábla mérete túllép egy bizonyos küszöbértéket. Az SQL Server 2017-től (14.x) kezdve az adatbázis-kompatibilitási szinttől függetlenül a viselkedést a rendszer egy soros vizsgálatra módosította, hogy elkerülje a túlzott LATCH
várakozással kapcsolatos esetleges teljesítményproblémákat. A lekérdezési terv többi része a statisztikák frissítése során a párhuzamos végrehajtást is fenntartja, ha minősített.
SAMPLE
nem használható a FULLSCAN
beállítással. Ha nincs megadva SAMPLE
, FULLSCAN
a lekérdezésoptimalizáló mintavételezett adatokat használ, és alapértelmezés szerint kiszámítja a minta méretét.
Javasoljuk, hogy ne adjon meg vagy 0 PERCENT
0 ROWS
. Ha 0 PERCENT
meg van adva vagy 0 ROWS
meg van adva, a statisztikai objektum frissül, de nem tartalmaz statisztikai adatokat.
A legtöbb számítási feladathoz nincs szükség teljes vizsgálatra, és az alapértelmezett mintavételezés megfelelő. Bizonyos számítási feladatok azonban, amelyek érzékenyek a széles körű adateloszlásokra, nagyobb mintaméretet, vagy akár teljes vizsgálatot igényelhetnek. Bár a becslések pontosabbá válhatnak egy teljes vizsgálattal, mint a mintául vett vizsgálat, az összetett tervek nem feltétlenül hasznosak.
További információ: A statisztikaiösszetevői és fogalmai.
RESAMPLE
Frissítse az egyes statisztikákat a legutóbbi mintaarány használatával.
A használat RESAMPLE
teljes táblázatos vizsgálathoz vezethet. Az indexek statisztikái például teljes táblázatos vizsgálatot használnak a mintaarányuk alapján. Ha nincs megadva a mintabeállítások (SAMPLE
, , FULLSCAN
) egyike sem, RESAMPLE
a lekérdezésoptimalizáló mintát vesz az adatokból, és alapértelmezés szerint kiszámítja a mintaméretet.
A Microsoft Fabric RESAMPLE
Warehouse-ban nem támogatott.
PERSIST_SAMPLE_PERCENT = { ON | KI }
A következőkre vonatkozik: SQL Server 2016 (13.x) Service Pack 1 CU4, SQL Server 2017 (14.x) Service Pack 1 vagy SQL Server 2019 (15.x) és újabb verziók, Azure SQL Database, Felügyelt Azure SQL-példány
Amikor ON
a statisztikák megtartják a mintavételezési százalékot az olyan későbbi frissítéseknél, amelyek nem határoznak meg explicit módon mintavételezési százalékot. Amikor OFF
a statisztikai mintavételezési százalék alaphelyzetbe áll az alapértelmezett mintavételezésre a későbbi frissítésekben, amelyek nem határoznak meg explicit módon mintavételezési százalékot. Az alapértelmezett érték a OFF
.
DBCC-SHOW_STATISTICS és sys.dm_db_stats_properties a kijelölt statisztika megmaradó minta százalékos értékét teszi elérhetővé.
Ha AUTO_UPDATE_STATISTICS
végrehajtásra kerül, akkor a megmaradó mintavételi százalékot használja, ha van, vagy ha nem, akkor használja az alapértelmezett mintavételi százalékot.
RESAMPLE
ez a beállítás nem befolyásolja a viselkedést.
Ha a táblázat csonkolva van, a csonkolt halomra vagy a B-fára (HoBT) épülő összes statisztika visszaáll az alapértelmezett mintavételezési százalékra. Hasonlóképpen, ha a statisztikák sorok nélkül frissülnek egy objektumon, akkor az visszaállítja az alapértelmezett mintavételezési százalékot, még akkor is, ha PERSIST_SAMPLE_PERCENT
korábban konfigurálva volt.
Jegyzet
Az SQL Serverben egy olyan index újraépítésekor, amely korábban frissítette PERSIST_SAMPLE_PERCENT
a statisztikákat, a rendszer visszaállítja az alapértelmezett mintaszázalékot. Az SQL Server 2016 (13.x) SP2 CU17, az SQL Server 2017 (14.x) CU26 és az SQL Server 2019 (15.x) CU10 rendszertől kezdve a megmaradó minta százalékos aránya még az index újraépítésekor is megmarad.
PARTÍCIÓKON ( { <partition_number> | <tartomány> } [ , ... n ] ) ]
: SQL Server 2014 (12.x) és újabb verziók
Kényszeríti a záradékban ON PARTITIONS
meghatározott partíciókat lefedő levélszintű statisztikák újrafordítását, majd egyesítését a globális statisztikák létrehozásához.
WITH RESAMPLE
azért van szükség, mert a különböző mintasebességgel létrehozott partícióstatisztikák nem egyesíthetők egymással.
ALL | OSZLOPOK | INDEX
Frissítse az indexekhez létrehozott összes meglévő statisztikát, egy vagy több oszlopban létrehozott statisztikákat vagy statisztikákat. Ha egyik beállítás sincs megadva, az utasítás frissíti a UPDATE STATISTICS
tábla vagy az indexelt nézet összes statisztikáját.
NORECOMPUTE
Tiltsa le az automatikus statisztikafrissítési beállítást AUTO_UPDATE_STATISTICS
a megadott statisztikákhoz. Ha ez a beállítás meg van adva, a lekérdezésoptimalizáló végrehajtja ezt a statisztikai frissítést, és letiltja a jövőbeli frissítéseket.
A beállítás viselkedésének AUTO_UPDATE_STATISTICS
újbóli engedélyezéséhez futtassa UPDATE STATISTICS
újra a beállítást vagy a NORECOMPUTE
futtatás sp_autostats
nélkül.
Figyelmeztetés
Ezzel a beállítással optimálisnál rosszabb lekérdezési terveket hozhat létre. Javasoljuk, hogy ezt a lehetőséget takarékosan, majd csak egy minősített rendszergazda használja.
A beállítással kapcsolatos további információkért lásd az AUTO_STATISTICS_UPDATE
ALTER DATABASE SET beállításai című témakört.
NÖVEKMÉNYES = { BE | KI }
: SQL Server 2014 (12.x) és újabb verziók
Amikor ON
a rendszer a partícióstatisztikák alapján hozza létre újra a statisztikákat. Amikor OFF
a statisztikai fa el lesz ejtve, és az SQL Server újra kiszámítja a statisztikákat. Az alapértelmezett érték a OFF
.
Ha a partíciónkénti statisztikák nem támogatottak, hiba jön létre. A növekményes statisztikák nem támogatottak a következő statisztikai típusokhoz:
- Olyan indexekkel létrehozott statisztikák, amelyek nincsenek partícióhoz igazítva az alaptáblához.
- Az Always On olvasható másodlagos adatbázisokon létrehozott statisztikák.
- Írásvédett adatbázisokon létrehozott statisztikák.
- Szűrt indexeken létrehozott statisztikák.
- Nézeteken létrehozott statisztikák.
- Belső táblákon létrehozott statisztikák.
- Térbeli indexekkel vagy XML-indexekkel létrehozott statisztikák.
MAXDOP = max_degree_of_parallelism
A következővonatkozik: SQL Server (SQL Server 2016 (13.x) SP2 és SQL Server 2017 (14.x) CU3).
Felülbírálja a max degree of parallelism
statisztikai művelet időtartamára vonatkozó konfigurációs beállítást. További információ: A kiszolgáló konfigurációs beállításainak maximális fokának konfigurálása. A párhuzamos terv végrehajtásához használt processzorok számának korlátozására használható MAXDOP
. A maximális érték 64 processzor.
max_degree_of_parallelism lehet:
1
Letiltja a párhuzamos tervgenerálást.
>1
A párhuzamos statisztikai műveletekben használt processzorok maximális számát az aktuális rendszerterheléstől függően a megadott számra vagy annál kevesebbre korlátozza.
0
(alapértelmezett)
A processzorok tényleges számát használja, vagy kevesebbet az aktuális rendszerterhelés alapján.
update_stats_stream_option
Csak tájékoztatási célokra van meghatározva. Nem támogatott. A jövőbeli kompatibilitás nem garantált.
AUTO_DROP = { ON | KI }
A következővonatkozik: SQL Server 2022 (16.x) és újabb verziók
Jelenleg, ha a statisztikákat egy harmadik féltől származó eszköz hozza létre egy ügyféladatbázison, ezek a statisztikai objektumok blokkolhatják vagy zavarhatják az ügyfél által kívánt sémamódosításokat.
(Az SQL Server 2022-től kezdve (16.x)| Ez a funkció olyan módban teszi lehetővé a statisztikai objektumok létrehozását, hogy a sémamódosítás ne a statisztikák blokkolva legyenek, hanem a statisztikák el lesznek dobva. Ily módon az automatikus elvetési statisztikák úgy viselkednek, mint az automatikusan létrehozott statisztikák.
Jegyzet
Az automatikusan létrehozott statisztikák Auto_Drop tulajdonságának beállítása vagy törlése hibákat eredményezhet – az automatikusan létrehozott statisztikák mindig automatikus elvetést használnak. Egyes biztonsági másolatok visszaállításakor előfordulhat, hogy ez a tulajdonság helytelenül van beállítva a statisztikai objektum következő frissítéséig (manuálisan vagy automatikusan). Az automatikusan létrehozott statisztikák azonban mindig úgy viselkednek, mint az automatikus csökkenési statisztikák.
Megjegyzések
Mikor kell FRISSÍTENI A STATISZTIKÁKAT?
További információ a UPDATE STATISTICS
használatáról: Mikor frissítse a statisztikákat.
Korlátozások
A statisztikák frissítése külső táblákban nem támogatott. Egy külső tábla statisztikáinak frissítéséhez dobja le és hozza létre újra a statisztikákat.
Az oszlopcentrikus indexeken automatikusan létrehozott statisztikák frissítése nem támogatott. Ennek megkísérlése a 35337-ös hibát eredményezi:
UPDATE STATISTICS failed because statistics cannot be updated on a columnstore index. UPDATE STATISTICS is valid only when used with the STATS_STREAM option.
További információ: Indexstatisztika.Az egyes oszlopok statisztikáinak vagy oszlopkészleteinek frissítése támogatott.
A
MAXDOP
beállítás nem kompatibilisSTATS_STREAM
,ROWCOUNT
ésPAGECOUNT
beállításokkal.A
MAXDOP
beállítást a Resource Governor számítási feladatcsoportMAX_DOP
beállítás korlátozza, ha használja.
Az összes statisztika frissítése sp_updatestats
Az adatbázis összes felhasználó által definiált és belső táblájának statisztikáinak frissítéséről a tárolt sp_updatestatscímű témakörben olvashat. Az alábbi parancs például meghívja sp_updatestats
az adatbázis összes statisztikájának frissítésére.
EXECUTE sp_updatestats;
Automatikus index- és statisztikakezelés
A adaptív indextöredezettség-mentesítési segítségével automatikusan kezelheti egy vagy több adatbázis indextöredezettség- és statisztikai frissítéseit. Ez az eljárás automatikusan kiválasztja, hogy újraépít vagy átrendez egy indexet a töredezettségi szintnek megfelelően, többek között más paraméterekkel, és lineáris küszöbértékkel frissíti a statisztikákat.
Az utolsó statisztikai frissítés meghatározása
A statisztikák legutóbbi frissítésének időpontjának meghatározásához használja a STATS_DATE függvényt.
PDW / Azure Synapse Analytics
Az Elemzési platformrendszer (PDW) és az Azure Synapse Analytics nem támogatja a következő szintaxist:
UPDATE STATISTICS t1 (a, b);
UPDATE STATISTICS t1 (a) WITH SAMPLE 10 ROWS;
UPDATE STATISTICS t1 (a) WITH NORECOMPUTE;
UPDATE STATISTICS t1 (a) WITH INCREMENTAL = ON;
UPDATE STATISTICS t1 (a) WITH STATS_STREAM = 0x01;
Engedélyek
A táblához vagy nézethez ALTER
engedély szükséges.
Példák
Egy. Tábla összes statisztikáinak frissítése
Az alábbi példa frissíti az SalesOrderDetail
tábla összes statisztikáit.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Sales.SalesOrderDetail;
GO
B. Index statisztikáinak frissítése
Az alábbi példa frissíti a AK_SalesOrderDetail_rowguid
tábla SalesOrderDetail
indexének statisztikáit.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Sales.SalesOrderDetail (AK_SalesOrderDetail_rowguid);
GO
C. Statisztikák frissítése 50 százalékos mintavételezéssel
Az alábbi példa létrehozza és frissíti a Name
tábla ProductNumber
és Product
oszlopainak statisztikáit.
USE AdventureWorks2022;
GO
CREATE STATISTICS Products
ON Production.Product([Name], ProductNumber)
WITH SAMPLE 50 PERCENT;
-- Time passes. The UPDATE STATISTICS statement is then executed.
UPDATE STATISTICS Production.Product (Products)
WITH SAMPLE 50 PERCENT;
D. Statisztikák frissítése a FULLSCAN és a NORECOMPUTE használatával
Az alábbi példa frissíti a Products
tábla Product
statisztikáit, a Product
tábla összes sorának teljes vizsgálatát kényszeríti ki, és kikapcsolja a Products
statisztikák automatikus statisztikáit.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Production.Product (Products)
WITH FULLSCAN, NORECOMPUTE;
GO
Példák: Azure Synapse Analytics and Analytics Platform System (PDW)
E. Táblázat statisztikáinak frissítése
Az alábbi példa frissíti a CustomerStats1
tábla Customer
statisztikáit.
UPDATE STATISTICS Customer (CustomerStats1);
F. Statisztikák frissítése teljes vizsgálattal
Az alábbi példa frissíti a CustomerStats1
statisztikát a Customer
tábla összes sorának vizsgálata alapján.
UPDATE STATISTICS Customer (CustomerStats1) WITH FULLSCAN;
G. Tábla összes statisztikáinak frissítése
Az alábbi példa frissíti az Customer
tábla összes statisztikáit.
UPDATE STATISTICS Customer;
H. A CREATE STATISTICS használata AUTO_DROP
Az automatikus csepegtetési statisztikák használatához egyszerűen adja hozzá a következőket a statisztikák létrehozásához vagy frissítéséhez használt "WITH" záradékhoz.
UPDATE STATISTICS Customer (CustomerStats1) WITH AUTO_DROP = ON;
Kapcsolódó tartalom
- Statisztika
- Statisztika a Microsoft Fabric
- ALTER DATABASE (Transact-SQL)
- sys.dm_db_stats_properties (Transact-SQL)
- sys.dm_db_stats_histogram (Transact-SQL)
- CREATE STATISTICS (Transact-SQL)
- DBCC SHOW_STATISTICS (Transact-SQL)
- DROP STATISTICS (Transact-SQL)
- sp_autostats (Transact-SQL)
- sp_updatestats (Transact-SQL)
- STATS_DATE (Transact-SQL)