`
cppmule
  • 浏览: 447223 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

基于PHP的MySQL分库程序思想

    博客分类:
  • php
 
阅读更多

以前做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的杨雨个人博客模板Dedecms版(不带程序).zip

    DedeCMS(织梦内容管理系统)是基于PHP和MySQL技术构建的一款开源内容管理框架。它提供了强大的后台管理功能,包括文章发布、栏目管理、会员系统、模板切换等,使得非程序员也能轻松维护网站内容。Dedecms以其简洁的...

    淘宝花钱购买的经典php商城小程序源码--Tinkphp5.1框架小程序商城带后台源码免费试用学习

    本次分享的是基于TinkPHP5.1框架开发的小程序商城源码,它不仅包含了前端展示部分,还集成了后台管理系统,为开发者和商家提供了完整的解决方案。 首先,我们来了解一下TinkPHP5.1框架。TinkPHP是一个轻量级的PHP...

    基于PHP的个人博客系统emlog官方附安装教程源码.zip

    【标题】"基于PHP的个人博客系统emlog官方附安装教程源码.zip"指的是一个包含PHP编程语言开发的个人博客平台——emlog的源代码和安装教程的压缩包。emlog是一个轻量级、易用且功能丰富的博客系统,特别适合个人用户...

    基于web的分类信息系统的设计与实现毕业论文.docx

    PHP作为一种开源的服务器端脚本语言,以其易于学习、强大的数据库交互能力以及丰富的功能库,成为了构建动态网页和信息系统的首选技术。通过PHP,开发者能够创建出功能齐全、用户友好的分类信息系统,服务于不同领域...

    基于命令行的 Markdown 发布管理系统,可用到个人BLOG、企业WIKI、文档管理等。.zip

    Markdown是一种轻量级的标记语言,它允许人们使用易读易写的纯...它不仅适合个人表达思想,也能满足团队协作和企业知识库的建立需求。对于学习者而言,这是一个理想的实践项目,能够提升他们的技能并增强实际项目经验。

    PHP基础教程 是一个比较有价值的PHP新手教程!

    PHP的开发者们为了更适合web编程,开发了许多外围的流行基库,这些库包含了更易用的层。你可以利用PHP连接包括Oracle,MS-Access,Mysql在内的大部分数据库。你可以在苍蝇上画图,编写程序下载或者显示e-mail。你...

    phpkaoshixitong_phpkaoshixitong_php考试系统_php_PHP考试系统_考试_源码.rar

    PHP考试系统是一种基于Web的在线考试平台,它利用PHP编程语言和相关的Web技术构建,旨在提供便捷、高效、灵活的在线测试环境。PHP,全称“PHP:Hypertext Preprocessor”,是一种开源、服务器端的脚本语言,广泛用于...

    LAMP+Proxy+读写分离

    3. **Mycat**:Mycat是一个更为强大的数据库中间件,除了读写分离外,还能实现分库分表、分布式事务等功能。Mycat适用于大型分布式系统,可管理大量的数据库节点,且具备良好的扩展性。 4. **基于程序的读写分离**...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    本网站以xp为Web平台,JSP+Ajax+Servlet+JavaBean+Hibernate为网站实现技术,建立基于MySQL数据库系统的核心动态网页,实现博客网站前台及博客个人维护管理等功能模块。 1、 系统处理的准确性和及时性:系统处理的...

    生活分类信息发布网站的优秀网站管理系统正式版

    同时提供有PHP+MYSQL开发的同城分类信息发布网站系统等十多套分类信息网商业版。 分类信息网站自助建站系统源码正式版由分类信息建站专家,分类信息网站系统开发商广州网软志成www.wrzc.net荣誉出品,采用asp.net ...

    网软志成分类信息网站系统.net官方商业版

    同时提供有PHP+MYSQL开发的同城分类信息发布网站系统等十多套分类信息网商业版。 分类信息网站自助建站系统源码正式版由分类信息建站专家,分类信息网站系统开发商广州网软志成www.wrzc.net荣誉出品,采用asp.net ...

    仿58同城赶集网源码

    同时提供有PHP+MYSQL开发的同城分类信息发布网站系统等十多套分类信息网商业版. ! 一个功能强大的分类信息(广告)系统,网软分类信息网正式版下载,分类信息网模板,分类信息网赶集网风格版下载分类信息网站系统源码...

    舟舟PHP影视系统_2.0

    ·采用PHP5.0+MYSQL架构,Tp框架为开发基础 ·基于最新的TP框架构建,详尽注释,方便二次开发和扩展 ·采用项目缓存机制,单入口模式,简洁,小巧,高效 ·完全UTF-8编码,方便安装在国外主机 ·模板分离设计,轻松设计...

    PhpBlogProjesi:博客博客项目

    【标题】"PhpBlogProjesi:博客博客项目"是一个基于PHP实现的博客系统,它提供了创建、管理和分享个人或组织思想与信息的平台。这个项目可能是为了教学目的或者作为初学者实践Web开发技能的实战案例。通过这个项目,...

    LCat link cataloging system-开源

    LCat链接目录系统是一款基于PHP和MySQL开发的开源软件,专为管理网站上的超链接而设计。这个系统采用面向对象的编程方式,构建了一个核心框架,以实现高效、灵活的链接分类和管理功能。下面我们将深入探讨这个系统的...

    yershop开源网店系统 v3.8.2.zip

    yershop采用模块化的架构设计思想,对目录结构规范做了调整,可以支持多模块应用的创建,让应用的扩展更加方便,基于MVC(Model-View-Controller,模型-视图-控制器)模式,并且均支持多层(multi-Layer)设计,全面...

    mUnky-开源

    mUnky是一个基于PHP和MySQL构建的内容管理系统(CMS),它为用户提供了多种功能丰富的在线工具。作为一个开源软件项目,mUnky的核心价值在于其开放源代码,允许开发者自由地查看、修改和分发代码,促进社区协作与...

    大厂 Go 工程师面试题集锦.docx

    - **知识点**:掌握MySQL性能优化的方法,包括索引、分表分库等。 - **解释**:通过对数据库进行合理的优化,可以显著提升查询速度和整体性能。 #### 六、高级主题 1. **GMP模型详解** - **知识点**:深入了解...

    Swan 开源博客系统 v1.2.0 正式版

    Swan开源博客系统v1.2.0是一个基于PHP编程语言构建的博客平台,专为个人和小型团队设计,提供了一种便捷的方式来创建、管理和分享日记或文章内容。在这个正式版中,用户可以期待一系列的功能改进和性能优化,旨在...

Global site tag (gtag.js) - Google Analytics