forked from open-mpi/mtt
-
Notifications
You must be signed in to change notification settings - Fork 0
Database
Jeff Squyres edited this page Sep 3, 2014
·
1 revision
This page describes how to setup the MTT PostgreSQL database. PostgreSQL was chosen for a variety of reasons including performance, and advanced features such as partition tables and advanced optimizer techniques.
The MTT database schema can stress a PostgreSQL installation as a result there are a few configuration options that need to be tweaked in order for PostgreSQL to perform well in the common case.
- Turn on remote access if your webserver is not the same machine as the database machine. Do this by editing the webserver information to
data/pg_hba.conf
and adjusting thelisten_address
option in thedata/postgresql.conf
file. See PostgreSQL documentation on how to properly set these values. - For
VACUUM
we need to increment the Free Space Map parameters to something like the following:
max_fsm_pages = 153600
max_fsm_relations = 2000
- Outside of these options, the defaults should be fine for most users.
Some additional, per connection, options that are handy to know:
-
constraint_exclusion
: This will allow the optimizer to use the check constraints on a table to include or exclude it from the search list. This is handy when searching partition tables bystart_timestamp
since the check constraint on each partition table represents a slice of time that does not overlap with any other table. So this option will speedup searches on narrow time ranges.
mtt=> set constraint_exclusion = on;
-
sort_mem
: This is the amount of memory that PostgreSQL allows a connection for sorting results. Since MTT relies on many levels of aggregation increasing this value can drastically improve performance. Experimentally we have found 256 MB to be a good number.
mtt=> set sort_mem = '256MB';
- MTT requires PostgreSQL 8.2 or later. We test with 8.2.4
- Create a database user named mtt. Consult PostgreSQL documentation for instructions.
- Create a database named mtt. Consult PostgreSQL documentation for instructions.
- Find the sql scripts in
$MTT_TRUNK/server/sql/
. - Load in the base tables
schemas-v3.sql
:
shell$ psql -d mtt
Welcome to psql 8.2.4, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
mtt=> \i schemas-v3.sql
- Load stats
schemas-stats.sql
and reporterschemas-reporter
:
mtt=> \i schemas-stats.sql
mtt=> \i schemas-reporter.sql
- Load the indexes
schemas-indexes.sql
:
mtt=> \i schemas-indexes.sql
- Create the partition tables for
mpi_install
: - In the directory
$MTT_TRUNK/server/sql/support
there exists a script calledcreate-partitions-mpi-install.pl
. This script takes two (2) arguments:YYYY MM
. WhereYYYY
is the fully qualified year, andMM
is the month (01 - 12) orXX
for all 12 months. Specifying a single month will only generate the partition tables for that month. - Use this script to generate the
mpi_install
partition tables. The following generates partition tables for 11/2006, 12/2006, and all months in 2007:
$ cd $MTT_TRUNK/server/sql/support
$ ./create-partitions-mpi-install.pl 2006 11 > mpi-install-part.sql
$ ./create-partitions-mpi-install.pl 2006 12 >> mpi-install-part.sql
$ ./create-partitions-mpi-install.pl 2007 XX >> mpi-install-part.sql
- Load the partition tables into your database:
mtt=> \i mpi-install-part.sql
- Create the partition tables for
test_build
by following the same instructions as withmpi_install
, but using thecreate-partitions-test-build.pl
script. - Create the partition tables for
test_run
by following the same instructions as withmpi_install
, but using thecreate-partitions-test-run.pl
script. - Now you should have the schemas in place for storing the MTT database.
Some documentation on the MTT database schema design is located in the MTT docs directory.