【PHP+MySQL】怎样解决MySQL中统计表与数据源表的数据同步问题?

情况说明:
1.目前有三个表:A、B、C;
2.A表、B表为业务表,数据变更情况频繁;
3.C表存放的是从A表和B表中匹配搜索出的结果;
4.为什么不直接从A、B表提取数据呢?因为A、B表存在某些结构上的问题,同时A与B表的数据还需和A1表、B1表匹配提取,这样速度过慢;但是有因为暂时无法调整A、B表的结构,因此需要一个临时解决方案来处理这个需求。

            问题说明:
            1.如何解决:当 A表 或 B表中的数据发生变更(更改、删除,不包括新增)时,如何把这个变更后的数据同步到C表中?
            2.我该如何监控A、B表的情况,同时不会过多的占用、消耗服务器资源?

            我的解决方案(被否定):
            1.我在A表和B表中添加了MySQL触发器,当表的数据发生更改或者删除时,就把相应的结果同步到C表。但是这样做的话,会因为触发器的存在造成服务器的负担(A表和B表的数据变更频繁,且每日数据量不小),因此被我的同事給否定了。
            2.之前也想过:直接将写好的SQL语句交给同事,每天晚上清除C表数据,重新导入新的搜索结果。但是这种做法太过笨拙,灵活性小,被我自己否定了。


            现在,我来求教各位,我该如何解决这个问题呢?有相应的解决方案的链接或者想法吗?

3个回答

为什么不将C表做成视图?

建议多建几个索引,然后再建视图,这个是最理想的做法。

u013967145
被遗忘的曙光 以前C就是视图,但是由于数据表结构的原因,而且涉及到几个表的全表搜索,速度慢的出奇。所以临时建立一个新表,暂时取代原视图
11 个月之前 回复

想要不占用资源过多,那就不能更新太频繁,不然感觉就是一个死循环,能不能在代码或者脚本里面调用定时器,一小时更新一次这样子的方式呢

u013967145
被遗忘的曙光 试过,客户不同意 客户想要实时查询,也是醉了。 本来打算的就是每天定时统计前一天的数据插入一个表,客户不同意
11 个月之前 回复

不建议用视图触发器等方式,你也说了C以前就是视图,使用视图和触发器会给数据库表的迁移等工作带来麻烦。比较建议写一个定时脚本,每隔一段时间(三分钟都是没问题的)执行一次去更新C表中的数据,效率是很高的。如果你要保证非常高的实时性,建议可以在底层对更新操作作联合触发,每执行一次更新操作就异步执行一次C表的更新操作,全表更新还是部分行更新这要看你的业务场景。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!