美文网首页
MySQL 用id分库怎么使用name查询数据

MySQL 用id分库怎么使用name查询数据

作者: 回眸淡然笑 | 来源:发表于2022-09-22 22:16 被阅读0次

对用户表最常见的分库方式是水平切分方式并按照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,就可以定位到所属库。

相关文章

  • MySQL 用id分库怎么使用name查询数据

    对用户表最常见的分库方式是水平切分方式并按照id取模分库。查询时可以对id取模后能够直接定位db。对于name无法...

  • mysql查询保持in的顺序

    目的:解决mysql的in语法查询顺序问题 mysql数据库总,使用in语句查询,查询结果默认会根据主键id排序。...

  • MySQL查询操作

    MySQL查询操作(以此表(user)为例)---select Id name pass 1 XXX 123 2 ...

  • 从0到1学习网络安全 【MySQL基础-MySQL 查询数据】

    MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据。你可以通过 mysql> 命令提示...

  • MySQL练手小计

    Mysql 必知必会 查询 检索多个列SELECT prod_id, prod_name, prod_pri...

  • 分库分表之设备分享的思考

    背景 项目中使用的是MySQL数据库,我们对设备表做了分库分表,分表逻辑:对租户ID进行hash,使用的技术框架S...

  • mysql优化

    Mysql分库分表方案 Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时...

  • 分库分表实战

    方案:1.分表分库框架选型sharding-jdbc 2.分库后使用雪花算法代替mysql主键id自增 3.拆分规...

  • mysql自定义递归函数

    引用场景 盖楼评论 菜单 简单表结构 id pid name 不多解释直接上函数 使用 树型数据递归查询

  • centos7安装Mycat-单机版

    前言 系统的数据承载量还是挺大的,所以需要对存储进行分库分表,数据库使用mysql,分库分表中间件使用mycat(...

网友评论

      本文标题:MySQL 用id分库怎么使用name查询数据

      本文链接:https://www.haomeiwen.com/subject/rwjgortx.html