pg-index-health is a Java library for analyzing and maintaining indexes health in PostgreSQL databases.
Java 8 and above
pg-index-health allows you to detect the following problems:
- Invalid (broken) indexes (sql).
- Duplicated (completely identical) indexes (sql).
- Intersected (partially identical) indexes (sql).
- Unused indexes (sql).
- Foreign keys without associated indexes (sql).
- Indexes with null values (sql).
- Tables with missing indexes (sql).
- Tables without primary key (sql).
- Indexes bloat (sql).
- Tables bloat (sql).
For raw sql queries see pg-index-health-sql project.
pg_index_health utilizes the PostgreSQL's statistics collector.
You can call pg_stat_reset()
on each host to reset all statistics counters for the current database to zero
but the best way to do it is to use IndexesHealth::resetStatistics() method.
Using Gradle:
implementation 'io.github.mfvanek:pg-index-health:0.4.0'
Using Maven:
<dependency>
<groupId>io.github.mfvanek</groupId>
<artifactId>pg-index-health</artifactId>
<version>0.4.0</version>
</dependency>
There are three main scenarios of using pg-index-health in your projects:
- unit\functional testing;
- collecting indexes health data and monitoring bloat;
- analysis of database configuration.
All these cases are covered with examples in the pg-index-health-demo project.
There is a Spring Boot starter pg-index-health-test-starter for unit/integration testing as well.
- If you have any question or a problem with the library, please file an issue.
- Contributions are always welcome! Please see contributing guide for more details.
- We utilize Testcontainers for testing pg-index-health. So you need to have Docker installed on your machine.
pg_analyse - a set of tools to gather useful information from PostgreSQL, written in Python, with command line interface.
Supported by JetBrains with Licenses for Open Source Development