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
相关文章推荐
- 用户登录程序实现--基于MYSQL (自己导入jar包)
- mysql 对于百万 千万级数据的分表实现方法
- 如何实现ie禁止返回功能和禁止用户用back space键返回页面(未测试)
- 抛砖引玉-使用Acegi实现多种用户登录的一种方案
- MySQL导入导出大量数据的程序实现方法
- Pb中多用户权限管理实现方案
- Linux+Apache用 mod_auth_mysql实现用户身份认证
- 用户体验测试的自动化实现 - 检查界面元素的尺寸
- MySQL分表实现上百万上千万记录分布存储的批量查询设计模式
- 从MySQL导入导出大量数据的程序实现方法
- MySQL分表优化试验
- MySQL分表优化试验
- MySQL分表优化试验
- 用户体验测试的自动化实现 - 检查Tab顺序
- bat文件实现用户交互式的方案
- C#基础系列:实现自己的ORM(MiniORM的测试代码)
- MySQL导入导出大量数据的程序实现方法
- 用户体验测试的自动化实现 - 第二种检查Tab顺序的方法
- Debian+vsftpd+MySQL实现虚拟用户
- mysql用户限额的实现