It is essential to keep in mind that optimizing and tuning software such as PostgreSQL is a task that is best handled by a database administrator with the skills, training, and expertise required to do so for you.
Although this kind of task is not related to cPanel or the basic configuration of cPanel, we want to offer some general guidance as a courtesy through this article.
The specifics of PostgreSQL tuning vary widely between servers and applications. For that reason, this guide provides the basic toolset required to perform the process. Further research into the specifics of your use case are required to successfully tune and optimize your database.
Why Tune PostgreSQL
Performance tuning appropriately done can do the following:
- Improve database speed
- Allow the database to process more queries
- Make more efficient use of CPU and RAM resources
When to Tune PostgreSQL
Tune PostgreSQL if the following applies:
- Database queries are taking longer to execute than they did before.
- PostgreSQL is using a large number of system resources
- Other options, such as improving hardware or increasing CPU and RAM resources, are not feasible.
Keep in mind that tuning software is very time intensive and requires an exceptional set of expertise to do effectively. It can be costly to tune software such as PostgreSQL. It is important to consider alternatives such as upgrading hardware and resources as they may end up being cheaper than paying for a professional to tune the database.
The Tuning Cycle
To properly tune software, use the following cycle:
- 1. Setup/Adjust Measurement Instruments
- 2. Generate Data
- 3. Compare
- 4. Research
- 5. Make Changes
Step 1: Setup / Adjust Measurement Instruments
The foundation of tuning and optimization is collecting data.
Without having an accurate record and a solid understanding of current performance, efforts to improve performance will often be in vain.
In order to understand current performance, the PostgreSQL configuration must be updated.
Optionally, additional monitoring software may be installed. There are many different possibilities to consider, but the following are some basics to get started.
- Enable and Learn to use the pg_stat_statements module .
- Enable and learn to use the auto_explain module.
- Enable and learn to use the Statistics Collector.
- Learn to use the EXPLAIN command .
Learn to use system monitoring software such as:
The first iteration of the tuning cycle is when these software would be installed and initially configured.
Additional adjustments to data collection configurations or methods could be made in subsequent iterations of the cycle if the data from the previous iteration was not productive.
Once these data sources are enabled, and the administrator is proficient in utilizing and recording the data, we can proceed to the next step in the tuning cycle.
Step 2: Generate Data
Some data sources produce data automatically, such as the pg_stats_statements module. In those cases, the administrator must reproduce the problematic event or state and allow the data generation.
Some data sources require an action from the administrator, such as the use of the EXPLAIN command. In that situation, the administrator would perform the action to generate the data and then manually record the data for later comparison.
Step 3: Compare
Skip this step on the first iteration of the cycle, or when multiple variables have been changed.
If multiple variables were changed in the previous iteration of the cycle, the data is not directly comparable with previous data, and this should be avoided.
This is the step where you can either make a conclusion about the effectiveness of your previous change or realize that you need a more in-depth understanding to proceed.
Step 4: Research
If the previous comparison provided an unexpected result, begin researching the topic in more depth armed with the newly attained data.
You may consider using some of the following resources for your research:
- PostgreSQL Community
- Database Administrator StackExchange
- Postgres Mailinglist
- #postgresql on freenode.net
Step 5: Make a change
Based on the new information gained from steps 3 and 4, change the configuration or software to improve performance or resource usage, and begin the cycle again from step 1.
It is essential to limit this step to a single change at a time. Changing more than one thing can produce unexpected and confusing results in future iterations of the tuning cycle.
The exact steps required to tune your PostgreSQL server are so widely varied based on your specific situation that this guide does not go over specifics. It may be helpful for you to review some more specific resources now that you have a basic understanding of performance tuning:
PostgreSQL Performance and Optimization Wiki
Top Ten Performance Modifications