About Server Configuration Parameters

There are many HAWQ server configuration parameters that affect the behavior of the HAWQ system. Many of these configuration parameters have the same names, settings, and behaviors as in a regular PostgreSQL database system.

Parameter Types and Values

All parameter names are case-insensitive. Every parameter takes a value of one of four types: Boolean, integer, floating point, or string. Boolean values may be written as ON, OFF, TRUE, FALSE, YES, NO, 1, 0 (all case-insensitive).

Some settings specify a memory size or time value. Each of these has an implicit unit, which is either kilobytes, blocks (typically eight kilobytes), milliseconds, seconds, or minutes. Valid memory size units are kB (kilobytes), MB (megabytes), and GB (gigabytes). Valid time units are ms (milliseconds), s (seconds), min (minutes), h (hours), and d (days). Note that the multiplier for memory units is 1024, not 1000. A valid time expression contains a number and a unit. When specifying a memory or time unit using the SET command, enclose the value in quotes. For example:

SET default_statement_mem TO '200MB';

Note: There is no space between the value and the unit names.

Setting Parameters

Many of the configuration parameters have limitations on who can change them and where or when they can be set. For example, to change certain parameters, you must be a HAWQ superuser. Other parameters require a restart of the system for the changes to take effect. A parameter that is classified as session can be set at the system level (in the hawq-site.xml file), at the database-level (using ALTER DATABASE), at the role-level (using ALTER ROLE), or at the session-level (using SET). System parameters can only be set by using the hawq config utility or by directly modifying a hawq-site.xml file.

By design, all HAWQ instances (including master and segments) host identical hawq-site.xml files. Using a common hawq-site.xml file across all HAWQ instances simplifies configuration of the cluster. Within each hawq-site.xml configuration file, some parameters are considered segment parameters, meaning that each segment instance looks to its own hawq-site.xml file to get the value of that parameter. By convention, these parameter names begin with the string hawq_segment. Others parameters are considered master parameters. By convention, these parameter names begin with the string hawq_master. Master parameters are only applied at the master instance and ignored by segments.

Note: If you use the hawq config utility to set configuration parameter values in hawq-site.xml, the utility synchronizes all configuration files. Any manual modifications that you made to individual hawq-site.xml files may be lost.

This table describes the values in the Set Classifications column of the table in the description of a server configuration parameter.

Table 1. Set Classifications
Set Classification Description
master or local A master parameter must be set in the hawq-site.xml file of the HAWQ master instance. The value for this parameter is then either passed to (or ignored by) the segments at run time.

A local parameter is also defined in the hawq-site.xml file of the master AND every segment instance. Each HAWQ instance looks to its own configuration to get the value for the parameter.

We recommend that you use the same configuration parameter values across all HAWQ instances to maintain a single, consistent hawq-site.xml configuration file. The hawq config utility will enforce this consistency.

Changes to master or local parameters always require a system restart for changes to take effect.

session or system Session parameters can be changed on the fly within a database session, and can have a hierarchy of settings: at the system level (through hawq-site.xmlor hawq config utility), at the database level (ALTER DATABASE...SET), at the role level (ALTER ROLE...SET), or at the session level (SET). If the parameter is set at multiple levels, then the most granular setting takes precedence (for example, session overrides role, role overrides database, and database overrides system).

A system parameter can only be changed via hawq config utility or the hawq-site.xml file(s).

restart or reload When changing parameter values in the hawq-site.xml file(s), some require a restart of HAWQ for the change to take effect. Other parameter values can be refreshed by just reloading the configuration file (using hawq stop object -u), and do not require stopping the system.
superuser These session parameters can only be set by a database superuser. Regular database users cannot set this parameter.
read only These parameters are not settable by database users or superusers. The current value of the parameter can be shown but not altered.