Делите путем


Уобичајени проблеми и решења у вези са перформансама апликације са подлогом

Апликације са подлогом можете да правите користећи различите изворе података. Изаберите извор података и конектор на основу пословних потреба и сценарија за које дизајнирате апликацију. За пословне апликације, Мицрософт  Dataverse је препоручени < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > јер пружа неколико предности перформанси. За апликације са мало трансакција, можете да користите било који други расположиви извор података у свом окружењу.

Да бисте размотрили перформансе апликације, размислите о броју корисника који ће је користити када је објавите; о количини креирање/ажурирање/брисање (CRUD) трансакција; типу интеракција са подацима; приступу географском подручју и врстама уређаја корисника.

У овом чланку ћете сазнати за неке од најчешћих проблема у вези са перформансама због којих апликације са подлогом могу споро да се покрећу и како их решити. Ове информације ће вам помоћи да побољшате перформансе апликације узимајући у обзир ваш пословни план и раст.

Започећемо са неким од уобичајених проблема у вези са перформансама до којих долази без обзира на конектор који користите. У каснијим одељцима сазнаћете о проблемима у вези са перформансама и решењима специфичним за разне конекторе.

Пре него што започнете, уверите се да разумете фазе извршавања апликација са подлогом и током позива података. Такође, прочитајте уобичајени извори спорих перформанси за апликације са подлогом да бисте сазнали које су уобичајене замке које можете избећи током дизајнирања или ажурирања апликације са подлогом.

Велики скупови података се споро учитавају на различитим платформама

Перформансе апликације могу да се разликују приликом учитавања великих скупова података на различитим платформама као што су iOS или Android. До ове промене долази због различитих ограничења мрежних захтева на свакој платформи. На пример, број дозвољених истовремених мрежних захтева може се разликовати у једне до друге платформе. Ова разлика може имати велики утицај на време учитавања података за велике скупове података.

Препоручујемо вам да учитате само оне податке који су вам потребни за тренутно приказивање на екрану. За остале податке, пагинирајте и кеширајте податке. Још информација: Савети и најбоље праксе за побољшање перформанси апликације на платну

Прибављено је превише колона

Препоручујемо да изаберете само колоне које су неопходне за апликацију. Додавањем више (или свих) колона из извора података преузимају се сви подаци у колонама. Ова радња доводи до великог броја непотребних мрежних позива, а самим тим и велике искоришћености меморије на уређају клијента. Овај проблем може још више утицати на кориснике мобилних уређаја ако је мрежни пропусни опсег ограничен или ако уређај има ограничену меморију или застарели процесор.

На пример, ако користите Dataverse као извор података за апликацију, уверите се да сте омогућили функцију Експлицитни избор колона. Ова функција омогућава услузи Power Apps да ограничава преузимање података само за колоне које се користе у апликацији.

Да бисте укључили функцију експлицитног избора колона у апликацији са подлогом, идите на Поставке > Предстојеће функције > Преглед, а затим укључите прекидач за Експлицитни избор колоне.

Неподржани или застарели прегледачи

Корисници који користе неподржане или застареле прегледаче могу имати проблема са перформансама. Уверите се да корисници користе само подржане прегледаче за покретање апликација са подлогом.

Споре перформансе због географске удаљености

Географска локација окружења и растојање извора података од корисника могу да утичу на перформансе.

Препоручујемо да се ваше окружење налази у близини корисника. Иако Power Apps користи Azure мрежу за испоруку садржаја за садржај, позиви за пренос података и даље добијају податке из извора података. Извор података који се налази на другој географској локацији може негативно да утиче на перформансе апликације.

Превелика географска удаљеност утиче на перформансе на различите начине, као што су кашњење, смањена пропусна моћ, мањи пропусни опсег или губитак пакета.

Листа дозвола није конфигурисана

Уверите се да URL адресе потребних услуга нису блокиране или да су додате на листу дозвола у заштитном зиду. За комплетну листу свих URL адреса услуге које морају бити омогућене за Power Apps, идите на Обавезне услуге.

Употреба функција које није могуће делегирати и неодговарајућих ограничења реда података за упите које није могуће делегирати

Функције које је могуће делегирати делегирају обраду података на извор података, умањујући непотребни посао на страни клијента. Када делегирање није могуће, можете ограничити ограничење реда података за упите које није могуће делегирати тако да број редова враћених из везе засноване на серверу остане оптималан.

Коришћење функција које није могуће делегирати и неприкладних ограничења редова података за упите које није могуће делегирати додају додатне непотребне трошкове при преносу података. Ови непотребни подаци резултирају манипулацијом примљеним подацима до JS гомиле на страни клијента. Обавезно користите функције које је могуће делегирати за апликацију кад год је то могуће и оптимално ограничење реда података за упите које није могуће делегирати.

Још информација: Коришћење делегирања, Преглед делегирања

Потребно је подешавање за OnStart догађај

OnStart догађај се покреће када се апликација учитава. Позивање велике количине података помоћу функција у OnStart својству апликације довешће до спорог учитавања апликације. Ова спора навигација екраном ће утицати на екран са великом зависношћу контрола и вредностима дефинисаним на другом екрану.

Следећи одељци описују неке од најчешћих проблема са којима се суочавају у тим ситуацијама.

Велики број позива у OnStart догађају због чега се апликација споро покреће

У предузећу, количина позива за пренос података до централног извора података може довести до уског грла на серверу или такмичења између ресурса.

Користите механизам кеширања за оптимизацију позива података. Многи корисници могу користити једну апликацију, што резултира мноштвом позивима података по кориснику који досежу до крајњих тачака сервера. Ови позиви за пренос података могу бити место где може доћи до уског грла или пригушења.

Кашњење при OnStart догађају због тешких скрипти

Тешке скрипте на OnStart догађају једна су од најчешћих грешака приликом дизајнирања апликација са подлогом. Треба да прибавите само податке потребне за покретање апликације.

Оптимизујте формулу у OnStart догађају. На пример, уместо тога преместите неке функције у OnVisible својство. На овај начин можете дозволити да се апликација брзо покрене, а остали кораци могу се наставити док се апликација отвара.

Још информација: Оптимизовање OnStart својства

Савет

Препоручујемо коришћење својства App.StartScreen пошто поједностављује покретање апликација и повећава перформансе апликације.

Притисак меморије на страни клијента

Важно је проверити потрошњу меморије апликација са подлогом, јер се већину времена апликација покреће на мобилним уређајима. Изузеци од меморије у гомили су највероватнији узрок зашто апликација са подлогом пада или се замрзава („виси“) на одређеним уређајима.

JavaScript (JS) гомила може да достигне лимит због тешких скрипти које се покрећу на страни клијента за додавање, спајање, филтрирање, сортирање или груписање колона. У већини случајева, изузетак понестајања меморије на гомили код клијента може активирати да се апликација сруши или остане да виси.

Када користите податке из извора као што су Dataverse или SQL Server, можете да користите објекат Приказ како бисте осигурали да се спајање, филтрирање, груписање или сортирање дешавају на страни сервера уместо на страни клијента. Овај приступ смањује непотребно стварање скрипти код клијента за такве радње.

Ако је на клијентској страни дошло тешких операције за клијента, попут СПОЈИ или Групиши према са скупом података који има најмање 2000 записа, објекти на гомили ће се повећати што ће резултирати прекорачењем ограничења меморије.

Алатке за програмере за већину прегледача вам омогућавају профилисање меморије. Помаже вам да визуелизујете величину гомиле, документе, чворове и слушаоце. Профилишите перформансе апликације помоћу прегледача, као што је описано у прегледу Microsoft Edge (Chromium) алатки за програмере. Проверите сценарије који премашују праг меморије JS гомиле. Још информација: Решавање проблема са меморијом

Пример притиска меморије за апликацију како се види из развојних алата прегледача.

Разматрања перформанси приликом употребе SQL Server конектора

Можете користити SQL Server конектор за Power Apps ради повезивања са локалним SQL Server-ом или Azure SQL базом података. Овај одељак описује уобичајене проблеме везане за перформансе и решења за коришћење овог конектора за апликацију са подлогом. Још информација: Повезивање SQL Server-а са услуге Power Apps, Креирање апликације са подлогом из Azure SQL базе података

Напомена

Иако се овај одељак позива на SQL Server конектор за проблеме у вези са перформансама и решењима, већима препорука се примењује и на коришћење било ког типа базе података као извора података, као што су MySQL или PostgreSQL.

Погледајмо најчешће проблеме и решења за перформансе када користите SQL Server конектор за апликације са подлогом.

N+1 упит

Галерије које генеришу превише захтева за сервере доводе до проблема са N+1 упитом. Проблем N+1 упита је онај до ког најчешће долази када користите контролу Галерија.

Да бисте избегли проблем, користите прикажи објекте у позадини SQL-а или промените сценарије корисничког интерфејса.

Скенирање табеле уместо тражења индекса

Апликација може да се успори ако функције које користи апликација покрећу упите у бази података који резултирају скенирањем табела уместо претраживања индекса. Још информација: Савети, СКЕНИРАЊЕ табеле и ПРЕТРАЖИВАЊЕ индекса

Да бисте решили такве проблеме, користите StartsWith уместо IN у формули. Са SQL извором података, StartsWith оператор резултира претрагом индекса; али IN оператор резултира скенирањем индекса или табеле.

Спори упити

Можете да профилишите и подесите споре упите и индексе у SQL бази података. На пример, ако формула добија податке у опадајућем (DESC) редоследу на одређеној колони, та колона за сортирање би требало да има индекс са опадајућим редоследом. Индексни кључ подразумевано креира растући (ASC) редослед.

Такође можете да проверите URL адресу захтева за подацима. На пример, следећи исечак захтева за подацима (делимични OData позив) тражи да SQL врати 500 записа који се подударају са колоном Вредност и ређа по ID-у у опадајућем редоследу.

Items? \$filter=Column eq 'Value' & Orderby = ID desc & top 500

Ово помаже разумевању захтева индекса за покривање сличних услова захтева. У овом примеру, ако колона ID има индекс са опадајућим редоследом, упит ће бити обављен брже.

Проверите план извршавања спорих упита да бисте видели постоји ли неко скенирање табеле или индекса. Надгледајте све прекомерне трошкове претраживања кључева у плану извршења.

Још информација:

Такмичење ресурса базе података

Осигурајте да извор података – SQL база података – нема такмичења садржаја као што су уска грла процесора, У/И такмичење, притисак меморије или tempDB такмичење. Такође проверите да ли постоје временски истеци закључавања, чекања, застоја и упита.

Савет

Користите аутоматско подешавање за увиде у потенцијалне проблеме са перформансама упита, препоручена решења и за аутоматско решавање идентификованих проблема.

Дебели клијент или прекомерни број захтева

Апликација која изводи операције Групиши по, Филтрирај према или ПРИДРУЖИ на страни клијента користи процесор и меморијске ресурсе са клијентских уређаја. У зависности од величине података, овим операцијама може бити потребно више времена за писање скрипти на страни клијента, повећавајући величину JS гомиле на клијенту. Овај проблем се повећава за локални извор података, јер сваки позив података претраживања путује до извора података кроз мрежни пролаз података.

У таквим ситуацијама, користите објекат "Прикажи " у СQЛ бази података за операције "Групиши по", "Филтрирај по" или " ЈОИН ". Прикази могу да користе селективне колоне и уклањају непотребне колоне са big data типовима као што су NVARCHAR(MAX), VARCHAR(MAX) и VARBINARY(MAX).

Савет

Овај приступ такође помаже у решавању проблема са N+1 упитом.

Величина података пренета клијенту

Апликација са подлогом подразумевано приказује податке користећи табеле или приказе из доступних објеката базе података. Преузимање свих колона из табеле може резултирати спорим одзивом, посебно када се користе big data типови података као што је NVARCHAR(MAX).

Пренос велике количине података клијентима захтева време. Овај пренос доноси и више времена за извршавање скрипти када у JS гомили на страни клијента постоје велике количине података, као што је описано раније у овом чланку.

Да бисте смањили величину података који се преносе до клијента, користите приказе са одређеним колонама потребним за апликацију и уверите се да је омогућен експлицитни избор колона, као што је описано раније у овом чланку.

Разматрања специфична за локални SQL Server

На перформансе апликације са подлогом које користе SQL Server конектор са локалним мрежним пролазом за податке могуће је утицати на различите начине. Овај одељак наводи уобичајене проблеме у вези са перформансама и решења специфична за коришћење локалног извора базе података.

Неисправан локални мрежни пролаз за податке

Организације могу дефинисати више чворова локалне мрежне пролазе за податке. Чак и ако је један од чворова недоступан, захтеви за подацима на неисправни чвор неће вратити резултат у оквиру прихватљивог временског оквира или могу довести до порука о грешци типа „недоступно“ након неког времена чекања.

Уверите се да су сви чворови локалног мрежног пролаза за податке исправни и да су конфигурисани са минималним кашњењем мреже између чворова и SQL инстанце.

Локација локалног мрежног пролаза за податке

Мрежни пролаз за податке захтева мрежне позиве локалним изворима података ради тумачења OData захтева. На пример, мрежни пролаз података треба да разуме шему табеле података да би превео OData захтеве у изразе SQL језика за манипулацију подацима (DML). Додатни индиректни трошкови се додају када је мрежни пролаз података конфигурисан на посебној локацији са високом кашњењем мреже између мрежног пролаза података и СQЛ инстанце.

У пословном окружењу препоручујемо прилагодљив кластер мрежног пролаза за податке када очекујете тешке захтеве за подацима. Проверите колико је веза успостављено између чворова мрежног пролаза за податке и SQL инстанце.

Провером истовремених веза у локалном мрежном пролазу за податке или на SQL инстанци, ваша организација може да идентификује тачку где мрежни пролаз за податке треба да се смањи и са колико чворова.

Скалабилност мрежног пролаза за податке

Ако очекујете да ћете приступити великој количини података са локалног мрежног пролаза за податке, само један чвор локалног мрежног пролаза за податке може постати уско грло за обраду тако велике количине захтева.

Један чвор локалног мрежног пролаза за податке може бити довољан да се позабави са 200 или мање истовремених веза. Међутим, ако све ове истовремене везе активно извршавају упите, други захтеви ће на крају чекати доступну везу.

За информације о томе како да обезбедите да се ваш локални мрежни пролаз за податке повећава у складу са количином података и захтева, идите на Надгледање и оптимизовање перформанси локалног мрежног пролаза за податке.

Разматрања специфична за Azure SQL базу података

Апликације са подлогом могу да се повежу са Azure SQL базом података користећи SQL Server конектор. Чест узрок проблема са перформансама приликом коришћења Azure SQL базе података је одабир погрешног нивоа за ваше пословне захтеве.

Azure SQL база података доступна је у различитим нивоима услуга, са различитим могућностима за подударање различитих пословних захтева. За више информација о нивоима идите на Документација о Azure SQL бази података.

Код тешких захтева за подацима, ресурси на нивоу који сте изабрали могу се смањити чим буде била достигнута вредност прага. Такво пригушивање компромитује перформансе следећег скупа упита.

Проверите ниво услуге Azure SQL базе података. Нижи ниво ће имати одређена ограничења и границе. Из перспективе перформанси, процесор, улазно/излазна пропусна моћ и кашњење су важни. Стога, препоручујемо да периодично проверавајте перформансе SQL базе података и проверите да ли коришћење ресурса премашује праг. На пример, локални SQL Server обично поставља праг употребе процесора на око 75 посто.

Разматрања перформанси приликом употребе SharePoint конектора

Можете користити SharePoint конектор да бисте креирали апликације користећи податке из услуге Microsoft Lists. Такође можете да креирате апликације са подлогом директно из приказа листе. Погледајмо најчешће проблеме и решења за перформансе за коришћење SharePoint извора података са апликацијом са подлогом.

Превише колона за динамичко претраживање

SharePoint подржава различите типове података – укључујући динамичка претраживања као што су Особа, Група и Израчунато. Ако листа дефинише превише динамичких колона, потребно је више времена за манипулацију тим динамичким колонама унутар услуге SharePoint пре враћања података клијенту који покреће апликацију са подлогом.

Немојте прекомерно да користите колоне за динамичко претраживање у услузи SharePoint. Ова прекомерна употреба може довести до непотребних трошкова које је било могуће избећи на страни услуге SharePoint за манипулацију подацима. Уместо тога можете да користите статичке колоне да бисте чували псеудониме е-поште или имена људи, на пример.

Колона са сликама и прилог

Величина слике и приложене датотеке могу допринети спором одговору док се преузимају на клијенту.

Прегледајте листу и уверите се да су дефинисане само неопходне колоне. Број колона на листи утиче на перформансе захтева за подацима. Овај ефекат је због подударних записа или се преузимају записи до дефинисаних ограничења реда података и преносе натраг клијенту са свим колонама дефинисаним на листи – чак и ако апликација не користи све њих.

Да бисте слали упите само за колоне које користи апликација, омогућите функцију експлицитног избора колона, као што је описано раније у овом чланку.

Велики спискови

Ако имате велику листу са стотинама хиљада записа, размислите о подели листе или је поделите на неколико листа на основу параметара као што су категорије или датум и време.

На пример, ваши подаци могу да се чувају на различитим листама годишње или месечно. У том случају, можете да дизајнирате апликацију тако да дозволите кориснику да одабере временски период и да преузме податке унутар тог опсега.

У контролисаном окружењу, репер перформанси је доказао да перформансе OData захтева према услузи Microsoft Lists или SharePoint листама високо је повезан са бројем колона на листи и бројем редова који се преузимају (ограничено ограничењем реда са подацима за упите које није могуће делегирати). Мањи број колона и ниже подешавање ограничења реда података могу да утичу на бољи учинак апликација са подлогом.

Ипак, у стварном свету апликације су дизајниране тако да задовоље одређене пословне захтеве. Можда неће бити брзо или једноставно смањити ограничење реда података или број колона у листи. Међутим, препоручујемо да надгледате OData захтеве на страни клијента и подешавање ограничења реда података за упите које није могуће делегирати и број колона у листи.

Разматрања перформанси приликом употребе услуге Dataverse извора података

Када користите Microsoft Dataverse као извор података, захтеви за подацима иду директно на инстанцу окружења, без проласка кроз Azure API управљање. Још информација: Ток позива података при повезивању са услугом Microsoft Dataverse

Савет

Када се користе прилагођене табеле у услузи Dataverse, можда ће бити потребна додатна безбедносна конфигурација да би корисници могли да виде записе помоћу апликација са подлогом. Још информација: Концепти безбедности у услузи Dataverse, Конфигурисање безбедности корисника за ресурсе у окружењу и Безбедносне улоге и привилегије

Апликација са подлогом повезана са услугом Dataverse може споро да се извршава ако покреће тешке скрипте за клијенте, као што је су Филтрирај према или ПРИДРУЖИ на страни клијента уместо на страни сервера.

Користите Dataverse приказе када је то могуће. Приказ са потребним критеријумима за придруживање или филтрирање помаже у смањењу непотребних трошкова коришћења целе табеле. На пример, ако треба да придружите табеле и филтрирате њихове податке, можете да дефинишете приказ придружујући им се и дефинишете само колоне које су вам потребне. Затим можете да користите овај приказ у апликацији који креира ове непотребне послове на страни сервера за операцију придруживања/филтрирања уместо на страни клијента.Овај метод смањује не само додатне операције, већ и пренос података. За информације о уређивању критеријума за филтрирање и сортирање идите на Уређивање критеријума филтера.

Разматрања перформанси приликом употребе Excel конектора

Excel конектор пружа могућност повезивања из апликације са подлогом са подацима у табели унутар Excel датотеке. Овај конектор има ограничења у поређењу са другим изворима података (на пример, ограничене делегиране функције) које ограничавају апликацији са подлогом да учитава податке из табеле само до 2000 записа. Да бисте учитали више од 2000 записа, поделите податке у различите табеле података као остале изворе података.

Погледајмо најчешће проблеме и решења за перформансе када користите Excel као извор података за апликације са подлогом и како да их решите.

Превише табела са подацима и велика величина података

Апликација може бити спора када користи Excel датотеку са превише табела са подацима или табеле са подацима које садрже огромну количину података у неколико колона. Excel датотека није релациона база података или извор података који пружа делегиране функције. Power Apps прво мора учитати податке из дефинисаних табела података, а затим користити функције као што су Филтрирај, Сортирај, ПРИДРУЖИ, Групиши према и Претрага.

Превише табела са подацима, са великим бројем редова и колона утиче на перформансе апликације и непотребне трошкове на страни клијента, јер сваком табелом са подацима треба манипулисати у оквиру JS гомиле. Овај ефекат такође доводи до тога да апликација троши више меморије на страни клијента.

Да бисте били сигурни да тај проблем неће утицати на вашу апликацију, дефинишите у Excel датотеци само потребне колоне у табели са подацима.

Тешке трансакције

Excel није систем релационих база података. Excel управља свим променама из апликације на исти начин као што корисник мења податке у датотеци у Excel формату. Ако апликација има велики број читања, али мање CRUD операција, можда ће имати добар учинак. Међутим, ако апликација извршава тешке трансакције, то може негативно утицати на перформансе апликације.

Не постоји одређена гранична вредност за број трансакција, јер она такође зависи од података којима се манипулише. Неколико других аспеката такође утиче на перформансе апликације, попут мрежног оптерећења или уређаја корисника.

Ако имате податке само за читање, такве податке можете да увезете у апликацију локално, уместо да их учитате из извора података. За пословне апликације уместо тога користите изворе података као што су Dataverse, SQL Server или SharePoint.

Величина датотеке

Можете бирати између широког спектра опција складишта у облаку са различитим или подесивим капацитетом складиштења за датотеку у Excel формату. Међутим, једна велика Excel датотека са свим табелама дефинисаним у једној датотеци додаје додатне трошкове за апликацију током преузимања датотеке и читања података за учитавање на страни клијента.

Уместо да користите једну велику датотеку, поделите податке на више Excel датотека са минималним табелама са подацима. Затим се повежите са сваком датотеком само када вам затреба. На овај начин се учитавање података из табеле са подацима дешава у фрагментима, смањујући опште трошкове многих табела или великог скупа података.

Локација датотеке

Географска локација извора података и растојање од локације клијента може резултирати уским грлом за перформансе апликације и изазвати кашњење мреже. Овај ефекат се може појачати кад мобилни клијент има ограничену пропусну моћ за повезивање.

Датотеку је боље држати близу крајњих корисника (или већине крајњих корисника ако имате глобалну циљну групу) тако да се датотека може брзо преузети.

Следећи кораци

Савети и најбоље праксе за побољшање перформанси апликације са подлогом

Такође погледајте

Разумевање фаза извршавања апликације са подлогом и тока позивања података
/Уобичајени извори спорих перформанси за апликацију са подлогом
Уобичајени проблеми и решења за услугу Power Apps
Решавање проблема са покретањем за Power Apps

Напомена

Можете ли нам рећи о својим жељеним поставкама језика у документацији? Испуните кратку анкету. (имајте на уму да је ова анкета на енглеском језику)

Анкета ће трајати око седам минута. Не прикупљају се лични подаци (изјава о приватности).