互联网数据库“跨库分页”架构技术实践

作者/分享人:58沈剑
“架构师之路”公众号作者,58到家高级总监,技术委员会主席。前百度高工,58同城高架,技委主席。
  1. 如何实现数据“分页”。
  2. 数据量过大,分库后,“跨库分页”存在什么问题。
  3. 常见“跨库分页”架构优化方案。
  4. 价值年薪50w的“跨库分页”无损方案。

实录提要:

  • 目前准备做数据库水平切分,需要注意什么关键问题?
  • 可以通过搜索引擎解决分页的问题吗?
  • 这些分页方案的性能有多大差距?
  • 如果分库分表的情况下碰到要对一个表或多个表关联并且按多个字段为条件进行检索的情况下怎么办呢?
  • 据说 mycat 可以解决分库的 join 问题,就是不知道性能如何?
  • 单表多大数据量时才考虑分库分表?
已有436人预订
预订达标
文章出炉
交流日期
     
02月06日
02月19日
02月23日 20:30
查看文章评论/提问
Mr.Wang
第四点好牛,佩服!
杨继准
跨库分页一直都没什么满意的方案。非常感谢分享。
nq_with_you@java
感谢老师的分享,目前准备做数据库水平切分,需要注意什么关键问题嘛?目前了解需要避免跨库事务,请老师指点,谢谢。
郑泽安
第二第三种比较实用,禁止跳页查询和通过游标的形式去截取数据,各方面都得到了兼顾,赞👍🏻!
忽然之间
干货满满。感谢分享。
黄飞
方法二和方法三比较适用,感谢58沈剑给我们带来这么高深的技术
Sunny@Coding
方法三比较多用吧,适合很多场景。总之,很感谢作者倾力之作。
可乐加冰
第二种方法经常使用,其它的打算按照业务场景需要,尝试一下,感谢
蔡洁
感谢分享
福杯满溢
对于实际应用,非常有价值!
stone
请问,采用hash取模方式的表扩容策略及采用一致性hash分表的表扩容策略如何实现?
第二少
一口气看完了,分次查询法很受启发,这样才有点算法的味道了😄
listen
前两种方法经常使用,最后一种方法确实受教了,谢谢大师分享
YoGe
上述的的几种分库方案我都用过了,取模的方案考虑到大表的增长速度总是难以预料,而且一旦确定了模数,要改还要考虑一堆兼容性问题,所以线上方案改造为除数的方法,缺点是时不时要去加下表。还有个问题,全局递增唯一键有没有什么高效的方案?目前有两种方案,放在缓存里自增,以及数据库自增。。。然而感觉这些逻辑拆的比较散,如利用缓存,还要考虑缓存丢失怎么办!!mysql等数据库没有有一个分装好的这些分表解决方案呢?
冯为
感谢分享,很受用。
Faris
谢谢分享
linora🎩
趁午休时间 演示了一下二次查询法在数据分布不均匀情况下的问题 mysql环境 use test; drop table if exists tab,tab01,tab02; create table tab(id int primary key,time int,key ix_time(time)); create table tab01(id int primary key,time int,key ix_time(time)); create table tab02(id int primary key,time int,key ix_time(time)); insert into tab values (1,10), (3,1), (5,33), (7,22), (9,0), (11,8), -- sharding line (2,100), (4,100), (6,100), (8,100), (10,100), (12,100); insert into tab01 values (1,10), (3,1), (5,33), (7,22), (9,0), (11,8); insert into tab02 values (2,100), (4,100), (6,100), (8,100), (10,100), (12,100); select * from (select 'global ' note,t.* from tab t order by ifnull(time,100) limit 4,2) tmp01 union all select * from (select 'sharding01',t.* from tab01 t order by ifnull(time,100) limit 2,2 ) tmp02 union all select * from (select 'sharding02',t.* from tab02 t order by ifnull(time,100) limit 2,2) tmp03;
郑泽安
沈大大,这些分页方案的性能有多大差距?
王田
👍。总结第一段有一个错别字,跨写成了夸,“夸n库分页”
Halo
感谢分享请问,跨库后增加数据库主机,每个表实现再散列后,在保持服务的情况下,如何更新表的数据呢?
你可能还喜欢
Service Mesh 在华为公有云的实践
田晓亮
从零开始,搭建 AI 音箱 Alexa 语音服务
Mike
Web 安全恩仇录:再谈逻辑漏洞
肖志华
如何用 Vue 实现前端权限控制(路由权限 + 视图权限 + 请求权限)
雅X共赏
智能增长:如何用大数据和人工智能实现业务体量的增长
蒋凡
有关 Mock 的是是非非
思考的犀牛
微信扫描登录