当前位置:网站首页>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,就可以定位到所属库。
边栏推荐
- 软件测试笔试题1(附答案)
- # 医院管理系统完整项目代码以及数据库建表语句分享
- golang刷leetcode:我能赢吗
- The only way to go from a monthly salary of 10k to 30k: automated testing
- [Dry goods] Best practice of sub-library and sub-table
- 任务四 机器学习库Scikit-learn
- 管理工具|宝藏书签收藏管理工具
- Interviewer: can you talk about optimistic locking and pessimistic locks
- 我用这一招让团队的开发效率提升了 100%!
- 牛客刷题:数组排序
猜你喜欢
随机推荐
Byte's internal technical map is amazing and practical
测试ESP32-Zigbee转发命令 : 滑轨、继电器控制
刚安装完win10专业工作站版,系统变量中Path默认值有哪些?重新建一个“PATH”变量名,会覆盖掉原先的“Path”。
Flink优化的方方面面
Do you understand the factory pattern?
在迁移测试中,源表、中间表、目标表的迁移规则
源码构建LAMP环境-2
单例模式你会几种写法?
UDP(用户数据报协议)
字节内部技术图谱 惊艳级实用
js函数防抖和函数节流及其他使用场景
你离「TDengine 开发者大会」只差一条 SQL 语句!
Auto.js脚本程序打包
gdb调试简要总结
Abstract Factory Pattern
Win10怎么开启自带的游戏录屏功能?
Zabbix 5.0 监控教程(二)
七夕到了——属于程序员的浪漫
30天啃透这份Framework 源码手册直接面进大厂
双轴晶体中的锥形折射









