Friday 6 October 2017

Eksponentiell Bevegelse Gjennomsnittet Mysql


Da jeg hadde et lignende problem, endte jeg med å bruke tempetabeller av flere årsaker, men det gjorde det mye lettere. Det jeg gjorde, ser veldig ut som det du gjør, så langt som skjemaet går. Gjør skjemaet noe som ID-identitet, startdato, sluttdato, verdi Når du velger, gjør du en undervalg avg av forrige 20 basert på ID-IDen. Gjør dette bare hvis du finner deg selv allerede bruker temp tabeller av andre grunner, selv om jeg treffer de samme radene igjen og igjen for forskjellige målinger, så det var nyttig å ha det lille datasettet. I min erfaring har Mysql fra 5 5 x en tendens til ikke å bruke indekser på avhengige valg, enten det er en undersøkelse eller en tilknytning. Dette kan ha en svært betydelig innvirkning på ytelsen der den avhengige velgeren kriteriene endres på hver rad. Gjennomsnittlig gjennomsnitt er et eksempel på en spørring som faller inn i denne kategorien. Eksekveringstiden kan øke med kvadratet av radene. For å unngå dette, velg en databasemotor som kan utføre indekserte oppslag på avhengige valg. Jeg finner postgres verk effekt Ively for dette problemet. ansvaret 2. juli kl. 8 01. Ditt svar.2017 Stack Exchange, Inc. Bruk et enkelt bevegelige gjennomsnitt for å utjevne data er en ganske populær teknikk, det er så ille, at det primære eksemplet i SQL Anywhere Help er langt fra enkle Hva gjør dette eksemplet så komplisert I tillegg til problemstillingen, beregner det det bevegelige gjennomsnittet av alt produktsalg, per måned, i år 2000. Her er det som gjør det komplekst. to referanser til AVG-funksjonen. alt i seg selv gjør omtrent alle SELECT en hode-scratcher. en skjult WINDOW clause. a WINDOW-klausul som ikke bruker WINDOW-søkeordet, slik at de uinitierte folkene som trenger eksempler mer enn noen andre, er det ikke åpenbart at en WINDOW er involvert i det hele tatt. Ikke bare noe WINDOW-klausul, husk deg, men en som inneholder hver enkelt komponent du kan kode i en WINDOW. a PARTITION BY. a RANGE-klausul ikke en enkel ROWS-klausul, men fullblåst RANGE-klausul, en som har et intimt forhold til ORDEREN BY Jeg vet hva en rad er, men hva redigeres er en RANGE. Men vent, det er mer. Valget av RANGE over ROWS i dette eksemplet er avgjørende for riktig bruk av spørringen for en mer fullstendig diskusjon av dette bestemte eksempelet, se eksempel 23 - Computing a Moving Average i Glenn Paulleys utmerkede OLAP-papir. La oss nå komme tilbake på sporet. En virkelig virkelig enkel flytende gjennomsnitt. Følgende eksempel viser 10 dagers verdier sammen med det bevegelige gjennomsnittet av dagens verdi og i går s WINDOW-klausulen på linjer 21 til 23 definerer et bevegelsesvindu som inneholder to rader i dag s rad CURRENT ROW og i går s rad 1 PRECEDING. the WINDOW ORDER BY-setningen bestemmer hva PRECEDING betyr forrige rad av and. the ROWS-klausulen bestemmer størrelsen på vinduet alltid to rader. Uttrykket AVG OVER twodays på linje 19 refererer til WINDOW-klausulen etter navn, og det forteller SQL Anywhere å beregne gjennomsnittet av de to verdiene som eksisterer i 2-rads glidende vindu, for hver rad i resultatsettet. Så for 2012 -02-02 gjennomsnittet 10 og 20 er 15 000000.for 2012-02-03 gjennomsnittet av 20 og 10 er 15 000000.for 2012-02-04 gjennomsnittet av 10 og 30 er 20 000000.for 2012-02 -10 gjennomsnittet på 10 og 60 er 35 000000.Oops, hva med den første row. The 2012-02-01-raden har ikke en PRØVENDE rad, så hva er gjennomsnittet over det bevegelige vinduet. Ifølge Glenn Paulleys s hvite papir i tilfelle et bevegelig vindu antas det at rader med null-verdier eksisterer før første rad, og etter siste rad i inpu t. Det betyr at når vinduet som beveger seg 2012-02-01 som CURRENT ROW, inneholder 1 PRECEDING-raden NULL-verdier, og når SQL Anywhere beregner en AVG som inneholder en NULL-verdi, teller det ikke at NULL i det hele tatt ikke er i teller eller i nevneren når du beregner gjennomsnittet Her er bevis Det er derfor twodayaverage 10 000000 for første rad 2012-02-01. Skrevet av Breck Carter klokken 3 47 PM. I min siste snakk på Surge og Percona Live om adaptiv feil gjenkjenning lysbilder, hevdet jeg at hardkodede terskler for å varsle om feilforhold vanligvis er best for å unngå til fordel for dynamiske eller adaptive terskler. Jeg gikk faktisk langt lenger enn det og sa at det er mulig å oppdage feil med stor tillit til mange systemer som MySQL, uten sette inn noen terskler i det hele tatt. I dette innlegget vil jeg forklare litt mer om de bevegelige gjennomsnittene jeg brukte for å bestemme normal oppførsel i eksemplene jeg ga. Det er to åpenbare kandidater for å flytte gjennomsnitt, enkelt å flytte en verages og eksponentielt vektet glidende gjennomsnitt. En enkel glidende gjennomsnitt beregner bare gjennomsnittet gjennomsnittet over de siste N samplene av data I mitt tilfelle brukte jeg 60 prøver Dette krever å holde en rekke av de forrige N-prøvene og oppdatere gjennomsnittet for hver prøve. En eksponentielt glidende gjennomsnitt trenger ikke å holde prøver. Gjennomsnittet er et enkelt tall og du har en såkalt utjevningsfaktor. For hver ny prøve multipliserer du det gamle gjennomsnittet med 1- og legger det til de nye prøvetidene avg 1-alfa avg alfa-prøve. Både teknikker har sine ulemper Begge krever en oppvarmingsperiode, for eksempel Selvfølgelig, når det gjelder et 60-prøve bevegelsesvindu, trenger du 60 prøver før du kan begynne. Eksponensielt glidende gjennomsnitt kan grunnes fra gjennomsnittet av De første 10 prøvene, i min erfaring Begge teknikkene lagrer også trenden i prøvene til en viss grad. Når det er dramatisk endring i mønsteret, tar de en stund å fange opp. Her er en oversikt over noen virkelige data og t wo teknikker Klikk gjennom for å se et større bilde Den blå linjen er samplede data, den røde linjen er et eksponentielt glidende gjennomsnitt med et gjennomsnittlig 60 sekunders minne, og den gule linjen er et 60 sekunders glidende gjennomsnitt. Notat hvordan den røde linjen har en tendens til å korrigere hurtigere og være mer sant til den nåværende oppførselen til den blå linjen. Dette er en fordel med det eksponentielle glidende gjennomsnittet hvis det er det du ønsker. Det er ikke tydelig i disse dataene, men det enkle glidende gjennomsnittet har en annen ulempe Anta at det er en økning av svært høye verdier i de samplede dataene i noen sekunder. I de neste 60 sekundene kommer denne spiken å ligge inne i vinduet og oppblåse det bevegelige gjennomsnittet. Når det blir kastet fra vinduet, forårsaker det at det beveger seg gjennomsnittlig å slippe plutselig, har jeg funnet dette å være problematisk i flere tilfeller Det er spesielt opplagt når du beregner standardavviket av prøvene eller annen sensitiv statistikk over det bevegelige vinduet. Det eksponentielle glidende gjennomsnittet gjør ikke t har det problemet fordi den spiken aldri beveger seg ut av vinduet dens innflytelse er der for alltid, men etter hvert som tiden går, blir den gradvis mindre på en jevn måte slik at du ikke får plutselige pigger i nåværende gjennomsnitt basert på hva som skjedde for 60 sekunder siden . Dette er bare å skrape overflaten av teknikkene jeg har utforsket på et stort sett med dager til uker med data fra titusenvis av ekte servere. Når jeg får tid, vil jeg prøve å skrive mer om det i fremtiden.

No comments:

Post a Comment