From f5ff0a371bfa4e101ca920ab483341fc6d0f894e Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Thu, 4 May 2017 15:47:58 +0200 Subject: [PATCH] TT#15652 stime indexes for accounting.*_data tables - required to support acc-cleanup's "backup" and "archive" modes. for "cleanup" mode, they are not needed considering the original plan with cdr delete triggers. - delete triggers for accounting.cdr slow down the cleanup, so we take them out. separate cleanup jobs should be registered. this way, the performance of 3.x cleanup must be axactly restored. - same for events; also there was no index for the events.timestamp column yet Change-Id: Ia117e237533814b5175eb2b1fab8fdc153878f83 (cherry picked from commit a9543c87cc6f4274ea184863a1efef322b43f75e) --- db_scripts/diff/15340.down | 55 ++++++++++++++++++++++++++++++++++++++ db_scripts/diff/15340.up | 17 ++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 db_scripts/diff/15340.down create mode 100644 db_scripts/diff/15340.up diff --git a/db_scripts/diff/15340.down b/db_scripts/diff/15340.down new file mode 100644 index 00000000..62823614 --- /dev/null +++ b/db_scripts/diff/15340.down @@ -0,0 +1,55 @@ +use accounting; + +DROP INDEX cashbalancedata_stime ON cdr_cash_balance_data; +DROP INDEX timebalancedata_stime ON cdr_time_balance_data; +DROP INDEX cdrrelationdata_stime ON cdr_relation_data; +DROP INDEX cdrtagdata_stime ON cdr_tag_data; + +DROP INDEX event_ts ON events; +DROP INDEX eventrelationdata_ts ON events_relation_data; +DROP INDEX eventrelationdata_ts ON events_tag_data; + +DELIMITER ;; +CREATE TRIGGER cdr_cascade_update_trig AFTER UPDATE ON cdr + FOR EACH ROW BEGIN + + UPDATE cdr_relation_data SET cdr_id = NEW.id WHERE cdr_id = OLD.id; + UPDATE cdr_cash_balance_data SET cdr_id = NEW.id WHERE cdr_id = OLD.id; + UPDATE cdr_time_balance_data SET cdr_id = NEW.id WHERE cdr_id = OLD.id; + UPDATE cdr_tag_data SET cdr_id = NEW.id WHERE cdr_id = OLD.id; + + END;; +DELIMITER ; + +DELIMITER ;; +CREATE TRIGGER cdr_cascade_delete_trig AFTER DELETE ON cdr + FOR EACH ROW BEGIN + + DELETE FROM cdr_relation_data WHERE cdr_id = OLD.id; + DELETE FROM cdr_cash_balance_data WHERE cdr_id = OLD.id; + DELETE FROM cdr_time_balance_data WHERE cdr_id = OLD.id; + DELETE FROM cdr_tag_data WHERE cdr_id = OLD.id; + + END;; +DELIMITER ; + +DELIMITER ;; +CREATE TRIGGER events_cascade_update_trig AFTER UPDATE ON events + FOR EACH ROW BEGIN + + UPDATE events_relation_data SET event_id = NEW.id WHERE event_id = OLD.id; + UPDATE events_tag_data SET event_id = NEW.id WHERE event_id = OLD.id; + + END;; +DELIMITER ; + +DELIMITER ;; +CREATE TRIGGER events_cascade_delete_trig AFTER DELETE ON events + FOR EACH ROW BEGIN + + DELETE FROM events_relation_data WHERE event_id = OLD.id; + DELETE FROM events_tag_data WHERE event_id = OLD.id; + + END;; +DELIMITER ; + diff --git a/db_scripts/diff/15340.up b/db_scripts/diff/15340.up new file mode 100644 index 00000000..b3b2691c --- /dev/null +++ b/db_scripts/diff/15340.up @@ -0,0 +1,17 @@ +use accounting; + +CREATE INDEX cashbalancedata_stime ON cdr_cash_balance_data (cdr_start_time); +CREATE INDEX timebalancedata_stime ON cdr_time_balance_data (cdr_start_time); +CREATE INDEX cdrrelationdata_stime ON cdr_relation_data (cdr_start_time); +CREATE INDEX cdrtagdata_stime ON cdr_tag_data (cdr_start_time); + +CREATE INDEX event_ts ON events (timestamp); +CREATE INDEX eventrelationdata_ts ON events_relation_data (event_timestamp); +CREATE INDEX eventrelationdata_ts ON events_tag_data (event_timestamp); + +DROP TRIGGER IF EXISTS cdr_cascade_update_trig; +DROP TRIGGER IF EXISTS cdr_cascade_delete_trig; + +DROP TRIGGER IF EXISTS events_cascade_update_trig; +DROP TRIGGER IF EXISTS events_cascade_delete_trig; +