február 2017 havi bejegyzések

Megjött (már egy ideje): dm_exec_function_stats

Az SQL Server 2016-al  végre megjött a dm_exec_function_stats DMV is. Még nem tud mindent, de azért már jó, hogy van. És jó tudni róla 🙂

Részletesen pl.: itt mutatják be.

Reklámok

Kezdjük a végén?!

Az adatok valahol megszületnek, ami általában egy alkalmazás szerver szokott lenni. Amikor adatbázisba készülünk letárolni, akkor hosszú vándorútra indulnak a születési helyüktől az adatbázisig. Vannak, amik “messzebbről” indulnak és hamarabb érkeznek meg és van fordítva is. Itt már lehet sejteni, hogy az adatok nem feltétlen abban a(z) (idő)sorrendben kerülnek be az adatbázisba, ahogy létrejönnek. Az esetek többségében ez nem is probléma, mert nem lényeges, viszont van, amikor a legfontosabb tényezővé válik. Ezzel az esettel már többféle formában is találkoztam, most egy egyszerűbb példán keresztül mutatnám be.

 

Legyen egy felhasznalok táblánk, ami az alábbiként néz ki és azt rögzíti, hogy ki és mit csinált a weboldalon:

id: sorszam

felhasznalo: akire vonatkozik ez a sor

tevekenyseg: amit csinált a felhasználó

tevekenyseg_kezdete: amikor elkezdte a tevékenységét a felhasználó az alkalmazás szerint

sor_keletkezesi_ideje: amikor az adatbázisba került a sor

 

Az elvárt működés, hogy belép a felhasználó, végez tevékenységeket, végül kilép.

Nézzünk egy képet, ami erre rácáfol:

01_order

 

A fenti képen tisztán látszik, hogy Kati utolsó három sorának a “tevekenyseg_kezdete” mező ugyanazt a dátumot tartalmazza (aminek nem kell így legyen, hogy a probléma valós maradjon), viszont a “kilépés” tevékenysége (id = 5) hamarabb érkezett be az adatbázisba, mint a “negyedik tevékenység” sora (id = 6).

Most, hogy ismerjük a problémát már bármilyen mesét köré lehet szőni, hogy ez miért rossz. A mienk legyen az, hogy, ha a felhasználó kilép, akkor elindul egy folyamat, ami minden tevékenységéért jóváír neki x összeget. Itt meg kimaradna egy tevékenység.

Ha ezt még nem ismertük, akkor jó ha tudunk róla. Viszont rossz hír, hogy nincs általános megoldás ahány eset annyi féle.