【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就是视图,但是由于数据表结构的原因,而且涉及到几个表的全表搜索,速度慢的出奇。所以临时建立一个新表,暂时取代原视图
大约一年之前 回复

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

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

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

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

相似问题

2
springboot2.0.5在已经有一个sqlserver数据源的情况的添加一个mysql数据库
3
mysql 单表数据行10亿
6
mysql 怎样在大表(300万行)中快速查询小表(1万行左右)对应的数据?
3
如何用SQL语句查询MySQL数据库中的表的索引信息。
1
使用SSM框架 将mysql数据库中建立的表的数据插入到postgresql数据库中的同名表内。求一个demo
1
Navicat premium12版本和Navicat MySQL11版本对MySQL进行转储的SQL数据及结构有什么不同?
6
mybatis中多表查询某张表的数据值为null,mysql中查询该表数据有,为啥?
1
mysql中用EVENT事件定时改变表名,怎样避免在改表名的时候表被selcet,insert等操作锁表
2
【求助】MySQL8.0根据银行流水日记账统计日报表的数据库设计方案。
2
mysql更新数据的同时查询记录
3
如果用的是mysql数据库,单表数据量大概到多少条记录量的时候,才需要考虑分库分表?
1
mysql数据库中一个字段的数据 受另外另外一个表字段的影响 用触发器应该怎么实现呢??
3
mysql单表千万数据如何优化
2
mysql 根据地域统计数据
1
Mysql中A表中的字段根据B表中A表ID的成绩的平均值来变化,可以实现吗?
1
大佬求解答!mysql表分片后如何导出该表?
2
mysql中select到blob数据输出爆炸
1
mysql数据库的binlog日志是否可以设置成只记录特定表的操作?
2
mysql重装之后怎样恢复之前的数据
3
mysql 如何删除重复数据