学uid和php怎么选,如何PHP根据uid计算出来插入哪个数据库?

该文探讨如何将200万用户的日志均匀地分布到多个表中,以避免单个表数据量过大。提出了根据uid的个位数进行取模分配表的方法,并提供了代码示例。同时,讨论了随机分配和用户创建时指定表的两种策略。建议使用预定义的表名规则和根据uid计算表名的函数,以确保日志的均衡访问。
摘要由CSDN通过智能技术生成

我现在要实现一个功能:

要通过计算规则计算出来200w用户的uid,对应insert日志不同的表,如何计算出来,是的表均衡处理?

回复讨论(解决方案)

是的日志进行均衡访问,不会导致每个表数据量很大,如何实现,高手们,指点指点

使得日志进行均衡访问,不会导致每个表数据量很大,如何实现,高手们,指点指点

uid 通常是数字,取模就可以了

substr('1456', -1);//6

根据uid的个位数就知道存在哪个表(0-9,10个表)

请高手们给与代码作为参考啊,谢谢

这需要代码吗?

令 $uid 为 uid 的值, $m 为日志表数

则表名 $tbl = '前缀' . ($uid % $m)

不知道你的多个表的命名规则 是什么? 是 200W 个用户,随机分配日志表,还是这个用户被创建时,就要指定放到哪张表?

1. 如果是随机的话,最好表的命名有一定的规则 ,比如:log001 , log002 ..., log100 这样子。直接用 rand() 加工一个数字出来,再拼成表名称;

2. 如果用户被创建时,就指定了写哪个表,就更好办了,在用户登录时,就把这个表名写到 session 中,写日的时候,直接拼接;

3. 如果,你想根据用户的第一位字符来确定,也可以采用方法 2 ;

有没有代码生成器,自动生成出出来表,假如我现在200W会员,生成300张表,谁有代码可以先把表生成出来,然后根据uid自动计算出来要insert那个表名?请给与代码

你先要定义好一个表,然后for($i-0; $i<300; $i++) mysql_query("carete table log_$i select * from 表 where 1=0“);300个表就建好了

插入时的表名计算我在 #6 已经给了

这是得多么频繁的操作数据库啊。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值