关于基础信息表,字典表,程序每次打开都要查询数据库吗?能不能经行差异更新,将这些信息保存在本地,程序每次加载的时候,将本地信息与差异表经行比较,将有差异的部分经行更新,这样效率是不是更高呢?
特别是一些数据量比较大的基础表
你的程序,数据量有多少大?GB级别还是TB级别?服务器标配是什么?并发量有多少?如果以上几点都没达到一定级别,可以不用起考虑你说的这种方式的调整优化,要知道,你按照这思路优化调整后的实现方式,复杂度会增加很多,亦就导致了可维护性的下降。在绝大多数情况下,程序的可维护性比性能要重要得多。
另,针对你的具体问题,目前任何的dbms都没有能达到你真实目的、同时又能提高性能的方案;因为你既然要整表的所有数据都做比较,要么比较每个 raw-row 的实际数据、要么比较每 row 的时间戳。不管哪种方式,你要么在客户端本机比较,就需要将服务器所有数据(完整raw-row数据或所有row的时间戳)download到客户端本机;要么在服务器比较,就需要将客户端所有数据upload到服务器。然后在其中一段循环遍历比较,这种性能的开销,反而是更大的,尤其是数据量稍多的情况下。
实际上,如果你dbms对象结果优化合理的情况下,例如分表、分区表、索引的,或者考虑用nosql数据库,性能一样能得到很大提高。
将本地Data 中最大更新时间取出来,跟数据库的 差异表 的更新时间经行 查询,将这个时间差的 数据 取出来,更新到内存.不知道这样能行不?
@No.net: 实时并发有没有过10^3?单表数据量有没有过10^7?如果都没有的话,基本的数据库结构优化就够了,除非你的程序代码写的特别烂!
楼上说的基本在理。
基础表数据量比较大,多大?几十亿条?
有思考是好的,不过所有的性能分析都要基于量化分析,没有使用度量的数据,一切都是空的。
你可能是听说了数据库性能,资源占用等等方面的问题,就替数据库担心了吧?
没事,目前你需要担心的主要还是代码的质量问题。