3.2. Understanding VoltDB Execution Plans

Documentation

Home » Documentation » Performance Guide

3.2. Understanding VoltDB Execution Plans

When you compile your schema and stored procedures, VoltDB creates the folder ./debugoutput (in the current default path) and writes files summarizing the planning process into subfolders. Many of these files contain more information than necessary to help the end user. But one folder contains a summary in human readable form.

The folder ./debugoutput/statement-winner-plans/ contains the final plans chosen for execution. In other words, a description of the plans that VoltDB chose for executing each and every SQL statement in your project. These execution plans describe the order in which tables are scanned and which indexes, if any, are used to access those tables. The execution plans in ./debugoutput/statement-winner-plans are included in the application catalog in the folder /plans. And once the database is started, you can also access the execution plans using the @Explain and @ExplainProc system procedures. So the execution plans are available to anyone with a copy of the resulting catalog.

Let's look at the Hello World tutorial as an example. The Hello World example is very simple; it has two stored procedures with one SQL statement each. When VoltDB compiles the catalog, it creates one file in the statement-winner-plans folder for each statement. The files are named according to the stored procedure name and SQL statement name. So, for Hello World, there are two files:

  • Insert-sql.txt

  • Select-sql.txt

Note that in both stored procedures, the SQLStmt instance is named sql. If the SQLStmt uses a different name, the plan file reflects that difference. (For example, in the Voter application, the SQL statement in the Results stored procedure is named resultStmt. Therefore, the plan file is created as Results-resultStmt.txt.)