pg-index-health
pg-index-health copied to clipboard
pg-index-health is a Java library for analyzing and maintaining indexes and tables health in Postgresql databases.
pg-index-health is a Java library for analyzing and maintaining indexes health in PostgreSQL databases.
Supported PostgreSQL versions
Supported Java versions
Java 8 and above
Available checks
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).
- Tables without description (sql).
- Columns without description (sql).
- Columns with json type (sql).
- Columns of serial types that are not primary keys (sql).
For raw sql queries see pg-index-health-sql project.
How does it work?
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 DatabaseManagement::resetStatistics() method.
Installation
Using Gradle:
implementation 'io.github.mfvanek:pg-index-health:0.6.1'
Using Maven:
<dependency>
<groupId>io.github.mfvanek</groupId>
<artifactId>pg-index-health</artifactId>
<version>0.6.1</version>
</dependency>
How to use
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.
Integration with Spring Boot
There is a Spring Boot starter pg-index-health-test-starter
for unit/integration testing as well.
More examples you can find in pg-index-health-spring-boot-demo project.
Questions, issues, feature requests and contributions
- 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.
Related projects
pg_analyse - a set of tools to gather useful information from PostgreSQL, written in Python, with command line interface.
Acknowledgements
Supported by JetBrains with Licenses for Open Source Development