From fbfed82efddee9732909036f358bc48c272136e4 Mon Sep 17 00:00:00 2001 From: epriestley Date: Thu, 26 Oct 2017 13:05:31 -0700 Subject: [PATCH] Add a missing DaemonLogEvent key for garbage collection Summary: See PHI176. This is issued periodically by the garbage collector. Normally this table is relatively small-ish so this missing key isn't hugely noticeable. Test Plan: Ran `./bin/garbage collect --collector daemon.processes --trace` to get the query the GC runs. Ran ##DELETE FROM `daemon_logevent` WHERE epoch < 1508443504 LIMIT 100## before and after the key, saw a much better query plan afterward: Before: ``` mysql> explain DELETE FROM `daemon_logevent` WHERE epoch < 1508443504 LIMIT 100; +----+-------------+-----------------+------+---------------+------+---------+------+-------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------------+------+---------------+------+---------+------+-------+-------------+ | 1 | SIMPLE | daemon_logevent | ALL | NULL | NULL | NULL | NULL | 19325 | Using where | +----+-------------+-----------------+------+---------------+------+---------+------+-------+-------------+ 1 row in set (0.00 sec) ``` After: ``` mysql> explain DELETE FROM `daemon_logevent` WHERE epoch < 1508443504 LIMIT 100; +----+-------------+-----------------+-------+---------------+-----------+---------+-------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------------+-------+---------------+-----------+---------+-------+------+-------------+ | 1 | SIMPLE | daemon_logevent | range | key_epoch | key_epoch | 4 | const | 1 | Using where | +----+-------------+-----------------+-------+---------------+-----------+---------+-------+------+-------------+ 1 row in set (0.00 sec) ``` Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D18733 --- src/applications/daemon/storage/PhabricatorDaemonLogEvent.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/applications/daemon/storage/PhabricatorDaemonLogEvent.php b/src/applications/daemon/storage/PhabricatorDaemonLogEvent.php index afdbd1f621..c5d2cbd1d4 100644 --- a/src/applications/daemon/storage/PhabricatorDaemonLogEvent.php +++ b/src/applications/daemon/storage/PhabricatorDaemonLogEvent.php @@ -18,6 +18,9 @@ final class PhabricatorDaemonLogEvent extends PhabricatorDaemonDAO { 'logID' => array( 'columns' => array('logID', 'epoch'), ), + 'key_epoch' => array( + 'columns' => array('epoch'), + ), ), ) + parent::getConfiguration(); }