温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP结合MySQL处理千万级数据

发布时间:2021-07-27 15:49:38 来源:亿速云 阅读:172 作者:chen 栏目:大数据

这篇文章主要讲解了“PHP结合MySQL处理千万级数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP结合MySQL处理千万级数据”吧!

mysql 分表思路

PHP结合MySQL处理千万级数据

一张一亿的订单表,可以分成五张表,这样每张表就只有两千万数据,分担了原来一张表的压力,分表需要根据某个条件进行分,这里可以根据地区来分表,需要一个中间件来控制到底是去哪张表去找到自己想要的数据。

中间件:根据主表的自增 id 作为中间件(什么样的字段适合做中间件?要具备唯一性)

怎么分发?主表插入之后返回一个 id,根据这个 id 和表的数量进行取模,余数是几就往哪张表中插入数据。

注意:子表中的 id 要与主表的 id 保持一致

以后只有插入操作会用到主表,修改,删除,读取,均不需要用到主表

PHP结合MySQL处理千万级数据

redis 消息队列

1,什么是消息队列?
消息传播过程中保存消息的容器

2,消息队列产生的历史原因

PHP结合MySQL处理千万级数据

消息队列的特点:先进先出

把要执行的 sql 语句先保存在消息队列中,然后依次按照顺利异步插入的数据库中

应用:新浪,把瞬间的评论先放入消息队列,然后通过定时任务把消息队列里面的 sql 语句依次插入到数据库中

修改

操作子表进行修改

PHP结合MySQL处理千万级数据

这样修改有一个问题,主表和子表的数据会出现不一致,如何让主表和字表数据一致?

redis 队列保持主表子表数据一致

修改完成后将要修改主表的数据,存入 redis 队列中

PHP结合MySQL处理千万级数据

然后 linux 定时任务(contble)循环执行 redis 队列中的 sql 语句,同步更新主表的内容

PHP结合MySQL处理千万级数据

mysql 分布式之分表(查,删)

查询只需要查询子表,不要查询总表

PHP结合MySQL处理千万级数据

删除,先根据 id 找到要删除的子表,然后删除,然后往消息队列中压入一条删除总表数据的 sql 语句
然后执行定时任务删除总表数据

PHP结合MySQL处理千万级数据

定时任务:

PHP结合MySQL处理千万级数据

mysql 分布式之分库

分库思路

PHP结合MySQL处理千万级数据

分库原理图:

PHP结合MySQL处理千万级数据

PHP结合MySQL处理千万级数据

mysql 分布式之分库(增)

PHP结合MySQL处理千万级数据

注意:操作完一个数据库一定要把数据库连接关闭,不然 mysql 会以为一直连接的同一个数据库

还是取模确定加载哪个配置文件连接哪个数据库

PHP结合MySQL处理千万级数据

mysql 分布式之分库(改)

原理同新增

PHP结合MySQL处理千万级数据

mysql 分布式之分库(查,删)

原理类似

PHP结合MySQL处理千万级数据

删除

PHP结合MySQL处理千万级数据

执行队列

mysql 分布式之缓存(memcache)的应用

将数据放入缓存中,节省数据库开销,先去缓存中查,如果有直接取出,如果没有,去数据库查,然后存入缓存中

PHP结合MySQL处理千万级数据

在编辑信息之后需要删除缓存,不然一直读取的是缓存的数据而不是修改过的数据

PHP结合MySQL处理千万级数据

感谢各位的阅读,以上就是“PHP结合MySQL处理千万级数据”的内容了,经过本文的学习后,相信大家对PHP结合MySQL处理千万级数据这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI