以前做PHP应用,多数是单数据库数据查询和更新,顶多也是主从数据库的支持,实现起来相对简单。主从数据库的问题在于,当会话存储在数据库的时候,同步 将可能出现问题,也就是说有可能出现会话的中断。所以我想在主从数据库设计上,应该将所有会话相关表进行特殊对待。即:所有的会话数据表都可以更新和查 询,当一个用户访问站点的时候,即将此用户绑定到指定数据库,所有会话访问和查询操作都对此数据库进行。会话表不做同步,其他非会话类更新也从主数据库更 新。这样做其实也逃脱不了会话更新时候的数据库切换,所以如果不想麻烦,还是将会话存放在文本中进行的好。
分数据库设计,将可能从压力性能上会提升几个档次,当然单次执行效率不会比单数据库来的高的,毕竟存在着数据库切换的效率问题。分库以及主从数据库搭 配是可以比较好改善数据库并发瓶颈的方案。原则:大数据量,分库;大访问量,主从。很多时候,都是这两者并行(本文不讨论cache)。
我想,如果要实现分库以及主从关系,那么数据库服务器数量将是非常可观,在应用程序中随时切换到某一台服务器,将是非常头痛的问题,配置更换,变量名称,是不是会有一大堆呢?如何寻找更好的解决方案将是本文谈论的话题。
首先是分库使得数据库颇多的问题。什么情况下分库?或许有些人还搞不明白为什么要分库,我就简要说一下自己的经验猜测。比如一个博客程序,一般设计是 将日志存放在一张日志表中。假设是一个多用户博客,那么将会关联一个uid,如果数据量不大,这样设计是没有问题的,但是当日志量巨大,一天有几十万条日 志记录录入的时候,而且访问量也比较可观的时候,我想不可能每个用户来访问日志列表,都去从这包含几千万条日志记录的数据表中去找那么几条,效率可见一 斑。这个时候就该考虑到分库的问题。如何分?有一个很简单的分表方法,即,根据uid段,将日志记录在各个数据库中,当然,这个分布还是需要根据以往统计 结果做出调整的,因为用户日志分布肯定不是均匀的。设置好uid段,然后根据uid索引到指定数据库配置,创建一个数据库对象即可。配置信息可能如下:
Copy code
$configs['db_info']['blog'][0] = array(
‘db_host’ => ’192.168.0.1′,
‘db_name’ => ‘blog’,
‘db_user’ => ‘root’,
‘db_pass’ => ”,
);
$configs['db_info']['blog'][1] = array(
‘db_host’ => ’192.168.0.2′,
‘db_name’ => ‘blog’,
‘db_user’ => ‘root’,
‘db_pass’ => ”,
);
$configs['db_info']['blog'][2] = array(
‘db_host’ => ’192.168.0.2′,
‘db_name’ => ‘blog’,
‘db_user’ => ‘root’,
‘db_pass’ => ”,
);
//…and so on
分享到:
相关推荐
php分库分表
mysql分库图表 mysql分库图表mysql分库图表mysql分库图表mysql分库图表
基于PHP MySQL的小型语料库程序设计解决方案.pdf
本文讲的是mysql大数据分库和分表 php解决方案。 mysql分库分表方案、mysql 分库方案、php实现mysql分库分表、mysql高并发解决方案。
MySQL 分库分表的实现原理及演示案例,非常不错,可以看看
Python+MySQL分表分库实战,适合对MySQL 分库分表感兴趣的读者。
《PHP与MySQL程序设计 第4版 》pdf与源码 是全面讲述PHP与MySQL的经典之作 书中不但全面介绍了两种技术的核心特性 还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序 《PHP与MySQL程序设计 第4版 》...
一份完全的基于php,mysql,apache服务的留言板程序,功能强大,代码清晰,容易理解!
这个PPT由浅入深,从很少的用户到千万级别的用户,告诉你为什么要使用分库分表,包括垂直和水平切分,偏入门的理论,代码基本无
基于springboot+Mysql+微信小程序的图书捐赠管理系统.zip 基于springboot+Mysql+微信小程序的图书捐赠管理系统.zip 基于springboot+Mysql+微信小程序的图书捐赠管理系统.zip 基于springboot+Mysql+微信小程序的图书...
这是一个使用VC++6.0开发的基于MySQL的简单图形界面应用程序,上传该样例的目的是希望新手学会如何配置vc++工程,以及使用MySQL提供的API接口与MySQL-Server交互。
改程序是我本人做的项目,这里提供给大家作参考。具体来说是一个简单的语料库搜索引擎程序,基于PHP和Mysql平台。
资源名字:基于php+mysql的成绩查询系统设计与实现(源码+文档)_php_mysql_成绩查询系统.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 适合场景:相关项目设计...
基于PHP+MySQL实现用户注册登录功能 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。 2、文本编辑器:Sublime 3。 二、主要技术 本案例使用PHP 7中的PDO数据对象对MySQL数据库进行...
分库分表 各种mysql中间件 总结(csdn)————程序
基于PHP的mysql 在线管理程序 phpMyAdmin.zip
基于php+Mysql新闻管理系统 开题报告 + 界面欣赏
C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip ...
基于PHP+MYSQL的学生信息管理系统程序\
基于jdbcDriver的MySQL分库分表实现-OShard