ceturtdiena, 2012. gada 13. decembris

otrdiena, 2012. gada 13. novembris

Rezerves kopijas: savsarpēji saistītas datu bāzes

Mana attieksme pret rezerves kopijām gadu gaitā ir visai radikāli mainījusies. Ilgu laiku priekšstats bija apmēram tāds- kas tur daudz ko galvu lauzīt, vienu ātru back-up dienā un lieta darīta. Tomēr, jo vairāk laiks iet, jo sarežģītāka tā padarīšana sāk šķist. Šajā rakstā apskatīšu vienu no iespējamiem sarežģījumiem.

trešdiena, 2012. gada 31. oktobris

Datu bāzu administrators

Nav jau tā, ka tas būtu dikti svarīgi, bet zināšanai- pareizi ir "Datu bāzu administrators", nevis "Datu bāžu administrators".

Lai arī "bāzes" ir lietvārds, sieviešu dzimtē, daudzskaitlis, uz šo vārdu neattiecas ierastais likums par līdzskaņu miju (par lietvārdiem). Vārdnīcā skaidri un gaiši izlocīts kā "bāzu" ("bāze" locījumi no letonika.lv).

Kā man paskaidroja, šis vārds ir izņēmums, uz kuru attiecas: "Līdzskaņu mijas nav - uzvārdiem, kuri beidzas ar -ckis, -skis;- divzilbju personvārdiem ar -tis, -dis; - dažiem lietvārdiem labskanības dēļ, piem. mute - mutu.".

Loģiski secinu, ka šis izņēmums ir "labskanības dēļ". Tā tīri sportiskas intereses pēc mēģināju atrast kādu vietu, kur būtu šie izņēmumi uzskaitīti (un, vēlams, pamatoti), bet mani meklējumi bija bez panākumiem.

Skaidrs, gramatika nav mana stiprā puse. Un tomēr, ideja, ka locīšanas likumu izņēmumus es varu atrast tikai vārdnīcā, meklējot konkrētu vārdu (pie tam, bez skaidrojuma), mani dara mazliet dusmīgu.

Redz pie kā kāda stresa noved datoriķa IF .. THEN .. ikdiena.

2012-11-02 papildināts
Izņēmumu saraksta tomēr eksistē piemērs (avots):
Un ja kādreiz rodas neskaidrības par valodas lietojumu, var rakstīt e-pastu VVA.

2012-11-05 papildināts
Uzrakstīju e-pastu Latviešu valodas aģentūrai (VVA) ar jautājumu, vai eksistē kāda vieta, kur ir pilnībā uzskaitīti izņēmumi un saņēmu atbildi:
5. deklinācijas lietvārdiem tiešām ir raksturīga tradicionālā līdzskaņu mija.
Jūs jau esat norādījis raksturīgākos mijas gadījumus.
Tāda saraksta, kurā būtu minēti visi vārdi, kam mijas labskaņas dēļ nav, latviešu valodā nav. Norādes par mijas neesamību vai esamību ir atrodamas pie katra atsevišķā vārda Latviešu valodas pareizrakstības un pareizrunas vārdnīcā vai arī Latviešu literārās valodas vārdnīcā. 
Teikšu godīgi, atbilde mani neapmierina. Bet labi- parastie mirstīgie drīkst kļūdīties, savukārt valodas speciālistiem vienmēr pa rokai būs minētās vārdnīcas svaigākie izdevumi.

Man beidzot apnika cepties par šo jautājumu :).

ceturtdiena, 2012. gada 4. oktobris

Extended Events: Strupsaķeres

Pēc vakardienas (2012-10-03) TechDay apmeklējuma ir vēl lielāka interese iepazīties ar Extended Events. Pārsteigums bija tas, ka SQL Server (SQL Server 2008) pēc noklusējuma reģistrē virkni ar dažādiem notikumiem izmantojot Extened Events. Līdzīgi kā noklusētais trace, par ko samērā nesen rakstīju (SQL Server parametrs: "default trace enabled").

trešdiena, 2012. gada 26. septembris

SQL Server parametrs: "blocked process threshold"

Šis parametrs nosaka slieksni, kuru pārsniedzot, SQL Server ģenerē ziņojumu par bloķētiem resursiem. Pēc noklusējuma šis parametrs ir 0. Tas nozīmē, ka bloķēto resursu ziņojumi netiek ģenerēti (tātad, nevar sekot līdzi gadījumiem, kuros uz resursiem jāgaida pārāk ilgi).

otrdiena, 2012. gada 25. septembris

piektdiena, 2012. gada 21. septembris

SQL Server parametrs: "default trace enabled"

SQL Server 2012 šis parametrs kļūst par novecojušu funkcionalitāti (SQL Server novecojusī funkcionalitāte), bet pat SQL Server 2012 pēc noklusējuma šī parametra vērtība ir "1". Tas nozīmē, ka tiek reģistrēti atsevišķi notikumi trace failā. Šajā rakstā par to, kādu informāciju tur var atrast un kā apskatīt noklusēto SQL Server trace failu.

ceturtdiena, 2012. gada 20. septembris

Vaicājuma kompilācijas ietekme uz ātrdarbību

Vaicājuma kompilēšana ietekmē vaicājuma izpildes ātrumu. Ar to saistīta vaicājuma radītā procesora slodze un izmantotais atmiņas apjoms. Tātad esam ieinteresēti, lai kompilācijas notiktu pēc iespējas retāk. Aprakstīts neliels eksperiments ko veicu ar nolūku salīdzināt vaicājumu izpildes ātrumu veicot izpildes plāna kompilāciju un bez tās.

ceturtdiena, 2012. gada 23. augusts

Norādi shēmas nosaukumu!

Viena no "labās prakses" rekomendācijām rakstā SQL Server labā prakse ir "Shēmas nosaukumu vienmēr rakstīt pirms objekta nosaukuma". Saskāros ar situāciju, kur šī punkta neievērošana rada ātrdarbības problēmas. Tādēļ vēlos pamatot rekomendācijas ievērošanu, aprakstīt un ar piemēru ilustrēt "slikto scenāriju", kas var rasties neievērojot šo rekomendāciju.

trešdiena, 2012. gada 8. augusts

SQL Server labā prakse

Datu bāzes koda rakstīšanas labā prakse nav viennozīmīga. Tāpat neviennozīmīga ir robeža starp koda rakstīšanas labo praksi (koda lasāmība, saprotamība, uztveramība) un to, kas būtu jāievēro SQL Server darbības uzlabošanai. Piemēram, procedūrām ieteikums nelietot 'pr_' ir ātrdarbības apsvērumu dēļ, kamēr lietot 'vw_' prefiksu skatiem ir ieteikums labākas lasāmības dēļ.

otrdiena, 2012. gada 7. augusts

Resource Governor: statistika

Kā jau minēju rakstā Resource Governor: CPU slodzes sadalīšana, Resource Governor (RG) ir pieejams sākot ar SQL Server 2008, Enterprice / Developer redakcijās un ir domāts CPU un atmiņas resursu sadalīšanai starp konekcijām vienas instances ietvaros.

RG savas darbības laikā uzkrāj informāciju par piešķirto resursu apjomu. Uzkrātā informācija ļauj atbildēt, piemēram, uz jautājumu "Cik % CPU patērē lietojums X?" vai "Cik milisekundes ilgs ir vidējais pieprasījums no lietojuma Y?"

pirmdiena, 2012. gada 6. augusts

Resursu prasīgākie vaicājumi, procedūras, trigeri

Ātrdarbības problēmu cēloņi var būt dažādi. Risinājumi arī (šo tēmu cītīgi cenšos izvērst sadaļā "Optimizācija"). Šajā rakstā plašāk izvērsta viena no problēmas konstatēšanas pieejām- noskaidrot, kuri no vaicājumiem/procedūrām ir visvairāk resursu prasīgi.

Vai redzi problēmu? (ar atbildi)

Ir divas tabulas:
Create Table dbo.T1
(
    T1ID int primary key identity,
    Value varchar(50)
)
Go
Create Table dbo.T2
(
    T2ID int primary key identity,
    T1ID int foreign key references dbo.T1 (T1ID),
    Value char(5000)
)
Ar datiem (T1 = 3 ieraksti, T2 = 10000 ieraksti):
-- SQL 2008 sintakse
set NoCount On;
Insert Into T1 (Value) Values ('jo'), ('jo 2'), ('jojo 2');
declare @i int = 0;
while @i < 10000
Begin
    Insert into dbo.T2 Values(1, @i);
    Set @i += 1;
End
Izpildu šādu komandu komplektu:
Insert Into T1 Values ('Jauna vērtība');
Delete T1 Where Value = 'Jauna vērtība';
Vai redzi problēmu??

trešdiena, 2012. gada 25. jūlijs

Datu kompresēšana: Pārskats par visām DB tabulām

Sākot ar SQL Server 2008, Enterprice/Developer redakcijās ir iespējama datu kompresēšana. Datus var kompresēt datu rindas un datu lapas līmeņos. Datu rindas kompresēšana ir ātrāka un mazāk resursu prasīga, datu lapu kompresēšana ir lēnāka un resursu prasīgāka.

Šajā rakstā SQL vaicājums, kas ļauj saprast cik lieli ieguvumi varētu būt no datu kompresēšanas.

pirmdiena, 2012. gada 23. jūlijs

Resource Governor: CPU slodzes sadalīšana

Resource Governor nodrošina CPU slodzes un atmiņas sadalīšanu starp konekcijām (Enterprice un Developer redakciju fīča, kas pieejama sākot ar SQL Server 2008). Ideja tāda- Lietotājam pieslēdzoties SQL Server instancei, tas tiek iedalīts kādā grupā (Workload Group). Grupām ir definēta pieejamo resursu kopa (Resource Pool), ja sākas cīņa par resursiem, tad tiek piemēroti definētie ierobežojumi.

trešdiena, 2012. gada 18. jūlijs

SQL Server novecojusī funkcionalitāte

SQL Server attīstoties šāda tāda funkcionalitāte tiek mainīta vai noņemta (deprecated features). Piemēram, SQL Server 2008 "sysobjects" ir skats, kuru nākotnē ir plānots likvidēt (tā vietā ir sys.objects). Tādu lietu ir relatīvi daudz. Ir veidi, kā noskaidrot cik daudz novecojušas funkcionalitātes izmantojat.

pirmdiena, 2012. gada 16. jūlijs

SQL Server: Tūlītēja faila inicializācija

[Angliskais termins: "Instant File Initialization"] Veidojot/palielinot SQL Server datu bāzes datu failu tas tiek aizpildīts ar nullēm, lai dzēstu attiecīgajā diska apgabalā esošos datus. ja tiek izmantota tūlītēja faila inicializācija, tad šī nullēšanas daļa tiek izlaista, tādējādi būtiski paātrinot faila izveidi.

piektdiena, 2012. gada 13. jūlijs

SQL Server CPU slodzes simulācija

Kā simulēt CPU slodzi SQL Server? Tāds vienkāršs variants kā to izdarīt- izveidot relatīvi nelielu tabulu, to sasiet pašu ar sevi, izmantojot "Cross Join" un atrast maksimālo vērtību rezultātu kopā. (ideja nāk no šejienes).

piektdiena, 2012. gada 6. jūlijs

SSMS: Uzstādījumi, ko mainu

Uzinstalēju jauno SSMS (lejupielāde: Microsoft® SQL Server® 2012 Express, instalēju tikai SQL Server Management Studio Express. Par iespaidiem drusku vēlāk, kad būs kāds brīdis pastrādāts). Secināju- ir pāris lietas, pie kurām esmu visai pieradis tādēļ uzreiz jāpamaina uzstādījumos. Šodien nekādi nevarēju atcerēties, kurā vietā šīs lietas jāmaina, tādēļ fiksais rakstiņš atmiņas uzlabošanai (konkrētie iestatījumi spēkā gan 2005, gan 2008, gan 2008R2 gan arī 2012 SSMS).

trešdiena, 2012. gada 4. jūlijs

Brīdinājums par izsīkstošu diska vietu

Šajā rakstā par to, kā laicīgi saņemt brīdinājumu par to, ka diska vieta drīz beigsies. Uzreiz piebildīšu, ka šeit aprakstītais mehānisms ir tikai proof-of-concept, ko laika gaitā doma pieslīpēt.

otrdiena, 2012. gada 3. jūlijs

SQL Server parametrs: "max degree of parallelism"

Ja SQL Server instance var izmantot vairāk kā vienu kodolu, tad atsevišķos gadījumos SQL Server arī izmantos vairāk kā vienu kodolu viena pieprasījuma apstrādāšanai. Tātad- vaicājuma izpilde notiks veicot vairākas paralēlas darbības. Atsevišķos gadījumos tas var paātrināt vaicājumu izpildi, bet citos- gluži otrādi.

otrdiena, 2012. gada 26. jūnijs

SQL Server parametrs: "max server memory (MB)"

Bieži šis SQL Server parametrs tiek atstāts noklusētais- 2147483647 (vērtība SQL Server 2008R2 gadījumā- msdn). Lai arī vairumā gadījumu SQL Server lieliski tiek galā ar atmiņas vadību pats saviem spēkiem, šāda konfigurācija atsevišķās situācijās var būtiski traucēt SQL Server darbu.

piektdiena, 2012. gada 22. jūnijs

Utilītprogramma: sqlcmd

sqlcmd komandvirknes utilītprogramma tiek izmantota, lai izpildītu T-SQL komandas uz SQL Server no komandvirknes. Šī utilīta var tikt izmantota gan kā SQL uzdevuma (job) solis, gan arī, piemēram, DB veidošanas skriptu izpildei (raksta beigās ir automatizētas datu bāzes uzstādīšanas piemērs).

pirmdiena, 2012. gada 18. jūnijs

Vēlos darbu

Dažādu apstākļu rezultātā sāku aizdomāties, kādu darbu tad es vēlētos. Ar domu vienkārši izvērtēt/padomāt, kas tad man īsti patīk, pēc kā tiecos un cik ļoti esošais saskan ar vēlamo.

XML kolonna un Cross Apply

XML datu tipā tiek glabāti XML dokumenti vai XML dokumentu fragmenti. Tātad- tur var būt (un bieži ir) vairāki elementi, kas atkārtojas, veidojot interesantu konstrukciju- tabulas šūnā glabājas vairāki elementi, piemēram, personu saraksts. Šeit par to, kā atlasīt datus no XML kolonnas, veidojot līdzīgu konstrukciju kā galvas-detaļu tabula.

piektdiena, 2012. gada 8. jūnijs

tempdb failu skaits

Uzstādot SQL Server instanci tiek izmantoti noklusētie iestatījumi- temdb datu bāze satur precīzi vienu failu. Šajā rakstā par cēloņiem, kāpēc bieži vien būtu vēlams palielināt failu skaitu un kā to izdarīt.

otrdiena, 2012. gada 5. jūnijs

SSMS: Skriptu ģenerēšana tabulas datiem

Visai bieža ir nepieciešamība izveidot skriptu sākotnējo datu ielādei (piemēram- klasifikatoru datiem). Nez kāpēc biju iedomājies, ka labākais ko šādā situācijā izdarīt nelietojot citu izstrādātāju produktus (red-gate atstāja ļoti labu iespaidu, diemžēl tikai demo- divas nedēļas palietoju)- datus eksportēt un pēc tam importēt.

ceturtdiena, 2012. gada 24. maijs

Ierobežojumu dzēšanas un izveides skripta ģenerācija

Ierobežojumi (Constraints) tiek izmantoti datu integritātes nodrošināšanai. Bet ir dažas lietas, ko nevar ar tabulu izdarīt, ja uz to ir reference no citas tabulas ārējās atslēgas (Foreign Keys). Piemēram, man bija vajadzība pārveidot klasterēto indeksu tā, lai tas izmantotu citas kolonas nekā primārās atslēgas ierobežojums. Lai to izdarītu nepieciešams dzēst visas ārējās atslēgas, veikt izmaiņas un izveidot ārējās atslēgas no jauna.

ceturtdiena, 2012. gada 10. maijs

Tabulas datu sadalījums pa failu grupām

SQL Server tabulu dati glabājas failos, kas pieder failu grupām. Pēc noklusējuma ir tikai viena failu grupa ar nosaukumu "PRIMARY". Šādā gadījumā ir pilnīgi skaidrs, kur atrodas tabulas dati. Tomēr ja tiek izmantotas vairākas failu grupas, tad tabulas dati var atrasties arī vairākās failu grupā.

trešdiena, 2012. gada 9. maijs

SQL Server redakciju atšķirības

Atkarībā no SQL Server redakcija (tulkojot no vārda edition- Express, Standart, Enterprice u.c., nevis no vārda version- 2005, 2008, 2012) ir pieejamas dažādas SQL Server iespējas. Dažas no iespējām izmanto īpašu veidu datu glabāšanai datu bāzes failā un tādā gadījumā datu bāzi nevar atjaunot uz citas SQL Server redakcijas.

trešdiena, 2012. gada 18. aprīlis

Query Notification: .NET SqlDependency klase

Rakstā par to, kā reaģēt uz datu izmaiņām datu bāzē no .NET koda. Zemāk neliels piemērs- konsoles aplikācija, kas, reaģējot uz izmaiņām datu bāzē, izvada uz ekrāna paziņojumu.

pirmdiena, 2012. gada 16. aprīlis

otrdiena, 2012. gada 3. aprīlis

Rīks: MS SQL Server 2008 R2 Best Practices Analyzer

Šo rīku (kā jau nosaukums pasaka) var izmantot, lai pārbaudītu, cik ļoti ir ievērota "labā prakse" uz SQL Server instances.

Redz kāds tas izskatās:


Instalācijai nepieciešams, lai būtu uzinstalēts šis:
Microsoft Baseline Configuration Analyzer 2.0
Un tad šis:
Microsoft® SQL Server® 2008 R2 Best Practices Analyzer

Un vēl šī saite var noderēt.