当前位置:网站首页>MySQL 用id分库使用name查询
MySQL 用id分库使用name查询
2022-08-02 21:43:00 【抓手】
对用户表最常见的分库方式是水平切分方式并按照id取模分库。查询时可以对id取模后能够直接定位db。对于name无法定位到库,查询时往往需要遍历所有库,当分库数量多起来,性能会显著降低。
下面介绍几种优化思路:
索引表法
建立一个索引表记录name到id的映射关系,通过name查询时,先用索引表查询到id,再定位相应的库。
缓存映射法
将name:id的映射关系放在缓存里性能更佳,先通过缓存获取id,然后再定位相应的库。
name生成id
设计f(name)函数生成唯一id,在插入数据时,先使用name生产id再插入,查询时通过f(name)得到id再查询id。
基因法 name基因融入id
假设分8库,采用id%8路由,潜台词是,id的最后3个bit决定这条数据落在哪个库上,这3个bit就是所谓的“基因”。
设计f(name)函数生成3bit基因,同时生成61bit的全局唯一id作为用户的标识,然后将3bit拼接到61bit后面形成64bit的主键id。
使用name查询时,先通过f(name)函数计算出3bit,再取模3bit%8,就可以定位到所属库。
边栏推荐
- 任务四 机器学习库Scikit-learn
- golang刷leetcode:按位与结果大于零的最长组合
- 总结嵌入式C语言难点(2部分)
- 宝塔搭建实测-基于ThinkPHP5.1的wms进销存源码
- 面试官居然问我:删库后,除了跑路还能干什么?
- H5网页播放器EasyPlayer.js播放器界面的加载效果无法消失是什么原因?
- 微软SQL服务器被黑客入侵以窃取代理服务的带宽
- 最近火爆朋友圈的“广告电商”,核心商业模式是什么,广告收入真实靠谱吗?
- If the watermark according to how to realize the function
- 同样月薪6K,为什么同事跳槽月薪翻倍,而你只涨了1000?
猜你喜欢
Jmeter二次开发实现rsa加密
【TypeScript】深入学习TypeScript类(上)
Sentinel vs Hystrix 限流对比,到底怎么选?
面试官:可以谈谈乐观锁和悲观锁吗
第十章 时序与延迟
The only way to go from a monthly salary of 10k to 30k: automated testing
TDengine 在中天钢铁 GPS、 AIS 调度中的落地
IP Protocol (Internet Protocol)
What is the core business model of the "advertising e-commerce" that has recently become popular in the circle of friends, and is the advertising revenue really reliable?
矩阵白化原理及推导
随机推荐
宝塔搭建实测-基于ThinkPHP5.1的wms进销存源码
Summary of @Transactional transaction invocation and effective scenarios
Swin Transformer 论文精读,并解析其模型结构
@Transactional 事务调用与生效场景总结
H5网页播放器EasyPlayer.js播放器界面的加载效果无法消失是什么原因?
【TypeScript】深入学习TypeScript类(上)
golang刷leetcode:拼接数组的最大分数
在迁移测试中,源表、中间表、目标表的迁移规则
微软SQL服务器被黑客入侵以窃取代理服务的带宽
博客主题美化第二弹
kubernetes pod podsecurityPolicies(PSP)
JS 包装类 Math对象 round max() min() random
2022-08-02 第六小组 瞒春 学习笔记
牛客刷题:手动实现数组filter方法
饥荒联机版Mod开发——制作简单的物品(三)
Zabbix 5.0 Monitoring Tutorial (2)
无线振弦采集仪远程修改参数的方式
树形结构构造示例代码
【干货】分库分表最佳实践
软件测试到底自学还是报班?