8 Using advanced visualization tools for profiled data

 

This chapter covers

  • Detecting problems with connections to relational databases
  • Using call graphs to more quickly understand an app’s design
  • Using flame graphs to more easily visualize an app’s execution
  • Analyzing queries an app sends to a NoSQL database server

In this chapter, we discuss valuable techniques that can make life easier when investigating specific scenarios. We start the chapter by examining an approach for identifying connection problems between a Java app and a relational database server. We already discussed profiling SQL queries in chapter 7, but sometimes problems appear when an app establishes communication with a DBMS. Such situations can even lead to an app not responding at all, which makes finding the causes of such problems essential.

In section 8.2, I’ll show you one of my favorite ways to understand the code behind a given execution scenario—a simple approach using call graphs, which are visual representations of the dependencies between an app’s objects. I find call graphs helpful, especially when dealing with messy code I’ve never seen before. And since I’m sure most developers have to deal with messy codebases at some point in their careers, knowing this approach will be helpful.

8.1 Detecting problems with JDBC connections

8.2 Understanding the app’s code design using call graphs

8.3 Using flame graphs to spot performance problems

8.4 Analyzing queries on NoSQL databases

Summary