PHP与MySQL结合处理千万级数据
本文主要介绍《PHP结合MySQL处理千万级数据》,希望能够解决大家遇到的问题,下面就一起来看看《PHP结合MySQL处理千万级数据》这篇文章吧。
Mysql表分区思路
1亿订单的表可以分成5张表,这样每张表只有2000万数据,分担原表的压力。需要根据一定的条件进行分表,这里可以按照地域进行分表,需要一个中间件来控制去哪个表找你想要的数据。
中间件:使用主表的自增id作为中间件(什么样的字段适合做中间件?一定要唯一)
如何分配?插入到主表之后,返回一个id,根据这个id和表个数求模,将数据插入到有余数的表中。
注意:子表中的id必须与主表中的id一致
将来,只有插入操作才会使用主表。修改、删除和读取操作都不需要主表。
redis 消息队列
1.什么是消息队列?
消息传播过程中存储消息的容器
2.消息队列出现的历史原因
消息队列的特点:先进先出
需要执行的SQL语句先保存在消息队列中,然后按顺序异步插入到数据库中。
应用:新浪,先将即时评论放入消息队列,再通过计划任务将消息队列中的SQL语句按顺序插入到数据库中
修订
修改操作子表
这样修改有一个问题,主表和子表的数据会不一致,如何让主表和子表的数据一致呢?
Redis队列保持主表与子表数据一致
修改完成后会修改主表的数据,并存入redis队列中
然后linux定时任务()循环执行redis队列中的sql语句,并同步更新主表的内容
mysql 分布式表(查看、删除)
查询只需要查询子表,不需要查询主表
删除,先根据ID找到需要删除的子表,然后删除,然后push一条删除总表数据的SQL语句到消息队列中
然后执行计划任务删除总表数据
计划任务:
MySQL分布式数据库分区思路
库分布示意图:
MySQL分布式数据库(增加)
注意:操作完一个数据库后,必须关闭数据库连接,否则MySQL会认为你一直连接着同一个数据库
或者取模来确定加载哪个配置文件、连接哪个数据库
mysql分布式数据库(修改)
与新品原理相同
mysql分布式数据库(查看、删除)
类似原理
删除
执行队列
mysql分布式缓存的应用()
将数据放入缓存,节省数据库开销,先检查缓存,如果可用,直接取出,如果没有,再检查数据库,然后存入缓存。
当编辑信息之后,需要删除缓存,否则读取到的永远是缓存的数据,而不是修改后的数据。
《PHP结合MySQL处理千万级数据》的介绍到此结束,希望大家支持编程宝库。
下节:MySQL基本架构及解决长连接内存占用问题的两种方案分享MySQL教程
本文主要介绍了《MySQL的基本架构以及解决长连接内存占用问题的两种方案》,希望能够解决大家遇到的问题,一起来看看这篇《MySQL的基本架构以及解决长连接内存占用问题的两种方案》吧...
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。