- Microsoft könyveknél baromi drága a szállítási költség Európába, hiába a “nagy” mcp-s kedvezmény. Több könyvnél már lehet számolgatni. Ms press könyveket Amazonon célszerű megrendelni , érdemes összehasonlítani az amazon.com, amazon.de és amazon.co.uk árait, majd hozzákalkulálni a fontosságtól függően a szállítás időtartamát.
- Apress kiadó: gyakori az ebook akció, drágák a nyomtatottak, de.. évente egyszer a Black Friday keretében napokon keresztül óriási akcióval ,12 eurós áron beszerezhető minden egyes könyv és mindezt ingyenes szállítás mellett. Ez a legszuperebb ajánlat, az ember már-már hitetlenkedik, hogy megéri e a kiadónak! Ott a trükk, hogy a célkontinensen, esetünkben Európában nyomtatják ki a könyvet és úgy postázzák! 🙂
- Packtpub, Packt Publishing kiadó könyvei elsősorban az ebook eladásra koncentrálnak, gyakori az 10 euró körüli ebook “akció”, könyvek viszont drágák. Ennél a kiadónál viszont érdemes cupon kódokat keresni. Múlt héten rendeltem könyveket és 35%-os kedvezményes kódot találtam, ami az ingyenes szállítás mellet már nagyon jó! Működő kód (írd egybe,azaz kötőjeleket szedd ki): AI-NOW-PRINT-35 . SQL-es és Azuros könyvekre is adta a kedvezményt.
Virtuális szerverek ip címei
Gyakori eset, hogy a laptop hurcolásával más és más ip címet kapnak a virtuális szervereink. Host gépen az alábbi powershell paranccsal tudjuk kiíratni a guest gépek ip címeit:
1 |
Get-VM -ComputerName "mycomputername" | Get-VMNetworkAdapter |
SQL Server 2018? SQL Server 2019!
A következő SQL server verzió mégsem 2018 lesz ( az igényeknek megfelelően egyre gyakrabban adjuk ki az új verziókat ígéret), hanem SQL Server 2019 néven fog megjelenni. (hasonlóan Windwos Server 2019, Office 2019).
HEAP table is fragmented
Általában nem ajánlott HEAP tábla létrehozása (Table without Clustered Index) , egy esetben jöhet jól, ha nagyon gyors adatbetöltés szükséges.
A Heap tábla azonban töredezik, ennek oka, hogy minden Insert a tábla végére kerül és a Deleted sorok sem kerülnek betöltésre.
Amíg a hagyományos indexeket egy index reorganizációval vagy újraépítéssel (rebuild) karbantarthajtuk és gyorssá tehetjük addig a Heap táblán nincs ilyen beépített karbantartás .
Teendő?
Két lekérdezés eredményének összehasonlítása
Két lekérdezés különbsége:
1 2 3 |
select * from (select * from query1) as query1 except select * from (select * from query2) as query2 |
Szükség esetén az order by elhagyandó a lekérdezésekben.
SQL Server Index Tuning
Egy több millió sorral rendelkező táblán már súlyos gondokat okozhat egy-egy index hiány.
5 Millió sor, paraméterezett select, a szerver túlterhelt:
11:20-kor 1 db index felrakása után látványosan csökken a CPU (kék) és CPU Queue (piros). Ellenpróba 13:35-kor az index letiltásakor ismét befullad a szerver (a határértéknek számító 80%-ról 95% átlagos cpu használatra ugrik). Ráadásul a szerveren több mint 100 adatbázis van és mégis egy darab eljárás jelentősen beterhel.
Persze a valóság nem ilyen egyszerű, egy -egy index felrakásának hatását többnyire nem lehet performance monitor-ból kimutatni, a fenti példa egy rosszul tervezett gyakori futású kódra vonatkozik.
Index méretek
Index size
1 2 3 4 5 6 7 8 9 10 |
-- USE <databasename> SELECT i.[name] AS IndexName ,SUM(s.[used_page_count]) * 8 AS IndexSizeKB FROM sys.dm_db_partition_stats AS s INNER JOIN sys.indexes AS i ON s.[object_id] = i.[object_id] AND s.[index_id] = i.[index_id] -- where i.[name] like 'mix%' GROUP BY i.[name] ORDER BY IndexSizeKB Desc, i.[name] GO |
Az egyes indexek méretei. Az adott adatbázisra kell használni, szükség esetén szűrni.
Restore ellenőrzése, avagy mentés és visszaállítási információk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
SELECT rs.recovery, bs.server_name as source_server, @@SERVERNAME as destination_server, [bs].[backup_start_date], [bs].[backup_finish_date], [bs].[database_name] as [source_database_name], [rs].[restore_date], rs.stop_at, rs.user_name, bs.user_name as backup_agent, bmf.physical_device_name, bs.backup_size FROM msdb..restorehistory rs INNER JOIN msdb..backupset bs ON [rs].[backup_set_id] = [bs].[backup_set_id] INNER JOIN msdb..backupmediafamily bmf ON [bs].[media_set_id] = [bmf].[media_set_id] where rs.recovery=1 ORDER BY rs.recovery DESC, [rs].[restore_date] DESC |
SQL futási idők mérése
Mennyi idő alatt fut le a query?
1 2 3 4 5 6 7 8 9 |
SET STATISTICS IO,TIME ON GO -- lekérdezési rész: -- kikapcsolása: GO SET STATISTICS IO,TIME OFF GO |
Magyarázat:
SET STATISTICS TIME ON az adott session-re vonatkozik, tehát SSMS-ben a nyitott kapcsolatra.
A végrehajtási idő nem csak a szerver hw erőforrásainak , hanem az éppen aktuális leterheltségnek is függvénye, ezért SQL optimalizációkor nem ezt használjuk, hanem a SET STATISTICS IO ON -t, mivel ez utóbbi megmonja, hogy a query optimizernek hány logikai “page” olvasásra van szüksége a végrehajtás során.
Restore – SQL Server Maintenance Solution
Amennyiben szkriptből állítjuk be a mentéseket – mert hát milyen jó, hogy nem összekattingatjuk és mindenütt másképp néz ki -, akkor a dba-k többsége az Ola Hallengren szkriptet használja. SQL Server Maintenance Solution
https://ola.hallengren.com/
Visszaállítani az adatbázisokat már macerásabb, alkönyvtárak tömege..
Megoldás a Restore-DbaDatabase powershell szkript futtatása.
Működő példa:
1 |
Restore-DbaDatabase -SqlServer STSQLBCK05\SQL2017 -path \\stsqlbck05\RESTORE\ -MaintenanceSolutionBackup -DestinationDataDirectory D:\SQLDATA\MSSQL14.SQL2017\MSSQL\DATA -WithReplace |
A ps szkritp letölthető: https://dbatools.io/