clair/database/pgsql
Quentin Machu eeb13a02ba pgsql/migrations: add index on Vulnerability_Notification.deleted_at
`searchNotificationAvailable` never effectively use any indexes because:
- `notified_at < $1`, where $1 is a recent timestamp, returns the
  majority of the table and therefore it is cheaper for PostgreSQL
  to use a sequential scan on the table.
- there is no index for `deleted_at IS NULL`.
However, when Clair has been running for long enough, the grand majority
of rows (99%+) are expected to have a non-NULL `deleted_at` field. This
commit adds a new index on this very field in order to fetch the
remaining 1% in the blink of an eye.

In other words, instead of realizing a full table scan for each
`searchNotificationAvailable` query, we'll use the small branch of a new
index, reducing the total cost from over 30k to a mere 150 on a Clair
database that has already managed more than 1 000 000 notifications.
2016-12-06 14:39:52 +01:00
..
migrations pgsql/migrations: add index on Vulnerability_Notification.deleted_at 2016-12-06 14:39:52 +01:00
testdata *: add missing copyright headers 2016-02-24 16:34:54 -05:00
complex_test.go database: Allow specifying datastore driver by config 2016-05-11 15:29:13 -07:00
feature_test.go database: Allow specifying datastore driver by config 2016-05-11 15:29:13 -07:00
feature.go pgsql: Use booleans instead of varchar to return creation status 2016-11-12 15:42:59 +01:00
keyvalue_test.go database: Allow specifying datastore driver by config 2016-05-11 15:29:13 -07:00
keyvalue.go database: use constants to store queries 2016-02-24 16:40:40 -05:00
layer_test.go worker/database: Move upgrade detection logic out of database to worker 2016-05-20 12:01:30 -05:00
layer.go worker/database: Move upgrade detection logic out of database to worker 2016-05-20 12:01:30 -05:00
lock_test.go database: Allow specifying datastore driver by config 2016-05-11 15:29:13 -07:00
lock.go database: use constants to store queries 2016-02-24 16:40:40 -05:00
namespace_test.go database: Allow specifying datastore driver by config 2016-05-11 15:29:13 -07:00
namespace.go database: use constants to store queries 2016-02-24 16:40:40 -05:00
notification_test.go database: Add some missing copyright headers 2016-05-20 12:01:31 -05:00
notification.go database: Add some missing copyright headers 2016-05-20 12:01:31 -05:00
pgsql_test.go *: use path/filepath instead of path 2016-05-20 12:01:31 -05:00
pgsql.go pgsql: Replace liamstask/goose by remind101/migrate 2016-11-11 18:11:48 +01:00
queries.go pgsql: Reduce cost of GetNotification by 2.5 2016-12-04 13:21:47 +01:00
vulnerability_test.go pgsql: Do not insert entry in Vulnerability_FixedIn_Feature if existing 2016-11-11 19:17:32 +01:00
vulnerability.go pgsql: Use booleans instead of varchar to return creation status 2016-11-12 15:42:59 +01:00