sql server 2008 { Á ttekintés 2. r ész }

23

Upload: gurit

Post on 11-Jan-2016

20 views

Category:

Documents


0 download

DESCRIPTION

SQL Server 2008 { Á ttekintés 2. r ész }. Soczó Zsolt ASP.NET MVP, MCSD, MCDBA zsolt.soczo @ gmail.com Research Engineer Qualification Developement. Tartalom. MERGE utasítás Komponálható DML GROUPING SETS Adatt ömörítés Csillag Join és Bitmap Filter Sparse oszlopok - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SQL  Server 2008  {  Á ttekintés  2. r ész }
Page 2: SQL  Server 2008  {  Á ttekintés  2. r ész }
Page 3: SQL  Server 2008  {  Á ttekintés  2. r ész }

MERGE MERGE utasításutasítás

KomponálhatóKomponálható DML DML

GROUPING SETSGROUPING SETS

AdattAdattömörítésömörítés

Csillag Join és Bitmap FilterCsillag Join és Bitmap Filter

Sparse Sparse oszlopokoszlopok

Filtered indexFiltered index

Full Text Full Text KeresőKereső

Megbízható függőségekMegbízható függőségek

Profiler Deprecation Profiler Deprecation események események

ApróságokApróságok

Page 4: SQL  Server 2008  {  Á ttekintés  2. r ész }

• INSERT/UPDATE/DELETE egy mINSERT/UPDATE/DELETE egy művelettelűvelettel• Gyorsabb, mint Gyorsabb, mint a a kkülön I/U/D – 1x megy végig a táblákonülön I/U/D – 1x megy végig a táblákon

• AdatbetöltésekreAdatbetöltésekre• UPSERT eljárásokhozUPSERT eljárásokhoz• Szinkronizáló alkalmazásokhozSzinkronizáló alkalmazásokhoz

• A műveletek egy tranzakcióban futnakA műveletek egy tranzakcióban futnak

merge into merge into Cel Cel usingusing Forras Forras onon Forras.Id = Cel.Id Forras.Id = Cel.Id

when matched then when matched then

update set Cel.Adat = Forras.Adatupdate set Cel.Adat = Forras.Adat, ..., ...

when target not matched then when target not matched then

insert (Id, Adat, insert (Id, Adat, ......) )

values(Forras.Id, Forras.Adat, values(Forras.Id, Forras.Adat, ......) )

when source not matched when source not matched then delete;then delete;

merge into merge into Cel Cel usingusing Forras Forras onon Forras.Id = Cel.Id Forras.Id = Cel.Id

when matched and when matched and (Forras.OszlopN <> Cel.OszlopN) (Forras.OszlopN <> Cel.OszlopN)

then then

update set Cel.Adat = Forras.Adatupdate set Cel.Adat = Forras.Adat, ..., ...

when target not matched then when target not matched then

insert (Id, Adat, insert (Id, Adat, ......) )

values(Forras.Id, Forras.Adat, values(Forras.Id, Forras.Adat, ......) )

when source not matched when source not matched then delete;then delete;

Page 5: SQL  Server 2008  {  Á ttekintés  2. r ész }

Adatmódosító műveletek által érintett Adatmódosító műveletek által érintett sorok felhasználása „virtuális” táblakéntsorok felhasználása „virtuális” táblaként

Későbbi verzióban nem csak insert lehet Későbbi verzióban nem csak insert lehet a művelet céljaa művelet célja

insert into Egyiktábla(Oszlop) select Oszlop1 from(update MásikTáblaSet Oszlop1 = Újérték output inserted.Oszlop1) as d; 

Page 6: SQL  Server 2008  {  Á ttekintés  2. r ész }
Page 7: SQL  Server 2008  {  Á ttekintés  2. r ész }

A GROUP BY kibővítéseA GROUP BY kibővítéseTöbb feltétel szerinti csoportosításTöbb feltétel szerinti csoportosítás

Egy eredményhalmazt ad visszaEgy eredményhalmazt ad vissza(több GROUP BY és UNION ALL-lal helyettesíthető)(több GROUP BY és UNION ALL-lal helyettesíthető)

Egyszerűsíti a többféle szempont szerint Egyszerűsíti a többféle szempont szerint aggregálásokataggregálásokat

Gyorsabb mint a Gyorsabb mint a UNION-os megoldásUNION-os megoldásÚjrahasznosítja a részeredményeketÚjrahasznosítja a részeredményeket

Egyszer megy végig a forrásadatokonEgyszer megy végig a forrásadatokon

SELECT C1, C2, … , Cn, Agg(M1), … , Agg(Mk) FROM T GROUP BY GROUPING SETS ((G1), (G2), … , (Gx))

Page 8: SQL  Server 2008  {  Á ttekintés  2. r ész }

SELECT D.CalendarYear, SELECT D.CalendarYear,

D.CalendarQuarter,D.CalendarQuarter,

T.SalesTerritoryCountry,T.SalesTerritoryCountry,

SUM(F.SalesAmount)SUM(F.SalesAmount) AS SalesAmount AS SalesAmount

FROM dbo.FactResellerSales FFROM dbo.FactResellerSales F

INNER JOIN dbo.DimDate D INNER JOIN dbo.DimDate D

ON F.OrderDateKey = D.DateKeyON F.OrderDateKey = D.DateKey

INNER JOIN dbo.DimSalesTerritory T ONINNER JOIN dbo.DimSalesTerritory T ON

F.SalesTerritoryKey = F.SalesTerritoryKey =

T.SalesTerritoryKeyT.SalesTerritoryKey

GROUP BY GROUPING SETS (GROUP BY GROUPING SETS (

(CalendarYear, CalendarQuarter, (CalendarYear, CalendarQuarter,

SalesTerritoryCountry),SalesTerritoryCountry),

(CalendarYear, CalendarQuarter),(CalendarYear, CalendarQuarter),

(SalesTerritoryCountry),(SalesTerritoryCountry),

())())

ORDER BY CalendarYear, ORDER BY CalendarYear,

CalendarQuarter, CalendarQuarter,

SalesTerritoryCountrySalesTerritoryCountry

Ors

zág

Év, negyedév

Országonkénti összes

Idő-szakiösszes

Teljes összeg

Év, negyedév, ország összes

Page 9: SQL  Server 2008  {  Á ttekintés  2. r ész }

Táblák és indexek tartalmát tárolja tömörítveTáblák és indexek tartalmát tárolja tömörítveElsősorban adattárházak tény tábláihoz (mert a Elsősorban adattárházak tény tábláihoz (mert a módosításokat kicsit lassítja)módosításokat kicsit lassítja)

Lehetségesen gyorsabb lekérdezésekLehetségesen gyorsabb lekérdezésekIO intenzív lekérdezések eseténIO intenzív lekérdezések esetén

Kevesebb IO „költség”Kevesebb IO „költség”

De több CPU „költség”De több CPU „költség”

2-7-szeres tömörítés2-7-szeres tömörítés

A többi szolgáltatás számára észrevétlenA többi szolgáltatás számára észrevétlen

Page 10: SQL  Server 2008  {  Á ttekintés  2. r ész }

Sor tömörítésSor tömörítésfix adatok változó hosszúságú kódolása (int, decimal, stb.)fix adatok változó hosszúságú kódolása (int, decimal, stb.)

Lap tömörítésLap tömörítésPrefix enkódolás Prefix enkódolás

Adatszótár használata (hashtable-szerű működés)Adatszótár használata (hashtable-szerű működés)

BLOB adatok (varchar(max) stb.) nem tBLOB adatok (varchar(max) stb.) nem tömörítettekömörítettekMegoldások: Megoldások: sajsaját függvény, saját típus, alkalmazás tömörít, át függvény, saját típus, alkalmazás tömörít, FILESTREAM tömörített NTFS-enFILESTREAM tömörített NTFS-en

alamizsna

3dár

<null>

4uszi

0lakatos

aladár

alamizsna

alamuszi

lakatos

Anchor sor

Page 11: SQL  Server 2008  {  Á ttekintés  2. r ész }

Mennyi nyereség várható?Mennyi nyereség várható?

Bekapcsolás tábláraBekapcsolás táblára

IndexreIndexre

alter table Tába rebuild with (data_compression = page vagy row)

alter index Indexnév on Tábla rebuild with (data_compression = page vagy row);

exec sp_estimate_data_compression_savings 'Séma', 'Tábla', Index id, Partíció, 'row' vagy 'page'

Page 12: SQL  Server 2008  {  Á ttekintés  2. r ész }

Új, belső módszer csillagtáblákra épülő JOIN-Új, belső módszer csillagtáblákra épülő JOIN-ok gyorsításáraok gyorsítására

Hatalmas, n x 100 millió soros táblákra isHatalmas, n x 100 millió soros táblákra is

Bloom Filter implementációBloom Filter implementáció

FeltételekFeltételekEgyoszlopos, egyenlőség alapú JOINEgyoszlopos, egyenlőség alapú JOIN

Integer a legjobb, in-row optimizationInteger a legjobb, in-row optimization

Csak párhuzamos végrehajtási tervbenCsak párhuzamos végrehajtási tervben

A Tény tábla legyen a legnagyobbA Tény tábla legyen a legnagyobb

Sok szál és memória kell hozzáSok szál és memória kell hozzá

Page 13: SQL  Server 2008  {  Á ttekintés  2. r ész }

““Sparse”Sparse” attribútum az oszlopon attribútum az oszloponTárolás optimalizálásTárolás optimalizálás: : 0 bájt a NULL értékek tárolása0 bájt a NULL értékek tárolása

NULL NULL tömörítés a tömörítés a TDSTDS (drót) szinten (drót) szinten

Az alkalmazások nem látnak belőle semmitAz alkalmazások nem látnak belőle semmit

Max. 3Max. 30000 egy t0000 egy táblánáblán

XML-ként is láthatók és módosíthatók a sparse XML-ként is láthatók és módosíthatók a sparse oszlopok (Sparse Column Set)oszlopok (Sparse Column Set)

Gyorsabb lehet mint a többtáblás Gyorsabb lehet mint a többtáblás (Entity-Attribute-Value) design(Entity-Attribute-Value) design

Entity-Attribute-Value Sparse

Page 14: SQL  Server 2008  {  Á ttekintés  2. r ész }

Az adatok egy Az adatok egy {{részhalmazárarészhalmazára}} épített épített nonclustered indexnonclustered index

Kicsi index, kicsi IOKicsi index, kicsi IO

Sparse oszlopokkal rendelkező táblákra Sparse oszlopokkal rendelkező táblákra isis kiváló, csak a tényleges (nem NULL) kiváló, csak a tényleges (nem NULL) adatokat indexelveadatokat indexelve

create nonclustered index idx_BOFon Production.BillOfMaterials (ComponentID, StartDate)where EndDate IS NOT NULL

Page 15: SQL  Server 2008  {  Á ttekintés  2. r ész }
Page 16: SQL  Server 2008  {  Á ttekintés  2. r ész }

Full-Text Full-Text motor és az indexek teljesen integráltakmotor és az indexek teljesen integráltakKatalógusKatalógus, , az az index index és a nem indexelendő szavak listája (stoplist) az és a nem indexelendő szavak listája (stoplist) az adatbázisban lakikadatbázisban lakik

A motor is az adatbázisban fut!A motor is az adatbázisban fut! (a sz (a szótördelés nemótördelés nem))

Jobb teljesítményJobb teljesítményVegyes lekérdezések (FullText Vegyes lekérdezések (FullText & & Relációs) gyorsabbakRelációs) gyorsabbak

Az optimalizáló tud a FT indexrőlAz optimalizáló tud a FT indexről

FileStream integráltFileStream integrált

Nyitottá vált, látható minden működési részlet és adatNyitottá vált, látható minden működési részlet és adat

SELECT * FROM candidates WHERE CONTAINS(resume,’”SQL Server”’) --FT index AND ZipCode = ‘2049’ --SQL index

Page 17: SQL  Server 2008  {  Á ttekintés  2. r ész }

A függőségek A függőségek {{névnév}} és id alapján is rögzítődnek és id alapján is rögzítődnekA késleltetett névfeloldás miattA késleltetett névfeloldás miatt

SQL Server 2005 csak id-t használtSQL Server 2005 csak id-t használt

Adatbázisok és szerverek közötti hivatkozásokat is Adatbázisok és szerverek közötti hivatkozásokat is követi!követi!

sys.sql_expression_dependenciessys.sql_expression_dependenciesÁltalános ki-kitől függ alaptáblaÁltalános ki-kitől függ alaptábla

sys.dm_sql_referenced_entitiessys.dm_sql_referenced_entitiesKire hivatkozik?Kire hivatkozik?

sys.dm_sql_referencing_entitiessys.dm_sql_referencing_entitiesKi hivatkozik rá?Ki hivatkozik rá?

Page 18: SQL  Server 2008  {  Á ttekintés  2. r ész }
Page 19: SQL  Server 2008  {  Á ttekintés  2. r ész }

Jelzik, ha olyan szolgáltatást használunk, Jelzik, ha olyan szolgáltatást használunk, amit már nem fognak támogatniamit már nem fognak támogatni

Deprecation AnnouncementDeprecation AnnouncementKerüljük, mert már nem támogatják a jövőbenKerüljük, mert már nem támogatják a jövőben

declare declare @@ int; set @ = 9 int; set @ = 9

ALTER DATABASE AdventureWorksALTER DATABASE AdventureWorksSET SET TORN_PAGE_DETECTIONTORN_PAGE_DETECTION ON ON

Deprecation Final SupportDeprecation Final SupportMár a következő verzió se támogatjaMár a következő verzió se támogatja

sp_addserversp_addserver

SELECT SELECT … … FROM Sales.SalesOrderDetailFROM Sales.SalesOrderDetailCOMPUTECOMPUTE SUM(UnitPrice) BY SalesOrderID SUM(UnitPrice) BY SalesOrderID

Page 20: SQL  Server 2008  {  Á ttekintés  2. r ész }

CONVERT hexa támogatásCONVERT hexa támogatás

Sor konstruktor (VALUES)Sor konstruktor (VALUES)

Értékadó operátorokÉrtékadó operátorok: +=, -=, *=, /=: +=, -=, *=, /=, …, …

Változó inicializálás létrehozáskorVáltozó inicializálás létrehozáskor

INSERT INTO Contact VALUES ('John Doe', '425-333-5321'), ('Jane Doe', '206-123-4567'), ('John Smith', '650-434-7869');

UPDATE RaktárkészletSET Mennyiség += s.MennyiségFROM Raktárkészlet AS r INNER JOIN Eladások AS r ON r.id = e.id

DECLARE @v int = 5;DECLARE @v1 varchar(10) = 'xxx';

DECLARE @b binary(4) = CAST(1234567890 as binary(4))SELECT CONVERT(varchar(30), @b, 1) -- 0x075BCD15

Page 21: SQL  Server 2008  {  Á ttekintés  2. r ész }

FejlesztőknekFejlesztőknekXML újdonságokXML újdonságok

Entity FrameworkEntity Framework

FilestreamFilestream

Spatial típusokSpatial típusok

HierarchyIDHierarchyID

Integration ServicesIntegration Services

Analysis ServicesAnalysis Services

Reporting ServicesReporting Services

ÜzemÜzemeleltetőknektetőknekSzabály alapú Szabály alapú felügyeletfelügyelet

AuditAudit

TitkosításTitkosítás

TömörítésTömörítés

FüggőségekFüggőségek

MonitorozásMonitorozás

OptimalizálásOptimalizálás

Resource GovernorResource Governor

Page 22: SQL  Server 2008  {  Á ttekintés  2. r ész }
Page 23: SQL  Server 2008  {  Á ttekintés  2. r ész }

{{ Kezdés 13:25-Kezdés 13:25-kor kor }}