Jaa


ER-konfiguraatioiden suorituskykyongelmien vianmääritys

Tässä artikkelissa on tietoja sähköisen raportoinnin (ER) konfiguraatioiden suorituskykyyn liittyvistä ongelmista ja niiden ratkaisemisesta.

Suorituskyvyn tutkimus käsittää yleensä useita vaiheita.

  1. Kerää tiedot.
  2. Analysoi kerätyt tiedot.
  3. Analyysin tulosten perusteella voit tehdä muutoksia ER-konfiguraatioiden avulla tai päättää kerätä lisää tietoja.

Vianmääritys

Suoritusajan analysoiminen

Suoritusaika voi riippua odottamattomista seikoista, kuten muista samassa ympäristössä suoritetuista tehtävistä ja välimuistista, joka käyttää tietoja ensimmäisen kutsumisen yhteydessä. Siksi sinun on toistettava suoritus ja mittaus useita kertoja.

Joskus suorituskykyongelmat eivät johdu raportoinnissa käytettävästä ER-muodon konfiguraatiosta. Sen sijaan ne johtuvat X++-koodista, jota käytetään tämän ER-muodon konfiguraation avaamiseen.

  1. Voit tarkastella raportin suoritusaikaa joko toimintokeskuksessa tai tapahtumalokissa.

  2. Vertaa raportin suoritusaikaa skenaarion kokonaissuoritukseen.

  3. Jos raportin suoritusaika on paljon pienempi kuin kokonaissuorituksen aika, ota huomioon raportin käsittelemien tietojen määrä:

    • Jos raportissa on pieni määrä tietoja, ongelma saattaa liittyä konfiguraation latausaikaan.
    • Jos raportti käsittelee paljon tietoja, ongelma saattaa liittyä X++-koodin esikäsittelyyn. Analysoi tämä tapaus jäljitysjäsentimen avulla.

    Lisätietoja on seuraavissa osissa.

  4. Suorita useita testejä, joihin liittyy erilaisia tietomääriä. Näin voit määrittää, miten suoritusaika määräytyy datamäärän mukaan.

Analysoi jäljityksen jäsentimen jäljitykset

Valmistele pieni esimerkki tai kerää useita jäljityksiä raportin luonnin satunnaisten osien aikana.

Tee sitten jäljityksen jäsentimessä normaali alhaalta ylöspäin -analyysi ja vastaa seuraaviin kysymyksiin:

  • Mitkä ovat ajan kulutuksen kannalta käytetyimmät metodit?
  • Kuinka suuren osan kokonaisajasta nämä metodit käyttävät?

Vastaa samoihin kysymyksiin kyselyiden osalta.

Jos näet, että menetelmien etuliitteenä on "ER", siirry seuraavaan osaan.

Jos näet, että metodit tai kyselyt ovat peräisin sovelluspaketista, kannattaa käyttää yleisiä optimointeja (esimerkiksi indeksien luontia).

Analysoi kutsujen määrä. Jos määrä on odotettua suurempi, harkitse konfiguraation vastaavien solmujen välimuistiin tallentamista.

Tietokantakutsujen analysoiminen

Valmistele esimerkki, jossa on hieman tietoja, jotta voit kerätä ER-jäljityksen.

Avaa sitten jäljitys ER-mallin määritysten suunnitteluohjelmassa ja katso sivun alaosaa. Vastaa seuraaviin kysymyksiin:

PerfView-jäljityksen analysoiminen

PerfView on työkalu kokeneille kehittäjille. Lisätietoja seuraavista vaiheista on ohjeaiheessa Seinäkellon ajan tutkimuksen perustiedot.

  1. Kerää jäljitys säieajan avulla.

  2. Sisällytä vain pinot, jotka käyttävät runUnattended-määritystä, kun haluat suodattaa vain konfiguraation suorittamisen sisältävät säikeet. (Lisää runUnattendedIncPats-syöttöruutuun.)

  3. Kerää kaikki, suorittimen, verkon ja estojen ajat.

  4. Lataa PerfViewin ER-esimääritykset.

  5. Valitse ER>Muu esimääritys.

  6. Tarkastele nimiä:

    • Todennäköisesti näet alustan koodin, joka kuluttaa eniten aikaa.

    • Voit kaksoisnapauttaa (tai kaksoisnapsauttaa) ja käydä läpi kutsuttavia kohteita.

      Jos käytössä on luokkia, joissa on etuliite "ERExpression" ja jos ne ovat kaavoihin liittyviä toimintoja, voit päätellä toiminnon nimen luokan nimen perusteella ja voit tarkastella määritteitä ER-säilössä.

Korjaukset

  • Jos kyselyt kuluttavat suurimman osan suorittimen ajasta, yritä vähentää kyselyiden määrää:

    • Tarkista ER-jäljitys kaksoiskappalekyselyiden varalta.
    • Katso, montako tietuetta haetaan, ja arvioi, paljonko tietoja pitäisi teoreettisesti hakea.
  • Jos näet, että käytettävät toiminnot kuluttavat suurimman osan suorittimen ajasta, etsi konfiguraation paikka, joka kuluttaa eniten resursseja.

  • Jos näet, että tietojen keruutoiminnot kuluttavat suurimman osan suoritinajasta, kannattaa mallin määrityspuolella korvata ne SQL:n GROUP BY -määrityksellä.

Tietojenkeruu

Ympäristösi mukaan saatavilla olevia tietoja voidaan kerätä useilla eri tavoilla:

  • Hae kokonaissuoritusaika:

    • Toimintokeskuksesta
    • Tapahtumalokista
  • Profiloi suoritus:

    • ER-työkalujen avulla
    • Jäljityksen jäsennyksen avulla
    • PerfViewin avulla

Tietojen kerääminen tuotantoympäristössä

Joskus ongelmat voidaan toistaa vain tuotantoympäristössä. Tietoja voidaan kerätä seuraavilla tavoilla:

Tietojen kerääminen kehitysympäristössä

Tuotantoympäristössä käytettävissä olevien mainittujen työkalujen lisäksi kehitysympäristössä voi käyttää useita työkaluja:

  • Tapahtumaloki (Microsoft-Dynamics-ElectronicReporting). Tämä loki voi antaa sinulle kokonaissuorituksen ajan.
  • Yleiset .NET-työkalut, esimerkiksi PerfView.

Kehitysympäristön avulla voit myös joustavammin kokeilla. Voit esimerkiksi poistaa raporttien osia käytöstä, kun haluat nähdä, miten suoritusaika vaikuttaa.

Työkalut

Suoritusaika toimintokeskuksessa

ER voi näyttää konfiguraation suoritusajan toimintokeskuksessa. Tämä vaihtoehto toimii vain tietylle käyttäjälle ja tietylle yritykselle, ja vain vuorovaikutteisissa istunnoissa. Voit ottaa tämän ominaisuuden käyttöön noudattamalla seuraavia ohjeita.

  1. Valitse Organisaation hallinto>Sähköinen raportointi>Konfiguraatiot.
  2. Valitse Määritykset-sivun toimintoruudun Määritykset-välilehden Lisämääritykset-ryhmässä Käyttäjäparametrit.
  3. Määritä Käyttäjän parametrit -valintaikkunassa Näytä tiedoston luontiaika -valinnaksi Kyllä.

Suoritusaika tapahtumalokissa

  1. Avaa Windowsin tapahtumien katseluohjelma.
  2. Avaa Sovellukset ja palvelut -kohdassa Microsoft-Dynamics-ElectronicReporting/Operational.
  3. Etsi FormatMapingRun-tapahtumia, joissa EventID=2, koska nämä tapahtumat sisältävät kulunutta aikaa koskevat tiedot.

Jäljityksen jäsentimen jäljitykset

Koska ER on toteutettu X++-koodilla, voit käyttää yleisiä X++-työkaluja suorituskyvyn analysoimiseen. Lisätietoja on kohdassa Jäljityksen ottaminen jäljityksen jäsennyksen avulla.

Tähän lähestymistapaan liittyy muutamia rajoituksia. Koska osa ER:stä on toteutettu C#-koodilla, kaikki tiedot eivät ole käytettävissä. Voit kuitenkin tarkastella tietojen käyttötietoja. Lisäksi pitkät raporttien ajot voivat ylittää jäljityksen tallennusrajoitukset.

ER-jäljitys

ER voi kerätä omat jäljityksensä, ja sillä on visuaalisia ja analyysityökaluja kyseisiä jäljityksiä varten. Lisätietoja: Sähköisen raportoinnin muotojen suorittamisen seuraaminen suorituskykyyn liittyvien ongelmien ratkaisemiseksi.

PerfView

Koska sekä X++ että ER on toteutettu .NET-alustalla, voit käyttää yleisiä .NET-työkaluja. Voit käyttää esimerkiksi maksutonta PerfView-työkalua.

Voit myös kerätä tietoja komentoriviltä. Esimerkiksi seuraava Windows PowerShell -komentosarja kerää suoritusajan, kunnes kaikki kaavan suoritukset pysäytetään koneessa.

c:\programs\PerfView collect "e:\traces\$(date -format "ddMMyyyy_hhmm").etl" `
    -CircularMB:20000 -ThreadTime `
    -NoNGenRundown `
    -StopOnEtwEvent:Microsoft-Dynamics-ElectronicReporting/FormatMappingRun/Stop

Tähän lähestymistapaan liittyy muutamia rajoituksia. Sinulla on oltava järjestelmänvalvojan käyttöoikeus koneeseen. Lisäksi sinun on oltava kokenut kehittäjä, koska oppimiseen kuluu pitkä aika.

Muutosten tekeminen

Käytä välimuistiin tallentamista

Vaikka välimuistiin tallentaminen vähentää tietojen hakemiseen tarvittavaa aikaa, se kuluttaa muistia. Käytä välimuistiin tallentamista, kun haettavat tiedot eivät ole hyvin suuria. Lisätietoja ja esimerkki siitä, miten välimuistiin tallentamista käytetään, on kohdassa Mallin määrityksen parantaminen suoritusjäljityksen tietojen perusteella.

Haettujen tietojen määrän pienentäminen

Voit pienentää välimuistin muistin kulutusta rajoittamalla suorituksen aikana haettavan sovellustaulun tietueiden kenttien määrää. Tässä tapauksessa voit noutaa vain ne sovellustaulun kenttäarvot, joita tarvitset ER-mallimäärityksessä. Muita taulun kenttiä ei noudeta. Siksi välimuistiin haetuissa tietueissa tarvittava muistin määrä pienenee. Lisätietoja: ER-ratkaisujen suorituskyvyn parantaminen vähentämällä ajon aikana haettujen taulukenttien määrää.

Käytä välimuistiin tallennettua parametrisoitua laskettua kenttää

Joskus arvot on etsittävä toistuvasti. Esimerkkejä tällaisista ovat tilien nimet ja tilinumerot. Voit säästää aikaa luomalla lasketun kentän, jonka parametrit ovat ylimmällä tasolla, ja lisätä sitten kentän välimuistiin.

Tätä menetelmää kannattaa käyttää vain, jos välimuistiin tallennettujen tietojen koko on pieni. Lisätietoja on kohdassa ER-ratkaisujen suorituskyvyn parantamiseen lisäämällä parametrisoituja laskettujen kenttien tietolähteitä.

Käytä JOIN-tietolähdettä

JOIN-tietolähde mahdollistaa usean yhdistetyn tietueen hakemisen yhdellä kyselyllä. Kutakin liitettyä tietuetta ei tarvitse hakea erillisellä kyselyllä. Jos sinulla on esimerkiksi 1 000 riviä ja haet kunkin rivin nimiketiedot suhteen mukaan, kyselyjä on 1 001 (= 1 000 + 1). Jos käytät JOIN-tietolähdettä, samat tiedot voi hakea vain yhden kyselyn avulla. Lisätietoja: Käytä sähköisen raportoinnin (ER) mallimäärityksissä JOIN-tietolähteitä saadaksesi tietoja useista sovellustaulukoista.

Käytä FILTER-toimintoa WHERE-toiminnon asemesta

FILTER-toiminto suorittaa ehdot SQL Serverissä, kun taas WHERE-toiminto noutaa kaikki tiedot luettelosta yksi tietue kerrallaan ja soveltaa ehtoa kuhunkin tietueeseen. Haluat esimerkiksi valita yhden tietueen 1 000 tietueesta. Jos käytät WHERE-toimintoa, kaikki 1 000 tietuetta haetaan. Jos kuitenkin käytät FILTER-toimintoa, noudetaan täsmälleen yksi tietue. FILTER voi käyttää myös tietokantapuolen indeksejä.

Kerättyjen tietotoimintojen tai kumulatiivisen datatietolähteen käyttäminen

Jos konfiguraatiossa on GROUP BY -komponentti, joka sisältää aiemmin haettujen tietojen yhteenvedon raportissa, komponentti noutaa kaikki tiedot uudelleen. Käyttämällä kerättyjä datafunktioita ER:n avulla voit koota tietoja ensimmäisen noutamisen yhteydessä. Lisä tietoja on kohdassa ER – Määritä muoto suorittamaan laskenta ja summaus.

Korvaa osia konfiguraatiosta X++-koodissa

ER tukee taulujen ja luokkien sekä laajennusten kutsumenetelmiä. Harkitse mallimäärityksen osien uudelleen kirjoittamista X++-koodissa suorituskyvyn parantamiseksi.

ER voi kuluttaa seuraavien lähteiden tietoja:

  • Luokat (objekti- ja luokka-tietolähteet)
  • Taulut (taulu- ja taulutietue-tietolähteet)

ER-sovellusliittymän (API) avulla voi myös lähettää esilasketut tiedot kutsuvasta koodista. Sovellusohjelma sisältää useita esimerkkejä tästä lähestymistavasta.