您可以使用复制作为一个扩展的解决方案;也就是说,你想分手的地方数据库查询跨多个数据库服务器的负载,在一些合理的限制。
因为复制的作品从一个源的分布到一个或多个副本,使用复制扩展效果最好的环境中,你有大量的读和低数量的写/更新。大多数网站属于这一范畴,用户浏览网站,阅读文章,文章,或查看产品。更新只发生在会话管理,或者当购买或添加一个评论/消息到一个论坛。
复制在这种情况下使您能够分发副本读取,同时使您的web服务器与源通信时需要写。你可以看到一个示例复制这个场景的布局图17.1,“扩展”期间使用复制来提高性能。
如果您的代码的一部分,负责数据库访问适当的抽象/模块化,将它转换为运行一个复制设置应该非常顺利和容易。改变你的数据库访问的实现将所有源写道,并发送读取源或复制品。如果您的代码没有这种级别的抽象,建立一个复制系统给了你机会和动力清理。首先创建一个包装器库或模块实现以下功能:
safe_writer_connect ()
safe_reader_connect ()
safe_reader_statement ()
safe_writer_statement ()
safe_
在每个函数的名字意味着函数负责处理所有错误条件。您可以使用不同的函数的名称。最重要的是要有一个统一的接口连接读取,连接写道,做一个读和写。
然后把你的客户端代码使用包装器库。这可能是一个痛苦和可怕的过程,但它长期回报。使用上面描述的方法的应用程序都能够利用源/副本配置,甚至是一个涉及多个副本。代码更容易维护,增加故障排除选项是微不足道的。你只需要修改一个或两个函数(例如,记录每个语句了多久,那些或声明给了你一个错误)。
如果你有写大量的代码,您可能想要自动转换任务通过编写一个转换脚本。理想情况下,你的代码使用一致的编程风格惯例。如果不是,那么你可能最好重写它,或者至少经历和手动起居使用一致的风格。