Index Digest Versions Save

Analyses your database queries and schema and suggests indices and schema improvements

v1.6.0

8 months ago

What's Changed

Full Changelog: https://github.com/macbre/index-digest/compare/v1.5.1...v1.6.0

v1.5.1

1 year ago

The Dockerfile is now Alpine-based resulting in a smaller container image. And the image is now running the latest Python 3.10.

What's Changed

New Contributors

Full Changelog: https://github.com/macbre/index-digest/compare/v1.5.0...v1.5.1

v1.5.0

3 years ago

This release brings one bug fix (#210) and introduces GitHub's action allowing you to use index-digest to check for database performance regressions as part of your CI pipeline.

Changelog

  • #210 bug - queries_not_using_index - ignore reports with "No matching min/max row" / "Select tables optimized away"
  • #198 dependencies - Bump twine from 3.2.0 to 3.3.0 (by @dependabot[bot])
  • #199 internals - Use Docker layers cache to speed up CI builds
  • #201 docker - Try to use Docker's BuildKit
  • #202 dependencies - Update databases used in integration tests
  • #208 pr - CI | With Docker Build there's not need to pull an image first
  • #209 pr - docker build - use --cache-from
  • #212 internals - CI | run database on a custom port

v1.4.0

3 years ago
  • #176 dependencies - Bump coverage from 5.2 to 5.2.1 (by @dependabot[bot])
  • #177 dependencies - Bump pytest from 5.4.3 to 6.0.0 (by @dependabot[bot])
  • #178 dependencies - Bump pytest from 6.0.0 to 6.0.1 (by @dependabot[bot])
  • #179 docker - Dockerfile: use python:3.8-slim-buster
  • #180 dependencies - Bump sql_metadata from 1.7.1 to 1.8.0
  • #182 pr - Delete wait_for_mysql.sh
  • #183 dependencies - Bump coverage from 5.2.1 to 5.3 (by @dependabot[bot])
  • #184 dependencies - Bump pytest from 6.0.1 to 6.0.2 (by @dependabot[bot])
  • #186 dependencies - Bump pytest from 6.0.2 to 6.1.1 (by @dependabot[bot])
  • #187 dependencies - Bump sql-metadata from 1.8.0 to 1.9.1 (by @dependabot[bot])
  • #188 pr - Use Python 3.9
  • #189 dependencies - Bump pytest from 6.1.1 to 6.1.2 (by @dependabot[bot])
  • #190 internals - CI: cache pip dependencies
  • #191 dependencies - Bump mysqlclient from 2.0.1 to 2.0.2 (by @dependabot[bot])
  • #193 dependencies - Bump pytest from 6.1.2 to 6.2.1 (by @dependabot[bot])
  • #194 dependencies - Bump coverage from 5.3 to 5.3.1 (by @dependabot[bot])
  • #195 enhancement - Improve low cardinality indices detection
  • #196 pr - Decrease cardinality to stabilize tests
  • #197 dependencies - Bump sql-metadata from 1.9.1 to 1.10.0 (by @dependabot[bot])

v1.3.0

3 years ago
  • #163 - Allow port to be specified in DSN (thanks to @EricTendian)

Internals

Tests are now executed using GitHub Actions instead of TravisCI.

All dependencies are now up to date . sql_metadata library (that parses SQL for us) is updated as well.

All code changes are now tested against MariaDB 10.5 and the latest Percona Server.

v1.2.1

4 years ago
  • #144 - non_utf_columns | handle blobs and other UTF character sets
  • #145 - non_utf_columns | add table schema in reported context #145
  • #147 - Detect empty databases
  • #149 - queries_not_using_index | handle "No tables used"
  • #157 - Report low cardinality indices
  • #160 - drop support for Python 2.7, MySQL 5.5, 5.6 and MariaDB 10.0

MySQL 5.5 support ended in December 2015 MySQL 5.6 - February 2018 MariaDB 10.0 - March 201

Python 2.7 will be gone by the end of 2019

v1.2.0

6 years ago
  • #36 [linters] - Suggest InnoDB over MyISAM
  • #128 [linters] - data-too-old: check columns with non-timestamp types, but with "time" in their names
  • #129 [bug] - data_too_old - handle incorrect or missing timestamp values
  • #130 [bug] - Ignore views
  • #131 [enhancement] - Treat forum_creation_temp as temporary table
  • #132 [bug] - Handle tables names with dashes
  • #137 [bug] - get_boundary_times | handle tables with dashes
  • #138 [bug] - select_star | queries with comments should be handled as well
  • #140 [bug] - high_offset_selects | insert queries should be skipped by this check

v1.1.0

6 years ago
  • #28 [linters] - Check timestamp columns if they contain old data
  • #54 [command line tool] - Process selected checks when --checks / --skip-checks option is provided
  • #55 [command line tool] - Process only selected tables when --tables / --skip-tables option is provided
  • #94 [linters] - Report primary keys with a generic "id" name
  • #106 [bug] - get_table_schema: cast to str
  • #107 [enhancement] - Do not add partitions in schema returned by the database helper
  • #109 [enhancement] - Improve get_used_tables_from_queries handling of table aliases
  • #112 [bug] - Fix Database error #1146 - Cannot get columns list for table
  • #114 [performance] - get_boundary_times: add @memoize
  • #115 [bug] - check_data_not_updated_recently / check_data_too_old - cast timestamps to str
  • #116 [internals] - cli: extract get_reports() function and improve syslog reporter tests coverage
  • #118 [linters] - Avoid high offsets in queries
  • #119 [internals] - Update dependencies
  • #120 [enhancement] - data_too_old / data_not_updated_recently - report timestamp column name and table size

v1.0.0

6 years ago
  • #73 [linters] - Consider adding checks from sqlcheck
  • #84 [linters] - Consider adding checks from SchemaCrawler
  • #85 [bug] - tests: do not assume the version, silly me...
  • #86 [internals] - Cache table schema
  • #87 [formatters] - syslog: emit appname field
  • #89 [linters] - Report empty tables
  • #90 [internals] - add_linter helper script
  • #92 [linters] - Report select queries with *
  • #93 [linters] - Report queries with HAVING clause
  • #95 [bug] - empty_tables: use EXPLAIN SELECT count(*) to estimate rows count
  • #97 [internals] - get_query_tables: improve SQL queries parsing
  • #98 [enhancement] - Gracefully handle complex queries that can't be parsed
  • #100 [internals] - sql_metadata | use a new Python package extracted from index-digest
  • #101 [internals] - Use sql_metadata==1.0.2
  • #104 [enhancement] - not_used_tables: report rows count, table size and its schema

v0.1.0

6 years ago
  • #1 [TravisCI] - Set up Travis tests
  • #2 [linters] - Report not used indices
  • #3 [undefined] - Generate score for queries based on their indices usage
  • #4 [linters] - Detect redundant indices
  • #5 [linters] - Report indices and data size for each table
  • #6 [linters] - Report not used columns and tables
  • #8 [internals] - Introduce Database class abstracting MySQL access
  • #16 [linters] - redundant_indices - show table schema and table / indices size in the context
  • #19 [linters] - Reports queries that do not use indices
  • #20 [linters] - Report queries that use filesort or temporary file
  • #25 [internals] - Improve SQL parsing
  • #26 [linters] - Report full table scan (by @gbenson-wikia)
  • #27 [linters] - Warn on queries which contain wildcards not at the end of LIKE clauses (by @gbenson-wikia)
  • #30 [TravisCI] - Test on TravisCI using MySQL 5.7
  • #32 [linters] - Report text columns that use non-utf collation
  • #44 [bug] - queries_not_using_index: handle no matching row in const table
  • #48 [bug] - Conflicting indexes shouldn't result in a suggestion to remove both... (by @reedy)
  • #49 [bug] - Unique vs PK... Not necessarily redundant due to unique constraint (by @reedy)
  • #57 [internals] - Cache database meta-data
  • #60 [MySQL 8] - Run Travis tests using MySQL 5.5, 5.6, 5.7 and 8.0
  • #61 [MySQL 8] - Support MySQL 8.0
  • #63 [internals] - Suppress MySQL warnings when EXPLAIN is run
  • #66 [enhancement] - Add support for MariaDB
  • #69 [internals] - Publish to PyPI