Monday 25 September 2017

Exponential Glidande-Medelvärde Mysql


När jag hade ett liknande problem slutade jag använda tempabord av olika orsaker, men det gjorde det mycket lättare. Vad jag gjorde ser väldigt ut som vad du gör, så långt som schemat går. Gör schemat något som ID-identitet, startdatum, slutdatum, värde När du väljer, gör en underval avg av de tidigare 20 baserat på identitets-ID. Gör bara det här om du befinner dig redan använder temp tabeller av andra skäl, trots att jag träffar samma rader om och om igen för Olika mätvärden, så det var till hjälp att ha den lilla datamängden. Enligt min erfarenhet brukar Mysql från 5 5 x inte använda index på beroende val, oavsett om det är en underfråga eller bli medlem. Det kan ha en väsentlig inverkan på prestanda där den beroende väljaren Kriterier ändras på varje rad. Avgående genomsnitt är ett exempel på en fråga som faller i denna kategori. Utförandetiden kan öka med rutans ruta För att undvika detta, välj en databasmotor som kan utföra indexerade uppslag på beroende val. Jag hittar postgres Verk effekt Ively för detta problem. svarade jul 2 14 på 8 01. Ditt svar.2017 Stack Exchange, Inc. Med ett enkelt glidande medelvärde för att släta ut data är en ganska populär teknik det är synd, det främsta exemplet i SQL Anywhere Help är långt Från enkla Vad gör det här exemplet så komplicerat Förutom problemformuleringen beräknas det rörliga genomsnittet av all produktförsäljning, per månad, år 2000. Här är det som gör det komplicerat. Två referenser till AVG-funktionen. Allt i sig gör bara om någon SELECT en scratcher. En snygg WINDOW clause. a WINDOW-klausul som inte ens använder WINDOW-sökordet så att de oinitierade personerna som behöver exempel mer än någon annan är det inte uppenbart att en Windows är inblandad alls. Inte bara någon Windows-klausul, tänker dig, Men en som innehåller varje enskild komponent som du kan koda i en WINDOW. a PARTITION BY. a RANGE-klausul, inte en enkel ROWS-klausul, men fullblåst RANGE-klausul, en som har ett intimt förhållande med ORDER BY Jag vet vad en rad är, Men vad redigeras är en RANGE. Men vänta, det är mer Valet av RANGE över ROWS i det här exemplet är avgörande för korrekt användning av frågan för en mer fullständig diskussion av det här exemplet, se Exempel 23 - Beräkning av ett rörligt medelvärde I Glenn Paulleys utmärkta OLAP-papper. Låt oss nu komma tillbaka på spår. A Verkligen riktigt enkelt rörligt medelvärde. Följande exempel visar 10 dagars värde av data tillsammans med det glidande medelvärdet av dagens värde och igår s WINDOW-klausulen på linjer 21 till 23 Definierar ett rörligt fönster som innehåller två rader idag s raden CURRENT ROW och igår s row 1 PRECEDING. theWINDOW ORDER BY-klausulen bestämmer vad PRECEDING betyder föregående rad av and. the ROWS-klausulen bestämmer storleken på fönstret alltid två rader. Uttrycket AVG OVER twodays på rad 19 hänvisar till WINDOW-klausulen med namnet och det berättar för SQL Anywhere att beräkna genomsnittet av de två värdena som finns i 2-rader skjutfönstret, för varje rad i resultatuppsättningen. Så för 2012 -02-02 medeltalet 10 och 20 är 15 000000.för 2012-02-03 är genomsnittet 20 och 10 15 000000.för 2012-02-04 är genomsnittet 10 och 30 20 000000.för 2012-02 -10 genomsnittet 10 och 60 är 35 000000.Oops, vad sägs om den första roden. 2012-02-01 raden har inte en föregående rad, så vad är genomsnittet över det rörliga fönstret. Enligt Glenn Paulley s vita Papper vid ett rörligt fönster antas att rader som innehåller Null-värden existerar före första raden och efter sista raden i inpu T. Det betyder att när det rörliga fönstret har 2012-02-01 som CURRENT ROW innehåller raden 1 PRECEDING NULL-värden och när SQL Anywhere beräknar en AVG som innehåller ett NULL-värde, räknar det inte med att NULL alls inte är i Täljare eller i nämnaren vid beräkning av genomsnittet Här är beviset Det är därför twodayaverage 10 000000 för första raden 2012-02-01. Upplagt av Breck Carter vid 3 47 PM. I mitt senaste samtal på Surge och Percona Live om adaptiv feldetektering Slides, hävdade jag att hårdkodade trösklar för att varna om felförhållanden är oftast bäst för att undvika för dynamiska eller adaptiva trösklar. Jag gick faktiskt mycket längre än det och sa att det är möjligt att upptäcka fel med stort förtroende för många system som MySQL utan Inställning av några trösklar alls. I det här inlägget vill jag förklara lite mer om de glidande medelvärdena som jag använde för att bestämma det normala beteendet i de exempel jag gav. Det finns två uppenbara kandidater för glidande medelvärden som enkelt flyttar en Verages och exponentiellt vägda glidande medelvärden. Ett rak glidande medelvärde beräknar bara medelvärdet för de senaste N-samplarna i data. I mitt fall använde jag 60 prov. Detta kräver att en array av de föregående N-proverna uppdateras och uppdaterar genomsnittsvärdet för varje prov. En Exponentiell glidande medelvärde behöver inte behålla prover Medelvärdet är ett enda tal och du har en så kallad utjämningsfaktor För varje nytt prov multiplicerar du det gamla medlet med 1- och lägger sedan till det nya provet gånger avg 1-alfa avg Alfa-prov. Båda tekniker har sina nackdelar Båda kräver en uppvärmningsperiod, till exempel Det är uppenbart att i ett 60-provets rörelsefönster behöver du 60 prov innan du kan börja. Det exponentiella glidande medlet kan primeras från medelvärdet av De första 10 proverna, enligt min erfarenhet Båda teknikerna lagrar också trenden i proverna i viss utsträckning. När det finns en dramatisk förändring i mönstret tar de ett tag att komma ihåg. Här är en del av några riktiga data och t Wo tekniker Klicka för att se en större bild Den blå linjen är den samplade data, den röda linjen är ett exponentiellt rörligt medelvärde med ett genomsnittligt 60 sekunders minne och den gula linjen är ett 60 sekunders glidande medelvärde. Notera hur den röda linjen Tenderar att korrigera snabbare och hålla sig mer riktigt mot den blåa linjens nuvarande beteende Detta är en fördel med exponentiell glidande medelvärde om det är vad du önskar. Det är inte uppenbart i dessa data, men det enkla glidande medlet har en annan Nackdel Antag att det finns en uppsving av mycket höga värden i de samplade dataerna i några sekunder Under de närmaste 60 sekunderna kommer denna spik att ligga inom fönstret och uppblåsa det glidande medlet När det kasseras från fönstret orsakar det att den rör sig Genomsnittet att falla plötsligt har jag funnit att detta är problematiskt i flera fall Det är särskilt uppenbart när du beräknar standardavvikelsen för proverna eller annan känslig statistik över det rörliga fönstret. Det exponentiella glidande medlet gör inte Jag har det problemet för att den spiken aldrig rör sig ut ur fönstret. Dess inflytande finns där för alltid men när tiden går, blir den gradvis mindre på ett jämnt sätt Så du får inte plötsliga spikes i det nuvarande genomsnittet baserat på vad som hände för 60 sekunder sedan . Det är bara att skrapa ytan på de tekniker jag har utforskat på en stor uppsättning dagar till veckors data från tiotusentals riktiga servrar. När jag får tid ska jag försöka skriva mer om det i framtiden.

No comments:

Post a Comment