我们拥有一个巨大的表,两千多万条记录。也许在行家眼里,两千多万条记录顶多算条毛,不过这条毛也忒粗壮了一点:我们的数据库占用的空间已经达到5G多了。不要以为是日志文件在搞鬼,日志文件可以自动收缩的,最多不超过100M。
这样子就给我们备份、同步带来很大的麻烦。备份、压缩、下载,谁见谁害怕。
昨天想了个办法,将这个巨无霸分出去了。分到了另一个数据库上。虽说有这么多记录,不过这些记录并不是太重要,如果放在一个分布式的系统里面看,它没有同步的必要。
思想如下:
1、将大表转移到另一个数据库上
2、原有数据库建立一个视图,相同结构,相同名字
由于该视图是单表视图,结构跟表又一致,名字也跟表名一样,那么操作这个视图,无论是查询、插入、更新或删除,都跟直接操作这个表没什么区别。这样代码也无须做任何的修改。平滑过渡。
该表上建立的索引,视图也一样的使用。
以前我见过有人为了避免某个表过大,采用的方法是建立12个结构一样的表,每个月用一个。当时就想,这种做法好是好,但代码岂不是烦死了。现在想起来,查询的时候,可以使用视图将12个表用 UNION ALL 结合起来,当一个表用。
视图在分布式数据库中使用应该很方便。
来源:http://blog.youkuaiyun.com/leftfist/archive/2007/05/10/1603397.aspx
面对一个包含两千多万条记录、占用5G空间的巨表,通过将其转移至另一数据库并创建同名视图,实现了代码无修改的平滑过渡。此方案避免了直接操作大表带来的备份、同步难题,同时保留了索引效率。

被折叠的 条评论
为什么被折叠?



