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 Linux rendszeren
Ha Ön linuxos felhasználó, aki még nem ismeri az SQL Servert, az alábbi feladatok végigvezetik a teljesítmény egyes funkcióin. Ezek nem egyediek vagy a Linuxra jellemzőek, de segít ötleteket adni a további vizsgálatra szolgáló területekről. Minden példában egy hivatkozás található az adott terület részletes dokumentációjában.
Jegyzet
Az alábbi példák a AdventureWorks2022 mintaadatbázist használják. A mintaadatbázis beszerzésére és telepítésére vonatkozó utasításokért lásd: SQL Server-adatbázis áttelepítése Windowsról Linuxra biztonsági mentéssel és visszaállítással.
Oszloptárolós index létrehozása
Az oszlopcentrikus index a nagy adattárolók oszlopos adatformátumban történő tárolására és lekérdezésére szolgáló technológia, amelyet oszloptárnak neveznek.
Adjon hozzá oszlopcentrikus indexet a
SalesOrderDetailtáblához a következő Transact-SQL parancsok végrehajtásával:CREATE NONCLUSTERED COLUMNSTORE INDEX [IX_SalesOrderDetail_ColumnStore] ON Sales.SalesOrderDetail(UnitPrice, OrderQty, ProductID); GOHajtsa végre a következő lekérdezést, amely az oszlopcentrikus indexet használja a tábla vizsgálatához:
SELECT ProductID, SUM(UnitPrice) AS SumUnitPrice, AVG(UnitPrice) AS AvgUnitPrice, SUM(OrderQty) AS SumOrderQty, AVG(OrderQty) AS AvgOrderQty FROM Sales.SalesOrderDetail GROUP BY ProductID ORDER BY ProductID;Az oszlopcentrikus index használatának ellenőrzéséhez találja meg a
object_id-t, amely az oszlopcentrikus indexet jelöli, és győződjön meg arról, hogy megjelenik aSalesOrderDetailtáblázat használati statisztikáiban.SELECT * FROM sys.indexes WHERE name = 'IX_SalesOrderDetail_ColumnStore'; GO SELECT * FROM sys.dm_db_index_usage_stats WHERE database_id = DB_ID('AdventureWorks2022') AND object_id = OBJECT_ID('AdventureWorks2022.Sales.SalesOrderDetail');
In-Memory OLTP használata
Az SQL Server In-Memory OLTP-funkciókat biztosít, amelyek jelentősen javítják az alkalmazásrendszerek teljesítményét. Ez a szakasz végigvezeti a memóriában tárolt memóriaoptimalizált táblázat létrehozásának lépésein, valamint egy natívan lefordított tárolt eljáráson, amely fordítás és értelmezés nélkül is hozzáfér a táblához.
Adatbázis konfigurálása In-Memory OLTP-hez
Az adatbázist legalább 130 kompatibilitási szintre kell állítania In-Memory OLTP használatához. A
AdventureWorks2022jelenlegi kompatibilitási szintjének ellenőrzéséhez használja az alábbi lekérdezést:USE AdventureWorks2022; GO SELECT d.compatibility_level FROM sys.databases AS d WHERE d.name = DB_NAME(); GOSzükség esetén frissítse a szintet 130-ra:
ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL = 130; GOHa egy tranzakció lemezalapú táblát és memóriaoptimalizált táblát is magában foglal, elengedhetetlen, hogy a tranzakció memóriaoptimalizált része a SNAPSHOT nevű tranzakcióelkülönítési szinten működjon. Ha megbízhatóan szeretné érvényesíteni ezt a szintet a tárolók közötti tranzakció memóriaoptimalizált tábláihoz, hajtsa végre a következőket:
ALTER DATABASE CURRENT SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON; GOA memóriaoptimalizált tábla létrehozása előtt létre kell hoznia egy memóriaoptimalizált fájlcsoportot és egy tárolót az adatfájlokhoz:
ALTER DATABASE AdventureWorks2022 ADD FILEGROUP AdventureWorks_mod CONTAINS MEMORY_OPTIMIZED_DATA; GO ALTER DATABASE AdventureWorks2022 ADD FILE (NAME = 'AdventureWorks_mod', FILENAME = '/var/opt/mssql/data/AdventureWorks_mod') TO FILEGROUP AdventureWorks_mod; GO
Memóriaoptimalizált tábla létrehozása
A memóriaoptimalizált táblák elsődleges tárolója a fő memória, ezért a lemezalapú táblákkal ellentétben az adatokat nem kell beolvasni a lemezről a memóriapufferekbe. Memóriaoptimalizált tábla létrehozásához használja a MEMORY_OPTIMIZED = ON záradékot.
Hajtsa végre a következő lekérdezést a memóriaoptimalizált dbo.ShoppingCart tábla létrehozásához. Alapértelmezés szerint az adatok tartóssági okokból megmaradnak a lemezen (a TARTÓSSÁG is beállítható úgy, hogy csak a sémát őrizze meg).
CREATE TABLE dbo.ShoppingCart ( ShoppingCartId INT IDENTITY (1, 1) PRIMARY KEY NONCLUSTERED, UserId INT NOT NULL INDEX ix_UserId NONCLUSTERED HASH WITH (BUCKET_COUNT = 1000000), CreatedDate DATETIME2 NOT NULL, TotalPrice MONEY ) WITH (MEMORY_OPTIMIZED = ON); GOSzúrjon be néhány rekordot a táblába:
INSERT dbo.ShoppingCart VALUES (8798, SYSDATETIME(), NULL); INSERT dbo.ShoppingCart VALUES (23, SYSDATETIME(), 45.4); INSERT dbo.ShoppingCart VALUES (80, SYSDATETIME(), NULL); INSERT dbo.ShoppingCart VALUES (342, SYSDATETIME(), 65.4);
Natív módon lefordított tárolt eljárások
Az SQL Server támogatja a memóriaoptimalizált táblákhoz hozzáférő natívan lefordított tárolt eljárásokat. A T-SQL-utasítások gépi kódra vannak lefordítva, és natív DLL-ként vannak tárolva, ami gyorsabb adathozzáférést és hatékonyabb lekérdezés-végrehajtást tesz lehetővé, mint a hagyományos T-SQL. Azok a tárolt eljárások, amelyek NATIVE_COMPILATION-ként vannak megjelölve, natívan vannak lefordítva.
Futtassa a következő szkriptet egy natívan lefordított tárolt eljárás létrehozásához, amely nagy számú rekordot szúr be a ShoppingCart táblába:
CREATE PROCEDURE dbo.usp_InsertSampleCarts @InsertCount INT WITH NATIVE_COMPILATION, SCHEMABINDING AS BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english') DECLARE @i AS INT = 0; WHILE @i < @InsertCount BEGIN INSERT INTO dbo.ShoppingCart VALUES (1, SYSDATETIME(), NULL); SET @i += 1; END END;1 000 000 sor beszúrása:
EXECUTE usp_InsertSampleCarts 1000000;Ellenőrizze, hogy a sorok be lettek-e szúrva:
SELECT COUNT(*) FROM dbo.ShoppingCart;
A Lekérdezéstár használata
A Lekérdezéstár részletes teljesítményadatokat gyűjt a lekérdezésekről, a végrehajtási tervekről és a futtatókörnyezeti statisztikákról.
Az SQL Server 2022 (16.x) előtt a lekérdezéstár alapértelmezés szerint nincs engedélyezve, és az ALTER DATABASE-ben engedélyezhető:
ALTER DATABASE AdventureWorks2022
SET QUERY_STORE = ON;
Futtassa a következő lekérdezést a lekérdezéstárban található lekérdezésekkel és tervekkel kapcsolatos információk visszaadásához:
SELECT Txt.query_text_id,
Txt.query_sql_text,
Pl.plan_id,
Qry.*
FROM sys.query_store_plan AS Pl
INNER JOIN sys.query_store_query AS Qry
ON Pl.query_id = Qry.query_id
INNER JOIN sys.query_store_query_text AS Txt
ON Qry.query_text_id = Txt.query_text_id;
Dinamikus felügyeleti nézetek lekérdezése
A dinamikus felügyeleti nézetek a kiszolgáló állapotadatait adják vissza, amelyek felhasználhatók a kiszolgálópéldány állapotának monitorozására, a problémák diagnosztizálására és a teljesítmény finomhangolására.
A dm_os_wait statisztikai adatait tartalmazó dinamikus felügyeleti nézet lekérdezése:
SELECT wait_type,
wait_time_ms
FROM sys.dm_os_wait_stats;
Kapcsolódó tartalom
- Az OLTP In-Memory kezdeti területeinek felmérése
- Az In-Memory OLTP-funkciók használatának megtervezése az SQL Server
- hu-HU: Gyorsabb ideiglenes táblák és táblázatváltozók memóriaoptimalizálás használatával
- Memóriabeli OLTP memóriahasználatának hibaelhárítása és monitorozása
- In-Memory OLTP áttekintése és használati forgatókönyvei
- teljesítményfigyelő és hangoló eszközök
- Teljesítménnyel kapcsolatos ajánlott eljárások és konfigurációs irányelvek linuxos SQL Serverhez
- rövid útmutató: Az SQL Server telepítése és adatbázis létrehozása a Red Hat