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
.)