我有一张非常庞大的桌子"table1"
,我一整天都在不停地查询(24x7)
在一天结束时发生的事情是在12.AM,我运行一个alter "table1" at row level
的查询。此活动大约需要3-4个小时,直到我更新的"table1"
完成创建。
但直到那时我还想从"table1"
查询。
所以我决定创建两个表。 "table1_active" and "table1_passive"
通常在白天我将从"table1_passive"
进行查询,在我更新“table1_active”后,我应该从"table1_passive"
切换查询
到"table1_active"
这种转换应该每天进行,这样我一整天的查询都不应该妨碍。
我不知道有没有更好的方法来实际设置触发器,或者有人可以建议我这样做的方法吗?
答案 0 :(得分:0)
根据我的经验,使用像table1_passive
这样的辅助表是有风险的。在更新过程完成时,您完全不知道(据我所知),因此您不知道何时应该在table1_passive
和table1_active
之间切换查询。
有几种方法可以改善您桌面的更新过程,但必须记住,如果table1
不断增长,那些临时解决方案:
如果要根据where子句更新table1
,可以使用indexes帮助数据库引擎查找哪些记录必须更新。
请考虑使用partitions更快地处理您的表格。
如果你有两张桌子,你可以:
table1_active
上创建Unique_Index并设置ON DUPLICATE KEY UPDATE table1_passive
。table1_active
中使用bulk insert来加快进程,数据库将根据您的条件确保没有重复的行。但是,如果你整天都在查询,并且桌子不断增长,我建议使用NoSql,因为问题就在那里,即使你现在优化了更新过程。
如果我们知道你正在使用的表结构和更新查询,我们可以帮助你更好;)
问候并祝你好运!