I've just committed a function to easily purge old data from LogMiner's database, useful to prevent it from growing too much.
It'll appear in the next version, but since its release might still be far from now, here's the code for those who need it:
CREATE OR REPLACE FUNCTION cleanup( _site int8, _upToDate date )
RETURNS INT AS $body$
BEGIN
DELETE FROM accesses
WHERE req_time < _upToDate
AND site = _site;
ALTER TABLE accesses DROP CONSTRAINT accesses_request_fkey;
ALTER TABLE accesses DROP CONSTRAINT accesses_search_fkey;
ALTER TABLE accesses DROP CONSTRAINT accesses_referrer_fkey;
DELETE FROM requests
WHERE id NOT IN ( SELECT DISTINCT request FROM accesses );
DELETE FROM search_referrals
WHERE id NOT IN ( SELECT DISTINCT search FROM accesses );
DELETE FROM referrers
WHERE id NOT IN ( SELECT DISTINCT referrer FROM accesses );
ALTER TABLE accesses
ADD CONSTRAINT "accesses_request_fkey"
FOREIGN KEY ( request )
REFERENCES requests( id ) ON DELETE CASCADE;
ALTER TABLE accesses
ADD CONSTRAINT "accesses_search_fkey"
FOREIGN KEY ( search )
REFERENCES search_referrals( id ) ON DELETE SET NULL;
ALTER TABLE accesses
ADD CONSTRAINT "accesses_referrer_fkey"
FOREIGN KEY ( referrer )
REFERENCES referrers( id ) ON DELETE SET NULL;
RETURN 0;
END;
$body$ LANGUAGE plpgsql;
For instance, if you want to keep only the last six month of data, you can set up a cron job which runs at the first day of every month executing the command:
# supposing 1 is the id of your site
echo "SELECT * FROM cleanup( 1, CAST( date_trunc( 'month', now() ) - interval '5 months' AS date ));" | psql -U logminer logminer