Clustered columnstore indeksi
Columnstore indeksi stigli su sa verzijom SQL Server 2012 i njihovom upotrebom značajno su poboljšane performanse “star” upita tipičnih za DWH sisteme sa ogromnim fact tabelama. Kompresija podataka i procesiranje u batch modu doneli su pojedinim upitima i do 10-20x bolje performanse. Međutim, kao i kod većine novih komponenti prva verzija je prepuna ograničenja i onemogućava punu primenu feature u svoj svojoj snazi. Tako je i u prvoj verziji tabela zapravo bila row-stored, a samo je indeks nad tom tabelom mogao da bude kreiran i uskladišten po kolonama. Pored toga, tabela nije mogla da se ažurira ako poseduje CS indeks, pa je to stvaralo dodatne probleme i povećavalo značajno vreme za kreiranje indeksa (indeks mora da se ukloni i ponovo kreira nakon ažuriranja tabele).
U SQL Server 2014 tabela je uskladištena po kolonama, tako da je to sada pravi columnstore i pritom je moguće ažurirati tabelu transparentno. Pored toga poboljšane su performanse perecesiranja u batch modu, pa su svi koji su nestrpljivo očekivali eliminisanje ograničenja iz 2012. dočekali svojih pet minuta.
In-Memory OLTP aka In-Memory XTP aka Hekaton
Taj troimeni feature postao je već pomalo kontroverzan. Kodno ime za ovaj feature, koji je intenzivno razvijan u Microsoftu poslednjih pet godina je Hekaton, a marketing je po svojoj prilici izabrao In-Memory XTP za zvanično ime. U pitanju je potpuno novi pristup database developmentu, koji SQL Serveru omogućava da manipulacijama podacima pristupa optimistički, za razliku od pesimističkog modela, koji ga krasi od prve verzije.
In-Memory XTP engine je nova komponenta integrisana u SQL Server, koja omogućava i do 30x bolje performanse za memory optimizovane tabele nego što je to slučaj sa istim neoptimizovanim tabelama. Ovaj iskaz je tačan za neke tabele, za neke workloade. Ne za sve. Hekatonizovanjem nekih SQL 2012 tabela ne samo da ne može da dođe do takvih poboljšanja, nego čak dolazi do smanjivanja performansi. Upravo je to razlog za kontroverze, koje prate ovu značajnu novinu.
Ukratko, Hekaton je integrisan u SQL Server database engine, nema posebne instalacije ili održavanja. Da bi se dobacilo do impozantnih brojeva s početka teksta potrebno je da kompletna tabela bude u memoriji. To je jedan od razloga boljih performansi. Važniji i krucijelni je da je Hekaton dizajniran za rad u „lock and latch free“ modu. Umesto da konstantno zaključava i sprečava potencijelne konflikte (što logičke, što fizičke) u Hekaton modu SQL Server ne očekuje konflikte uopšte i ne zaključava ništa niti sprečava druge procese da rade šta su naumili. Zato je Hekaton brži.
Dizajniran je za bolje performanse i čini sve da ih obezbedi. I sve što mu u toj misiji smeta ili ignoriše ili implementira drugačije. Otuda i mnoga ograničenja. Neka od njih su posledica nedostatka vremena za implementaciju (diktat tržišta), a neka su jednostavno nespojiva sa proklamovanim ciljem. Otuda sa Hekatonom su mogući problemi sa integritetom podataka (nema constrainta osim default, nema foreign keysa…), sa down-time (nema promena na tabeli i indeksima nakon kreiranja, ne podržava ALTER table!), developeri moraju da menjaju kod pošto sa Hekatonom ishod nekih akcija nije bio moguć pre SQL 2014 i stoga nije bio predviđen u kodu. Sve u svemu, mnogo je ograničenja, ali definitivno postoji nekoliko use case gde se Hekaton pokazao kao odličan izbor.
Novi Cardinality Estimator
Nakon 15+ godina došlo je do nekih promena u cardinality estimator komponenti database engina. S obzirom da je kod star, da je dibagovanje naporno i zahtevno, i da je integracija novih featura ili ispravaka upakovana u mnoštvo trace flagova, Microsoft je odlučio da u SQL Server 2014 ubaci novonapisanu verziju cardinality estimatora. Ukratko, novi CE donosi promene u vezi sa korelacijom između predikata (dva predikata iz iste relacije nisu više nezavisna, već pomalo zavisna, predikati iz različitih relacija su sada nezavisni, a nisu bili…). Najveća promena je definitivno u interpretaciji kardinalnosti za parameter, koji se nalaze izvan statističkog histograma kod kolona sa monotono rastućim vrednostima. Sa jedne strane novi CE elegantno rešava jedan od ozbiljnijih problema u upitima nad ogromnim tabelama, ali sa druge strane dovodi do lošijih rešenja u drugim upitima.
AlwaysOn
Umesto maksimalno četiri sada je moguće imati osam secondary replicas, a pride je readable secondary u funkciji čak i kada primary nije raspoloživ, što do sada nije bio slučaj.
Buffer Pool Extension
Omogućava povećanje kapaciteta BPE upotrebom SSD diskova. U slučaju da je BPE pun deo podataka se izmešta na brzi SSD drajv što je umnogome bolje nego da se čitanje obavlja sa diska. Ova ekstenzija dodatno dobija na značaju ukoliko su paralelno sa disk tabelama u upotrebi i nove in-memory tabele. U tom slučaju BPE se bori sa In-Memory OLTP za memoriju, pa je za workload koji se bazira na disk tabelama ova ekstenzija veoma dragocena.
Delayed Durability
Ovaj feature omogućava tzv. lazy commit korisničke transakcije. Umesto da se potvrda o uspešnosti transakcije dobija po upisu informacije o istoj u transakcioni log na disku, sada je moguće tom informacijom raspolagati ranije, po upisu transakcije u memorijskibafer, što je, razume se, dosta brže. Ovo je veoma značajno kod aplikacija, koje intenzivno upisuju podatke (bilo da ih menjaju ili po prvi put unose u sistem).
Ostale novine
Nova verzija omogućava eknriptovanje bekapa, bekap može da se popne i u oblake (Windows Azure), od ove verzije Resource Governor može da upravlja ne samo CPU i memorijom, već i I/O resursima.
Bojana Glogovac, Eccentrix