Articles

HVORDAN FÅ SQL Server Til å Fungere Som Et Menneske ved å BRUKE WAITFOR

fischer-twins-396836 Foto Av Fischer Twins På Unsplash

du stiller sannsynligvis inn spørringene dine for maksimal ytelse. Du tar stolthet i å vite hvordan du legger til indekser og refactor kode for å presse ut hver siste dråpe serverens ytelsespotensial. Hastighet er vanligvis konge.

det er derfor du sannsynligvis ikke bruker SQL Servers waitfor-kommando regelmessig – det gjør faktisk den generelle spørringen din tregere .

men treghet er ikke alltid en dårlig ting. I dag vil jeg vise deg to av mine favorittmåter for å bruke WAITFOR-kommandoen.

Se denne ukens video på YouTube

du kan også se denne ukens innhold på Min YouTube-kanal .

1. Å bygge Et Menneske

moderne datamaskiner er raske. Cpuer utfører milliarder handlinger per sekund, MENGDEN RAM produserer kan kramme på en pinne øker regelmessig, Og Ssd-Er gjør raskt disk I / O bekymringer en ting fra fortiden. mens alle disse tingene er gode for å behandle store arbeidsbelastninger, beveger de datamaskiner lenger og lenger bort fra»menneskelig hastighet».

Men «menneskelig fart» er noen ganger det du vil ha. Kanskje du vil simulere appbruk på databasen din eller belastningen opprettet av analytikere som kjører ad hoc-spørringer mot serveren din.

Dette er hvor jeg elsker å bruke WAITFOR DELAY – det kan simulere mennesker som utfører spørringer ekstremt welll:

-- Run foreverWHILE (1=1)BEGIN --Insert data to simulate an app action from our app EXEC dbo.BuyDonuts 12 -- We usually average an order every 3 seconds WAITFOR DELAY '00:00:03'END

div>

2. Dårlig Manns Service Broker

Service Broker er en flott funksjon I SQL Server. Den håndterer meldinger og køscenarier veldig bra, men krever mer oppsettstid, så jeg liker vanligvis ikke å bruke den i scenarier der jeg trenger noe raskt og skittent.

I Stedet for å måtte sette Opp Service Broker å vite når noen data er tilgjengelig eller en prosess er klar til å bli sparket av, kan jeg gjøre det samme med EN STUND loop og EN WAITFOR:

DECLARE @Quantity smallint = NULL-- Keep checking our table data until we find the data we wantWHILE (@Quantity IS NULL)BEGIN -- Delay each iteration of our loop for 10 seconds WAITFOR DELAY '00:00:03' -- Check to see if someone has bought a dozen donuts yet SELECT @Quantity = Quantity FROM dbo.Orders WHERE Quantity = 12END-- Run some other query now that our dozen donut purchase condition has been metEXEC dbo.GenerateCoupon

Fancy? Ingen. Praktisk? Ja.

Ikke lenger trenger jeg å fortsette å sjekke et bord for resultater før jeg kjører en spørring-jeg KAN VENTE FOR å gjøre det for meg.

Hvis du vet at det er en bestemt tid du vil vente til du begynner å pinge noen prosess, kan DU innlemme WAITFOR TID for å gjøre sjekken enda mer intelligent:

DECLARE @Quantity smallint = NULL-- Let's not start checking until 6am...that's when the donut shop opensWAITFOR TIME '06:00:00'-- Keep checking our table data until we find the data we wantWHILE (@Quantity IS NULL)BEGIN -- Delay each iteration of our loop for 10 seconds WAITFOR DELAY '00:00:03' -- Check to see if someone has bought a dozen donuts yet SELECT @Quantity = Quantity FROM dbo.Orders WHERE Quantity = 12END-- Run some other query now that our dozen donut purchase condition has been metEXEC dbo.GenerateCoupon

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *