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.
ceturtdiena, 2012. gada 23. augusts
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?"
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.T1Ar datiem (T1 = 3 ieraksti, T2 = 10000 ieraksti):
(
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)
)
-- SQL 2008 sintakseIzpildu šādu komandu komplektu:
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
Insert Into T1 Values ('Jauna vērtība');Vai redzi problēmu??
Delete T1 Where Value = 'Jauna vērtība';
Abonēt:
Ziņas (Atom)