您的位置:首页 > 数据库 > MySQL

MySql分表(对于大量用户,实现分表的方案,自己测试试验)

2018-03-09 11:46 357 查看
场景:用户注册后,在用户登录的时候,可以通过用户名,手机号,邮箱进行登录。 分表方案: 用户表 user_1,user_2,user_3............user_10 存储关系表:uid_1,uid_2.........uid_20 uid_n的字段:uid(使用crc20转换用户名,手机号,邮箱后的数字),type(1用户名,2手机号,3邮箱),val(对应的用户数据),tb_no(用户表分表的序号)。举例: 一个用户注册:用户名 admin 手机号 15927434211 邮箱 807967087@qq.com 性别 男 在入库的时候计算 admin的CRC32值为152155,然后使用取模的方式计算出分表将要插入user_5,将用户信息插入user_5,同时计算出手机号15927434211 的CRC32值为135697 及 邮箱 807967087@qq.com的CRC32值为152564.然后将(152155,135697,152564用户名,手机号,邮箱的CRC32值)按分表算法,分别算出应插入的表分别为(uid_3,uid_1,uid_6),插入的数据分别应为(152155,1,'admin',3),(135697,2,'15927434211',3),(152564,3,'807967087@qq.com',3).在查询的时候可以通过分表算法和数据的uid找到存储关联信息的表uid_n,然后获取tb_no。应为查询的不同的分表,程序中可以去自己定义分表的前缀。(按照此方法,还可以将用户信息的自增长id的uid存到表中)。参考过的文章:http://www.liaoxuefeng.com/article/001437480923144e567335658cc4015b38a595bb006aa51000(使用php进行的测试,这里分表后,不是每个表中的数据都是均分的)http://www.liaoxuefeng.com/article/001437480923144e567335658cc4015b38a595bb006aa51000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: