› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
loveaeen
V2EX  ›  MySQL

关于分库分表的查询思考

  •  
  •   loveaeen · Nov 17, 2022 · 2702 views
    This topic created in 1409 days ago, the information mentioned may be changed or developed.

    小弟最近在看关于数据在分库分页后的一些查询方式。 发现了有以下几种:

    1. 全局查询法的 limit 0,(x+y)大内存排序方式。
    2. 禁止跳页法的 id > x limit 10 的方式。
    3. 通过获取最小值的 offset ,在内存中排序后进行的二次查询法。

    主要有些疑惑的是第三种 假设: 分了两张表 user_1,user_2 ,在单表中默认查询为 limit 5,5 该页数据数据因删除等操作导致全部存在 user_1 表中,user_2 表不存在该页数据。 那么在「二次查询法」中的初次查询时,sql 已经被改写为 limit 2,5 在初次查询就已经缺失数据的情况下,「二次查询法」怎么解决这种问题呢。

    5 replies  •  2022-11-17 19:04:05 +08:00
    xuanbg
        1
    xuanbg  
       Nov 17, 2022
    分表规则必须要解决一个问题:你需要知道在哪个表查询目标数据。
    loveaeen
        2
    loveaeen  
    OP
       Nov 17, 2022
    @xuanbg 我知道我有两张 user 分表,我也采用「二次查询法」来归并排序分页数据,但是某一页数据却全部都存在 user_1 表中,「二次查询法」如何解决该问题呢?
    我应该也没法提前知道这页数据具体在哪张表吧
    zoharSoul
        3
    zoharSoul  
       Nov 17, 2022
    这跟分库分表没关系吧
    xuanbg
        4
    xuanbg  
       Nov 17, 2022
    @loveaeen 数据分布不均匀的话,查列表先表 1 再表 2 不好么?
    pkoukk
        5
    pkoukk  
       Nov 17, 2022
    既然有 limit offset ,那就是要分页咯,稳定分页就意味着必须排序
    所以你的排序字段应该就是你的分表依据
    如果排序和分表没关系,那只能多表查完合并大内存排序了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   858 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 21:42 · PVG 05:42 · LAX 14:42 · JFK 17:42
    ♥ Do have faith in what you're doing.