See what locks your Postgres migrations will acquire—before you run them in production.
To be used in CI and development environments; see pglockanalyze-action for integration with GitHub Actions.
This software is in alpha stage - expect breaking changes between releases and a lot of rough edges.
Understanding the locks your migrations will acquire is crucial to avoiding downtime in production traffic. Tools like the official Postgres docs and strong_migrations are invaluable; however, reasoning your way through complex DDL statements is not always practical.
pglockanalyze is meant to complement, not replace such tools, by executing your migrations against a test database (that you have to provision) and dynamically identifying the locks acquired at runtime. It then prints a report of the locks that were acquired.
By default, pglockanalyze rolls back the transactions it analyzes, so you can safely run it against a test database without worrying about leaving it in and inconsistent state. If you want to commit the transactions, you can use the --commit option.
You can install pglockanalyze using cargo:
We do not distribute binaries yet, but we may do so in the future.
Use --help to see all options:
pglockanalyze is licensed under the Apache 2.0 license.