本文介绍: 当我们使用游标或seek方法进行分页时,我们不再使用传统的OFFSET和LIMIT。取而代之的是,我们根据上一页的最后一个记录的标识(通常是一个递增的ID)来查询下一页的数据。// 每页的记录数 int lastId = 0;// 上一页的最后一个记录的ID try(Connection connection = DriverManager . getConnection(url , user , password)) {
1 实习
1.1 讲解一下curd启动器
1.2 数据同步的过程是怎么实现的,同步过程中的数据一致性怎么保证的
答:同步过程中会记录断点,表示每一批同步成功时的位置,如果对端出现问题,则下一次同步会继续从这个断点后开始同步。
1.3 当对端出现故障时,线程会抛异常然后被捕获并且记录,那么这个库的同步不就相当于终止了吗,而且这个异常线程也会消失,你怎么让他同步完整的表(重要)
答:一般对于同步过程中出现异常的,我们都会进行记录,并且记录异常原因,稍后会通过人工会根据捕获的异常修复漏洞,然后点击按钮进行一次基于库或者表级别的同步,这个过程也是基于上次的断点同步的
1.4 线程怎么感知到已经同步完一张表了呢
答:通过比较源端表和目的端表的记录行数,就可以确定最终是否同步完成
1.5 你是需要从公司的数据库拉一批数据到内存中,然后再同步到对端的数据库,你是怎么知道这一批执行成功的呢,有什么通知机制吗?
答:我使用的是jdbc原生接口,每一次拉取到一批数据的时候,就会执行一次executeBatch方法,然后会在进行commit操作,这个接口本身有返回值,如果能继续同步下一批,就说明同步成功,如果失败会抛异常,也会被捕获
2 mysql
2.1 设计mysql表结构的时候,需要考虑到哪些点
答:
2.2 覆盖索引
2.3 场景题:在上亿条记录的表中使用limit做分页查询时会碰到什么问题,怎么解决(重点)
2.3.1 在拥有上亿条记录的表中使用 LIMIT
进行分页查询时,可能会遇到以下问题:
2.3.2 如何解决这些问题?
2.3.3 对于大表,使用 LIMIT 进行深度分页可能会消耗大量的内存,因为数据库需要缓存大量的行来处理这样的查询。举个例子
2.3.4 与其使用 `LIMIT m,n`,不如记录上一页的最后一个记录的ID或其他标识,然后查询“大于此ID”的下一页记录。这种方法被称为游标或seek方法。 给个java的demo,使用游标时,sql语句怎么写呢?
2.3.5 游标是一种可滚动的结果集,可以在不返回所有数据的情况下进行分页查询。使用游标分页可以避免对整个表进行扫描,从而提高查询效率。MySQL支持使用游标进行分页查询,但需要注意内存消耗和网络传输的问题。 使用游标分页可以避免对整个表进行扫描,为什么?
2.3.6 使用游标方式:如果你知道上一页的最后一个ID是500,你可以这样查询:SELECT * FROM table WHERE id > 500 ORDER BY id LIMIT 10。这时,数据库可以利用ID的索引直接跳到ID为500的位置并开始查询,避免了处理那些之前的记录。 1 这样的话是不是说,可以先利用id的主键索引,以logn的复杂度查找出目标记录,然后再在目标记录中按照limit10进行筛选,如果是单纯的使用limit字段,就不会走索引,会从第一条记录开始扫描到第500条,对吗
2.3.7 SELECT * FROM table order by id LIMIT 500, 10 这种也是会扫描前500吗?
2.3.8 SQL游标(Cursor in SQL)和 游标方式分页(Keyset or Cursor-based Pagination)的区别
2.4 评估一张表的存储空间,一般是怎么计算的,包括内存和磁盘,假设金山的用户量为2亿,每一个人半年产生一次订单,然后需要多少个这样的数据库去存储呢?
2.4.1 计算字段数
2.4.2 计算一条记录占用的空间
2.4.3 除了字段的存储,还需要考虑其他的开销,如记录的元数据、索引、行的开销等,大概也估算一下
2.4.4 总量计算:一年产生的订单数 * 一条记录占用的空间大小
2.4.5 磁盘使用数量
2.5 秒杀系统中订单的唯一性怎么解决
2.6 设计一个高并发的分布式id生成器(场景设计题)
3 消息队列
3.1 为什么使用kafka而不是rabbitMQ呢
4 redis
4.1 redis做分布式锁怎么实现的
4.2 redission分布式锁具体是怎么实现的
5 rpc框架
5.1 你实现rpc的思路是怎么样的,怎么做任务拆减(其实就是在问rpc框架的组成部分)
5.2 假设我要现在写了一个服务,要对接你的这个rpc框架,得注意些什么呢
5.3 你推荐用哪一种序列化协议
5.4 讲讲protobuff的向前和向后兼容性
6 反问
6.1 讲讲你们部门的业务
6.2 您这个部门的人数
6.3 是用go吗
6.4 表现如何
6.5 base有限制吗
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。