cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
BrianHFASPS
Skilled Sharer
Skilled Sharer

Performance troubleshooting, where are my bottlenecks?

I am trying to optimize my users experience and I am not sure how to troubleshoot performance of my app. My biggest pain point is when users do a bunch of Patch to a Azure SQL DB. I am reading values from a local collection and then creating records in a table via patch. Sometimes I am lucky and it does 4 per second, sometimes I am unlucky and it is 4 seconds per record. Also the fact that it is really inconsistent is frustrating for users. Here is me prime offender code. It is usually acting upon a list of 10-15 rows. The second ForAll in the If is the thing that takes the most time. After the code is a shot of the table that includes time.

UpdateContext({LCVisible: false});
If(
    'Attendance Class Name Dropdown'.Selected.Activity_x0020_Name = "Garderie after Activity",
    ForAll(
        Roster,
        Patch(
            '[dbo].[Daily Activity Attendance]',
            LookUp(
                '[dbo].[Daily Activity Attendance]',
                DailyAttUID = User_x0020_ID && 'AttendanceDate String' = TodayVar
            ),
            {
                ActivityTwo: 'Attendance Class Name Dropdown'.Selected.ActivityID,
                ActivityTwoSigninTime: Text(
                    Now(),
                    "[$-en-US]hh:mm:ss"
                )
            }
        )
    ),
    ForAll(
        Roster,
        If(
            IsBlank(
                LookUp(
                    '[dbo].[Daily Activity Attendance]',
                    DailyAttUID = User_x0020_ID && 'AttendanceDate String' = TodayVar
                )
            ),
            Patch(
                '[dbo].[Daily Activity Attendance]',
                Defaults('[dbo].[Daily Activity Attendance]'),
                {
                    DailyAttUID: User_x0020_ID,
                    AttendanceDate: Today(),
                    ActivityOne: 'Attendance Class Name Dropdown'.Selected.ActivityID,
                    ActivityOneSigninTime: Text(
                        Now(),
                        "[$-en-US]hh:mm:ss"
                    )
                }
            ),
            Patch(
                '[dbo].[Daily Activity Attendance]',
                LookUp(
                    '[dbo].[Daily Activity Attendance]',
                    DailyAttUID = User_x0020_ID && 'AttendanceDate String' = TodayVar
                ),
                {
                    ActivityOneSigninTime: Text(
                        Now(),
                        "[$-en-US]hh:mm:ss"
                    )
                }
            )
        )
    );
    ForAll(
        AbsentList,
        If(
            IsBlank(
                LookUp(
                    '[dbo].[Daily Activity Attendance]',
                    DailyAttUID = User_x0020_ID && 'AttendanceDate String' = TodayVar
                )
            ),
            Patch(
                '[dbo].[Daily Activity Attendance]',
                Defaults('[dbo].[Daily Activity Attendance]'),
                {
                    DailyAttUID: User_x0020_ID,
                    AttendanceDate: Today(),
                    ActivityOne: 'Attendance Class Name Dropdown'.Selected.ActivityID,
                    Absent: 1
                }
            ),
            Patch(
                '[dbo].[Daily Activity Attendance]',
                LookUp(
                    '[dbo].[Daily Activity Attendance]',
                    DailyAttUID = User_x0020_ID && 'AttendanceDate String' = TodayVar
                ),
                {Absent: 1}
            )
        )
    )
);
Patch(
    '[dbo].[Activities]',
    LookUp(
        '[dbo].[Activities]',
        ActivityID = 'Attendance Class Name Dropdown'.Selected.ActivityID
    ),
    {AttTakenDate: Today()}
);
Refresh('[dbo].[Activities]');
Refresh('[dbo].[Activity View]');
Clear(ClassList);
Clear(AbsentList);
Clear(Roster);
UpdateContext({LCVisible: true})

Attendance Patch SQL.png

Any suggestions on finding and fixing my bottleneck or just trying to trace performance issues. I can do this on a wired desktop with GB ethernet to fiber connection with less than 25 ms ping to powerapps.com. I don't think it is my network but I am open to help on that. The quantity of data is tiny we are talking KB of data.

 

Brian Hoyt

9 REPLIES 9
RandyHayes
Super User
Super User

@BrianHFASPS 

You might want to refactor it a little.  You are looking up the records for your patch statements over and over.  Normally not a big issue, but that could be refactored a bit.

Perhaps consider using an UpdateIf rather than a Patch for records that do exist.

 

Just some thoughts...perhaps it will spark some help.

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
NOTE: My normal response times will be Mon to Fri from 1 PM to 10 PM UTC (and lots of other times too!)
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

Really want to show your appreciation? Buy Me A Cup Of Coffee!
Jinman
Employee
Employee

BrianHFASPS, can you share AppId or SessionId? will check telemetry to see which layers caused such bottleneck.


@Jinman wrote:

BrianHFASPS, can you share AppId or SessionId? will check telemetry to see which layers caused such bottleneck.


Can I get that for past use or should I run a test and grab id?


@Jinman wrote:

BrianHFASPS, can you share AppId or SessionId? will check telemetry to see which layers caused such bottleneck.


Did a quick test and it was quicker than it often is this morning. 

Session ID: a4996443-d572-4b4e-a874-6c3735252fd2
PowerApps 3.19031.13

 

App ID
d133c35b-f219-4afc-a10a-3019be297766

 

Thanks for any help you can provide. I will grab session ID for real runthrough this afternoon.

Thanks for sharing AppId. checked telemetry and couldn't find any bottleneck on Patching procedures.

From your app, the worst patching request had taken 696 ms in server side within last 24hours. 

If you encounter slowness of Patching again, please let me know with time window and sessionId.

 

However, I noticed that retrieving 500 records from Daily Activity Attendance takes up to 00 sec with transmitting 35 MBytes of data size. Both transmitting and scripting time for that request is high.

Could you select only necessary columns to retrieve? or you can create a View returning only necessary columns and use the view for Daily Activity Attendance.

 

Another point is to check if following tables have indexes.

1. [Today Absent XXXX] should have an index on Student_x0020_Last_x0020_Name Asc

2. [Bus Routes YYYY] table should have an index on Time Asc

3. [Activities ZZZZ] table should hvave an index on ActivityId Asc

 


@Jinman wrote:

Thanks for sharing AppId. checked telemetry and couldn't find any bottleneck on Patching procedures.

From your app, the worst patching request had taken 696 ms in server side within last 24hours. 

If you encounter slowness of Patching again, please let me know with time window and sessionId.

 

However, I noticed that retrieving 500 records from Daily Activity Attendance takes up to 00 sec with transmitting 35 MBytes of data size. Both transmitting and scripting time for that request is high.

Could you select only necessary columns to retrieve? or you can create a View returning only necessary columns and use the view for Daily Activity Attendance.

 

Another point is to check if following tables have indexes.

1. [Today Absent XXXX] should have an index on Student_x0020_Last_x0020_Name Asc

2. [Bus Routes YYYY] table should have an index on Time Asc

3. [Activities ZZZZ] table should hvave an index on ActivityId Asc

 


I am pretty new to PowerApps (and not very knowledgable on SQL perf tuning) so thanks for the pointers here. Is the big data transfer caused when I do a Refresh on that table or would it also be caused on a LookUp? I am not sure where I am causing that big lookup. To your point however I have created a view that exculdes the two photo / binary columns and also limits the rows to relevant ones to hopefully greatly shrink that query. 

 

I am now reading about how to create indexs on tables and views (again new to SQL perf). This is the first DB I have created, I am usually mucking around in someone elses.


@BrianHFASPS wrote:

I am now reading about how to create indexs on tables and views (again new to SQL perf). This is the first DB I have created, I am usually mucking around in someone elses.


If you wouldn't mind could you help me verify this is what you were recommending doing to create indexes?

 

CREATE INDEX idx_ActivityID
ON dbo.Activities (ActivityID ASC)
CREATE INDEX idx_Time
ON [dbo].[Bus Routes] (Time ASC)

I tried to add index to my view. I added SCHEMABINDING first but then it failed because I use Outer Joins. May have to refactor my view to get it to work.

 

Ok I refactored my View and got to all be inner joins (that was a good exercise I will do on other views now that my DB and data have matured) but it now complains "The function 'getdate' yields nondeterministic results. Use a deterministic system function, or modify the user-defined function to return deterministic results." The problem is the entire purpose of this view and several others I use is to narrow my daily attendance table to only be today's attendance. The hope being to shrink the data size that gets fed to App to be smaller than 200 rows or an ever growing table.

Thanks BrianHFASPS. You are catching very fast.

Yes, the given syntax is correct to create index.

CREATE INDEX idx_Time
ON [dbo].[Bus Routes] (Time ASC)

 

In general, we recommend to have WITH ( ONLINE=ON ) option always, which allows any transactions be executing while this index get creating. it would be great if you explicitly mention NONCLUSTERED word too. 

 

CREATE NONCLUSTERED INDEX idx_Time ON [dbo].[Bus Routes] (Time ASC) WITH(ONLINE=ON)

 

If you made changes, can you do test once again? Let's do compare to see if these activities improved the performance of your app and also to see what next comes up.

Helpful resources

Announcements

Super User of the Month | Chris Piasecki

In our 2nd installment of this new ongoing feature in the Community, we're thrilled to announce that Chris Piasecki is our Super User of the Month for March 2024. If you've been in the Community for a while, we're sure you've seen a comment or marked one of Chris' helpful tips as a solution--he's been a Super User for SEVEN consecutive seasons!       Since authoring his first reply in April 2020 to his most recent achievement organizing the Canadian Power Platform Summit this month, Chris has helped countless Community members with his insights and expertise. In addition to being a Super User, Chris is also a User Group leader, Microsoft MVP, and a featured speaker at the Microsoft Power Platform Conference. His contributions to the new SUIT program, along with his joyous personality and willingness to jump in and help so many members has made Chris a fixture in the Power Platform Community.   When Chris isn't authoring solutions or organizing events, he's actively leading Piasecki Consulting, specializing in solution architecture, integration, DevOps, and more--helping clients discover how to strategize and implement Microsoft's technology platforms. We are grateful for Chris' insightful help in the Community and look forward to even more amazing milestones as he continues to assist so many with his great tips, solutions--always with a smile and a great sense of humor.You can find Chris in the Community and on LinkedIn. Thanks for being such a SUPER user, Chris! 💪🌠

Tuesday Tips: Community Ranks and YOU

TUESDAY TIPS are our way of communicating helpful things we've learned or shared that have helped members of the Community. Whether you're just getting started or you're a seasoned pro, Tuesday Tips will help you know where to go, what to look for, and navigate your way through the ever-growing--and ever-changing--world of the Power Platform Community! We cover basics about the Community, provide a few "insider tips" to make your experience even better, and share best practices gleaned from our most active community members and Super Users.   With so many new Community members joining us each week, we'll also review a few of our "best practices" so you know just "how" the Community works, so make sure to watch the News & Announcements each week for the latest and greatest Tuesday Tips!This Week: Community Ranks--Moving from "Member" to "Community Champion"   Have you ever wondered how your fellow community members ascend the ranks within our community? What sets apart an Advocate from a Helper, or a Solution Sage from a Community Champion? In today’s #TuesdayTip, we’re unveiling the secrets and sharing tips to help YOU elevate your ranking—and why it matters to our vibrant communities. Community ranks serve as a window into a member’s role and activity. They celebrate your accomplishments and reveal whether someone has been actively contributing and assisting others. For instance, a Super User is someone who has been exceptionally helpful and engaged. Some ranks even come with special permissions, especially those related to community management. As you actively participate—whether by creating new topics, providing solutions, or earning kudos—your rank can climb. Each time you achieve a new rank, you’ll receive an email notification. Look out for the icon and rank name displayed next to your username—it’s a badge of honor! Fun fact: Your Community Engagement Team keeps an eye on these ranks, recognizing the most passionate and active community members. So shine brightly with valuable content, and you might just earn well-deserved recognition! Where can you see someone’s rank? When viewing a post, you’ll find a member’s rank to the left of their name.Click on a username to explore their profile, where their rank is prominently displayed. What about the ranks themselves? New members start as New Members, progressing to Regular Visitors, and then Frequent Visitors.Beyond that, we have a categorized system: Kudo Ranks: Earned through kudos (teal icons).Post Ranks: Based on your posts (purple icons).Solution Ranks: Reflecting your solutions (green icons).Combo Ranks: These orange icons combine kudos, solutions, and posts. The top ranks have unique names, making your journey even more exciting! So dive in, collect those kudos, share solutions, and let’s see how high you can rank! 🌟 🚀   Check out the Using the Community boards in each of the communities for more helpful information!  Power Apps, Power Automate, Copilot Studio & Power Pages

Find Out What Makes Super Users So Super

We know many of you visit the Power Platform Communities to ask questions and receive answers. But do you know that many of our best answers and solutions come from Community members who are super active, helping anyone who needs a little help getting unstuck with Business Applications products? We call these dedicated Community members Super Users because they are the real heroes in the Community, willing to jump in whenever they can to help! Maybe you've encountered them yourself and they've solved some of your biggest questions. Have you ever wondered, "Why?"We interviewed several of our Super Users to understand what drives them to help in the Community--and discover the difference it has made in their lives as well! Take a look in our gallery today: What Motivates a Super User? - Power Platform Community (microsoft.com)

March User Group Update: New Groups and Upcoming Events!

  Welcome to this month’s celebration of our Community User Groups and exciting User Group events. We’re thrilled to introduce some brand-new user groups that have recently joined our vibrant community. Plus, we’ve got a lineup of engaging events you won’t want to miss. Let’s jump right in: New User Groups   Sacramento Power Platform GroupANZ Power Platform COE User GroupPower Platform MongoliaPower Platform User Group OmanPower Platform User Group Delta StateMid Michigan Power Platform Upcoming Events  DUG4MFG - Quarterly Meetup - Microsoft Demand PlanningDate: 19 Mar 2024 | 10:30 AM to 12:30 PM Central America Standard TimeDescription: Dive into the world of manufacturing with a focus on Demand Planning. Learn from industry experts and share your insights. Dynamics User Group HoustonDate: 07 Mar 2024 | 11:00 AM to 01:00 PM Central America Standard TimeDescription: Houston, get ready for an immersive session on Dynamics 365 and the Power Platform. Connect with fellow professionals and expand your knowledge. Reading Dynamics 365 & Power Platform User Group (Q1)Date: 05 Mar 2024 | 06:00 PM to 09:00 PM GMT Standard TimeDescription: Join our virtual meetup for insightful discussions, demos, and community updates. Let’s kick off Q1 with a bang! Leaders, Create Your Events!    Leaders of existing User Groups, don’t forget to create your events within the Community platform. By doing so, you’ll enable us to share them in future posts and newsletters. Let’s spread the word and make these gatherings even more impactful! Stay tuned for more updates, inspiring stories, and collaborative opportunities from and for our Community User Groups.   P.S. Have an event or success story to share? Reach out to us – we’d love to feature you!

Tuesday Tips: Community Blogs--A Great Place to Start

It's TUESDAY, so it's time for an all-new TUESDAY TIP.    This ongoing series of posts is our way of communicating helpful things we've learned or shared that have helped members of the Community. Whether you're just getting started or you're a seasoned pro, Tuesday Tips will help you know where to go, what to look for, and navigate your way through the ever-growing--and ever-changing--world of the Power Platform Community! We cover basics about the Community, a few "insider tips" to make your experience even better, and share best practices gleaned from our most active community members and Super Users. Make sure to watch the News & Announcements each week for the latest and greatest Tuesday Tips!   THIS WEEK: COMMUNITY BLOGS One of the highlights of the Power Platform Community is the very active Community Blog. Whether you're working mostly with Power Apps, creating flows in Power Automate, unlocking the power of Copilot Studio, or building websites with Power Pages, each Community has its own, dedicated blog that is written by--and for--our Community members!When you have a question and aren't sure how to ask it, or when you're looking for a solution to a particularly vexing problem, what you're looking for may already have been written about by someone who has faced the issue--and found an answer! Our blogs are written by both Super User pros and by low-code rookies, because it doesn't matter how long you've been part of Power Platform or the Community. What matters is whether or not you have a solution that can be shared to people who really need the help.   With new blog posts released several times a week, you never know what answer you will find. And the blogs are a great place to discuss what works, share what you may have found yourself, and build connections with other Community members facing similar questions or concerns! We are so grateful for the awesome group of bloggers who share their tips, knowledge, and skills. It's been exciting to see so many new Community members join the blog since last fall.Check Out the Community Blogs Today: Power Apps Community BlogPower Automate Community BlogCopilot Studio Community BlogPower Pages Community Blog There's so much more you'll discover in the Community Blogs, and we hope you'll check them out today!  Interested in blogging? Click here & message your Community Managers today to get started.

February 2024 Community Newsletter

Welcome to our February Newsletter, where we highlight the latest news, product releases, upcoming events, and the amazing work of our outstanding Community members. If you're new to the Community, please make sure to follow the latest News & Announcements and check out the Community on LinkedIn as well! It's the best way to stay up-to-date in 2024 with all the news from across Microsoft Power Platform and beyond. Are you ready to "Leap" in to all we've got to share today?   COMMUNITY HIGHLIGHTS Check out the most active community members of the last month! These hardworking members post regularly, answer questions, kudos, and provide top solutions in their communities. We are so thankful for all your great work in January, and we can't wait to see who will be our most active members next month!   Power AppsPower AutomateCopilot StudioPower PagesWarrenBelzWarrenBelzPstork1saudali_25LaurensMPstork1stephenrobertLucas001AARON_ClbendincpaytonSurendran_RANBNived_NambiarMariamPaulachanNikhil2JmanriqueriosANBJupyter123rodger-stmmbr1606Agniusstevesmith27mandelaPhineastrice602AnnaMoyalanOOlashynBCLS776grantjenkinsExpiscornovusJcookSpongYeAARON_CManishSolankiapangelesPstork1ManishSolankiSanju1Fubar   There was a lot of activity in the Community in February! Did you miss anything? Here are just a few of the announcements and updates we shared: Super User Season 1 is HereFebruary 2024 User Group Update: Welcoming New GroupsCelebrating a New Season of Super UsersCheck out the February 2024 Dynamics NewsletterAnnouncing Copilot Cookbook GallerySuper User of the Month D. PoggemannTuesday Tips: Getting Started in the Community The best way to not miss them is to make sure you're subscribed to your community's News & Announcements. Subscribe today and don't miss anything next month! Power Apps News, Power Automate News, Copilot Studio News, Power Pages News Copilot Cookbook for Power Apps The all-new Copilot Cookbook is now available in the #PowerApps Community - offering a wide array of best practices on how to use Microsoft Copilot to develop and create in Power Apps.   The #CopilotCookbook is your new go-to resource when you need inspiration (or when you're stuck!) and aren't sure how to best partner with Copilot. So, whether you're looking for the best prompts or just want to know about responsible AI use, you can visit the Copilot Cookbook for regular, high-quality content that you can rely on. Our team will be reviewing posts using the new "Copilot " label to ensure we highlight and amplify the most relevant and recent content, so you're assured of high-quality content every time you visit. If you share a post that gets featured in the curated gallery, you'll get a PM in the Community to let you know!   The curated gallery is now ready for you to experience, so click the image below and check out the all-new Copilot Cookbook for Power Apps today. We can't wait to see what you "cook" up! 👨🍳       Power Platform Dev Weekly Celebrate 200th Episode Congratulations to Danish Naglekar, Anwesha Sharma, Matt Beard, Mark Carrington Carl Cookson and the team, as they celebrated the 200th episode of Power Platform Dev Weekly in February!   Click the image below to check out this landmark episode, featuring content from the likes of Nati Turtledove, Matthew Devaney, Inogic, Mohamed Ashiq Faleel, Mike Hartley, Nishant Rana, James Yumnam, Carl Cookson, Yannick Reekmans, Deepesh Somani, and many more.       "Get Started With" Power Platform Shorts Series This month we launched our new 'Get Started With' series on YouTube - a selection of sweet snapshots to keep you in the loop with all the latest Copilot trends that you can try out through advice at Microsoft Learn. Click the image below to check out the entire playlist so far, and don't forget to subscribe to our YouTube channel for all the latest updates.     UPCOMING EVENTS Canadian Power Platform Summit - Vancouver - 16th March 2024 Check out the first ever Canadian Power Platform Summit, which takes place at Microsoft Vancouver office on Saturday 16th March 2024! Get ready to immerse yourself in the ultimate Power Platform experience at the #CPPS24. This event is tailored for makers, developers, students and tech enthusiasts eager to explore the depths of Power Platform technologies. With sessions ranging from beginner-friendly to advanced-intermediate, this event offers a diverse range of insights for attendees of all levels.   There's a great range of speakers, including the likes of Lisa Crosbie, Matthew Devaney, Ulrikke Akerbæk, Oleksandr Olashyn, Mark Smith, Jake Harvey, Manju Gurjar, Adam Tobias, Mats Necker, Natasza Kosakowska, Linn Zaw Win, Salim Adamon, Tomas Prokop, Maxim Nikonov, and many more.   Great work by Chris Piasecki, Éric Sauvé, Nick Doelman, Scott Durow, Victor Dantas and the team for putting this amazing event together. So, whether you're a seasoned pro or a rising star, click the image below to join the Microsoft Community in Canada to gain practical insights, discover real-world examples, and take away actionable skills to boost your expertise.   Business Applications Launch Event - Virtual - 10th April 2024 Registration is now open for the Microsoft Business Applications Launch event which kicks off at 9am PST on Wednesday 10th April 2024. Join Microsoft product leaders and engineers for an in-depth look at the latest news and AI capabilities in Power Platform and #Dynamics365, featuring the likes of Charles Lamanna, Sangya Singh, Julie Strauss, Donald Kossmann, Lori Lamkin, Georg Glantschnig, Mala Anand, Jeff Comstock, and Mike Morton.     Microsoft Fabric - Las Vegas - 26-28th March 2024 Exciting times ahead for the inaugural #MicrosoftFabric Community Conference on March 26-28 at the MGM Grand in Las Vegas! The conference will cover all the latest in analytics, AI, databases, and governance across 150+ sessions, with guest speakers including Arun Ulag, Amir Netz, Jessica Hawk, Eric Boyd, Kim Manis, Adam Saxton, Patrick LeBlanc, Bob Ward, Wangui McKelvey, Wee Hyong T., Justyna Lucznik, Priya Sathy, Mehrnoosh Sameki, Rachel Shepard, Karthik Ravindran, Jason Himmelstein, and many more.   On-site there will be a special Community Lounge, interactive learning labs, plus you'll be able to 'Ask the Experts' all your questions to get help from data, analytics, and AI specialists, including community members and the Fabric Customer Advisory Team. Click the image below to find out more about the ultimate learning event for Microsoft Fabric!   If you'd like to learn how the latest advances in AI and how #MicrosoftCopilot can help you streamline your processes, click the image below to register today!       LATEST COMMUNITY BLOG ARTICLES Power Apps Community Blog Power Automate Community Blog Copilot Studio Community Blog Power Pages Community Blog Check out 'Using the Community' for more helpful tips and information: Power Apps, Power Automate, Copilot Studio, Power Pages

Top Solution Authors
Top Kudoed Authors
Users online (4,346)