考虑一个被不断访问(读、写、更新、删除等)的数据库,例如某些特定航空公司的数据库。
我可以理解同时写入/更新会导致很多问题,因为写入可能需要锁定。此外,如果排队的写入太多,可能会导致缓冲区溢出等。因此需要复制(克隆或提供数据库的多个访问点)。
那么多次读取呢?多个同时的读取请求(请求从 DB 获取一些数据)除了减慢对 DB 的访问速度外,还会导致任何问题吗?如果我的数据库很少更新,但经常访问以读取数据,那么复制它是否有意义?
答案1
许多大型数据库的大部分活动包括读取复制,然后对读取数据库进行负载平衡。
有几个问题,但如果设置正确,它确实能很好地工作。(其中一个问题是读取时也会更新字段)。
另一个问题是一致性——如果一些写入跨越多个表,在并非所有内容都写入的短暂时间内,从其中一个复制的数据库进行读取时可能会得到不良结果和错误——特别是如果复制完成,不同的表被镜像到不同的机器上,或者出现大量活动。