Skip to content

Commit

Permalink
mysql: Add/Change columns and triggers to track overall group time va…
Browse files Browse the repository at this point in the history
…lues
  • Loading branch information
mariux committed Jul 30, 2015
1 parent d24d4f1 commit 9d86afb
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions mysql/create_tables
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@

UPDATE mxq_group
SET group_date_end=group_mtime
WHERE group_date_end = 0
AND group_jobs_inq = 0
AND group_jobs_running = 0;

ALTER TABLE mxq_group
ADD COLUMN group_date_end TIMESTAMP NOT NULL DEFAULT 0
AFTER group_mtime;

ALTER TABLE mxq_group
CHANGE COLUMN stats_total_idle_sec stats_idle_sec INT8 UNSIGNED NOT NULL DEFAULT 0,
ADD COLUMN stats_total_wait_sec_finished INT8 UNSIGNED NOT NULL DEFAULT 0
Expand Down Expand Up @@ -92,6 +103,8 @@ CREATE TABLE IF NOT EXISTS mxq_group (

group_mtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

group_date_end TIMESTAMP NOT NULL DEFAULT 0,

stats_max_maxrss INT4 NOT NULL DEFAULT 0,

stats_max_utime_sec INT4 UNSIGNED NOT NULL DEFAULT 0,
Expand Down Expand Up @@ -179,6 +192,39 @@ CREATE TABLE IF NOT EXISTS mxq_job (

LOCK TABLES mxq_job WRITE, mxq_group WRITE;
DELIMITER |
DROP TRIGGER mxq_add_group|
CREATE TRIGGER mxq_add_group BEFORE INSERT ON mxq_group
FOR EACH ROW BEGIN
SET NEW.group_mtime = NOW();

IF (NEW.group_jobs_running = 0 AND NEW.group_jobs_inq = 0) THEN
SET NEW.group_date_end = NEW.group_mtime;
ELSEIF (NEW.group_jobs_running > 0 OR NEW.group_jobs_inq > 0) THEN
SET NEW.group_date_end = 0;
END IF;
END;
|
DROP TRIGGER mxq_update_group|
CREATE TRIGGER mxq_update_group BEFORE UPDATE ON mxq_group
FOR EACH ROW BEGIN
SET NEW.group_mtime = NOW();

IF OLD.group_jobs_inq > 0 AND OLD.group_jobs_running = 0 THEN
SET NEW.stats_wait_sec = OLD.stats_wait_sec + (UNIX_TIMESTAMP(NEW.group_mtime) - UNIX_TIMESTAMP(OLD.group_mtime));
ELSEIF OLD.group_jobs_running > 0 THEN
SET NEW.stats_run_sec = OLD.stats_run_sec + (UNIX_TIMESTAMP(NEW.group_mtime) - UNIX_TIMESTAMP(OLD.group_mtime));
END IF;

IF (NEW.group_jobs_running = 0 AND NEW.group_jobs_inq = 0) AND
(OLD.group_jobs_running > 0 OR OLD.group_jobs_inq > 0) THEN
SET NEW.group_date_end = NEW.group_mtime;
ELSEIF (OLD.group_jobs_running = 0 AND OLD.group_jobs_inq = 0) AND
(NEW.group_jobs_running > 0 OR NEW.group_jobs_inq > 0) THEN
SET NEW.stats_idle_sec = OLD.stats_idle_sec + (UNIX_TIMESTAMP(NEW.group_mtime) - UNIX_TIMESTAMP(OLD.group_date_end));
SET NEW.group_date_end = 0;
END IF;
END;
|
DROP TRIGGER mxq_add_job|
CREATE TRIGGER mxq_add_job AFTER INSERT ON mxq_job
FOR EACH ROW BEGIN
Expand Down

0 comments on commit 9d86afb

Please sign in to comment.