master (5.1) 是否有可能 innodb_file_per_table = 0 而 slave (5.1 或 5.5) 是否有可能 innodb_file_per_table = 1 ?
主页
/
user-31176
sivann's questions
sivann
Asked:
2015-06-20 05:06:01 +0800 CST
我有以下查询。
WITH d_rows AS (DELETE FROM t_a RETURNING * ) INSERT INTO t_b SELECT * FROM d_rows;
如果我取消这个查询(psql 中的 Ctrl+c)会发生什么?删除会运行吗?它已经运行了吗?是分批运行吗?我看到 t_b 在查询运行时正在增长。了解这一点很重要,因为这是关于大量数据的。
我有一个触发器函数,它只将插入的值复制到另一个表中。然后,每天晚上我都需要为某些导出操作删除并重新创建此触发器。
--trigger function
CREATE OR REPLACE FUNCTION mev_copy() RETURNS trigger AS $mev_copy$
BEGIN INSERT INTO measurement_events_copy SELECT NEW.*;
RETURN NEW;
END;
问题是有时触发器无法启动:CREATE TRRIGGER 命令永远不会返回,数据库似乎已锁定并将所有查询置于“PARSE 等待”状态。昨天这样持续了 6 个小时,直到我杀死了创建触发器。
当自动清理表 measurement_events 时,问题始终如一地出现。同时这个表有一个新的待处理的 AccessExclusiveLock 请求。
这是创建触发器,没什么特别的:
--CREATE TRIGGER that hangs sometimes
CREATE TRIGGER mev_copy AFTER INSERT ON measurement_events FOR EACH ROW EXECUTE PROCEDURE mev_copy();
Postgres 版本是 8.4。有什么见解吗?