读写拆散与分库分表,分布式事务

  • MySql存储引擎,建表标准,事务级别,sql优化,读写拆散思维等。
  • 理解过读写拆散吗? 你说读的时候读从库,当初假如有一张表User做了读写拆散,而后有个线程在一个事务范畴内对User表先做了写的解决,而后又做了读的解决,这时候数据还没同步到从库,怎么保障读的时候能读到最新的数据呢?
  • 你如何保证系统的稳定性? 答:分布式的链路个别都很长,所以咱们首先通过全链路压测,剖析整个链路,到底是哪个节点呈现瓶颈。如果是数据层呈现瓶颈,那么能够思考加缓存,读写拆散等升高数据库压力,如果短期流量很大,一天就能打满一个库,那么要思考扩库。数据层如果没问题,瓶颈在应用层,那么须要先剖析利用代码是否有问题,jvm是否可调优,线程池是否可调优,rpc超时工夫设置是否正确,如果利用代码没问题,那么能够加docker,进行程度扩容。如果问题不在己方链路,在于依赖服务,那么要推动对方进行性能优化,并且最好降级预案。如果零碎曾经最优,无奈进行优化依然接受不了流量,那么只能做限流解决了。而后又介绍了一些流量隔离等等业内解决方案。
  • 数据库插入和删除一条数据的过程在底层是如何执行的,我的项目里配置了读写拆散,也会比拟深刻的就实现办法和底层逻辑展开讨论;
  • redis是怎么部署的?主从部署?有理解过redis集群部署吗?我说redis集群部署没有理解过,然而有理解过mysql的集群部署,有读写拆散部署,主从复制,分库分表等相干计划
  • 在数据库读写拆散的时候怎么做,有什么样的框架;
  • MySQL数据量太大怎么办,如何分库分表 binlog,读写拆散,主从复制 MySQL里的锁理解吗
  • 分库分表 聚合查问 limit怎么实现 top的实现 不停机扩容?分表防止冷热?不停机扩库?不停机扩表?跨库事务? 分库分表为什么这么设计?数据增长怎么做?怎么扩容?数据不平均怎么办?冷热数据怎么拆散?聚合怎么做?跨库聚合怎么做,查问怎么做?跨库分页怎么做? mysql 线上的组群模式?一主多从?为什么这样?强一致性如何保障?为了解决读写拆散吗?是为了一主多备吗?主库crash掉怎么办?从库呢? 分布式事务怎么做?什么原理?怎么实现的?呈现过事务不一致性吗?为什么?怎么解决的? 拜访申请暴增怎么做?怎么缓解压力?
  • 如何实现 MySQL,事务隔离级别,什么时候脏读,什么时候读已提交 分布式事务(常常被问到) 1、两阶段提交(2PC) 第一阶段:事务协调器要求每个波及到事务的数据库预提交(precommit)此操作,并反映是否能够提交. 第二阶段:事务协调器要求每个数据库提交数据。 长处: 尽量保障了数据的强统一,适宜对数据强统一要求很高的要害畛域。(其实也不能100%保障强统一) 毛病: 实现简单,就义了可用性,对性能影响较大,不适宜高并发高性能场景 2、弥补事务(TCC) 针对每个操作,都要注册一个与其对应的确认和弥补(撤销)。Try、Confirm、Cancel 长处: 跟2PC比起来,实现以及流程绝对简略了一些,但数据的一致性比2PC也要差一些 毛病: 毛病还是比拟显著的,在2,3步中都有可能失败。TCC属于应用层的一种弥补形式,所以须要程序员在实现的时候多写很多弥补的代码,在一些场景中,一些业务流程可能用TCC不太好定义及解决。 3、本地音讯表(异步确保) 核心思想是将分布式事务拆分老本地事务进行解决,音讯生产方,须要额定建一个音讯表,并记录音讯发送状态。音讯表和业务数据要在一个事务里提交,也就是说他们要在一个数据库外面。而后音讯会通过MQ发送到音讯的生产方。如果音讯发送失败,会进行重试发送。 长处: 一种十分经典的实现,防止了分布式事务,实现了最终一致性。 毛病: 音讯表会耦合到业务零碎中,如果没有封装好的解决方案,会有很多杂活须要解决。 4、MQ事务音讯 RocketMQ反对,RabbitMQ 和 Kafka 都不反对,一次发送音讯和一次确认音讯,生产方须要实现一个check接口(确认音讯或者回滚) 长处: 实现了最终一致性,不须要依赖本地数据库事务。 毛病: 实现难度大,支流MQ不反对,没有.NET客户端,RocketMQ事务音讯局部代码也未开源。 5、Sagas事务模型 长时间运行的事务,该模型其核心思想就是拆分分布式系统中的长事务为多个短事务,或者叫多个本地事务,而后由 Sagas 工作流引擎负责协调,如果整个流程失常完结,那么就算是业务胜利实现,如果在这过程中实现失败,那么Sagas工作流引擎就会以相同的顺序调用弥补操作,从新进行业务回滚。
  • 对于分布式事务、以及分布式事务问题------ 对于分库分表(为什么要分库分表,用过哪些分库分表中间件)---- 分库分表的办法-----------联合我的项目,垂直和程度拆分 如何设计动静扩容缩容的分库--- 分库分表全局ID如何生成
  • 分库分表是以什么维度来划分的?划分的算法是怎么的,会不会呈现数据调配不平衡的状况。 myisam和innodb反对锁的粒度是怎么的?
  • 5、订阅分库分表的 Binlog 怎么订阅? 6、分库分表的数据源中如果存在主键抵触要怎么解决? 7、怎么保障上游对 Binlog 的生产程序? 8、如何在上游保障生产时的事务原子性?
  • 如果用 id 翻页的形式, 数据库表如何设计? 索引如何设计? 5. 如果量很大, 你感觉须要分库分表吗? 怎么分? 6. 分库分表后怎么查问分页? 7. 分库分表后怎么保障主键依然是递增的? 8. 当初须要反对深分页, 页码间接跳转, 怎么实现? 9. 刹时写入量很大可能会打挂存储, 怎么爱护?
  • 分库分表带来的问题。
  • 分库分表怎么做(要计划)
  • mysql 怎么做的分库分表,有没有遇到跨库查问问题 某个分库数据量特地大的状况,怎么解决 mysql 慢查问怎么解决的,explain怎么应用,重点关注哪里 分库分表,线上数据量有多大 数据库连接池怎么设计的 定时工作,数据量会不会特地大
  • oracle跟mysql的区别,隔离级别 慢查问如何定位?如何优化?遇见过什么样的case,怎么解决的? 我的项目用到了分库分表,分库肯定会晋升性能呢?什么是冷热数据?优化了什么中央?如果呈现了数据暴增,怎么解决?有什么扩容的办法?怎么无感知扩容?怎么做到数据实时一致性? 分库分表的设计? 分布式事务呈现过不统一吗?为什么?怎么解决?有什么办法防止?怎么监控?监控到怎么解决?什么时候须要人工接入。分库分表 聚合查问 limit怎么实现 top的实现 不停机扩容?分表防止冷热?不停机扩库?不停机扩表?跨库事务? 分库分表为什么这么设计?数据增长怎么做?怎么扩容?数据不平均怎么办?冷热数据怎么拆散?聚合怎么做?跨库聚合怎么做,查问怎么做?跨库分页怎么做? mysql 线上的组群模式?一主多从?为什么这样?强一致性如何保障?为了解决读写拆散吗?是为了一主多备吗?主库crash掉怎么办?从库呢? 分布式事务怎么做?什么原理?怎么实现的?呈现过事务不一致性吗?为什么?怎么解决的? 拜访申请暴增怎么做?怎么缓解压力?
  • mysql惟一索引能退出null吗(不会) innodb个性 mysql回表 mysql分库分表规范?
  • 如何分库分表,分页查问,查问非拆分字段计划; MySql索引构造,为什么用B+树(比照Hash,B+树,B树,AVL,红黑树);
  • 分库分表怎么做?基于什么维度去做?
  • 列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查问的问题
  • 聊聊对事务的了解(什么是事务?事务的个性?) 事务的隔离级别 InnoDB 和 MyISAM 的区别? 如何优化慢 SQL? 一亿的表,很多简单的查问条件,查第一万页,如何优化?分库分表查问过程? 二阶段、三阶段、TCC、seata
  • 设计一个零碎,每天有100亿条数据,须要在后盾做实时展现和查找。 我过后答复的大体思路是nginx负载平衡,音讯队列存储,多线程读取,批量插入,数据库分库分表。 面试官依据我的答复又衍生出了很多问题,如音讯队列存满了怎么办?(也就是生产跟不上生产)批量插入时某一条失败了有什么影响?怎么解决?分库分表应该怎么分?怎么解决数据迁徙的问题?
  • 分库分表的实现原理是什么,你所在业务个别是怎么分库分表的?对应逻辑是什么?
  • mysql分库分表准则,为什么要分这么多库这么多表,基于什么思考?数据库3、动静扩容要如何实现?
  • 问分库分表优化
  • •乐观锁和乐观锁的区别? •这两种锁在Java和MySQL别离是怎么实现的?用的什么数据库? •应用什么存储引擎,为什么应用InnnoDB? •订单表有做拆分么,怎么拆的? •程度拆分后查问过程形容下 •如果落到某个分片的数据很大怎么办? •哈希取模会有什么问题么? •分库分表后怎么解决读写压力? •拆分后主键怎么保障惟一? •Snowflake生成的ID是全局递增惟一么? •怎么实现全局递增的惟一ID? •Mysql的索引构造说下 •主键索引和一般索引的区别? •你们零碎目前的瓶颈在哪里? •你打算怎么优化?简要说下你的优化思路 •有什么想问我么?
  • 一. 数据库 1.应用mysq1索引都有哪些准则?索引什么数据结构?B+tree和Btree什么区别? 2.mysq有哪些存储引擎啊?都有啥区别? 3.设计高并发零碎数据库层面该怎么设计?数据库锁有哪些类型?如何实现呀? 4.数据库事务有哪些? 二. 分库分表 1.如何设计能够动静扩容缩容的分库分表计划? 2.用过哪些分库分表中间件,有啥长处和毛病, 3.讲一下你理解的分库分表中间件的底层实现原理? 4.我当初有一个未分库分表的零碎,当前零碎需分库分表,如何设计, 5.让未分库分表的零碎动静切换到分库分表的零碎上? 6.分布式事务晓得吗?你们怎么解决的?TCC?那若呈现网络起因,网络连不通怎么办啊 7.为什么要分库分表啊? 8.分布式寻址形式都有哪些算法?晓得一致性hash吗? 9.手写一下java实现代码?你若userId取摸分片,那我要查段间断工夫里的数据怎么办? 10.如何解决分库分表主键问题?有什么实现计划?
  • 1、分布式事务 2、主键索引和惟一索引区别 3、hash索引和B+树索引区别及应用场景 4、单列索引和复合索引应用场景 5、利用内存溢出怎么排查 6、MYSQL执行打算怎么查看,以及应该关注哪些字段 7、分库分表时,怎么实现多表查问 8、亿级数据怎么存储
  • 分库分表如何做的? 分库分表如何不同库表间数据不反复。
  • 分库分表如何抉择分表键 分库分表的状况下,查问时个别是如何做排序的?
  • 是否举个业务上的例子说说分库分表?----------这是针对并发量过大导致单机存储容量、连接数、解决能力瓶颈问题。垂直切分也分为分库和分表两种措施,垂直分库是依据业务耦合性关联度较低的不同数据存储到不同的数据库中,比方客户信息库、商品信息库……离开寄存到不同的库中。垂直分表是基于原数据表的字段太多而拆分的形式,比方客户表有个人身份属性,地址分割等属性……。程度切分分为库内分表和分库分表,将同一个表的数据依照不同的条件调配到多个表中,比方ID奇偶分表。库内分表只解决了繁多表数据过大的问题,没有将表散布到不同的机器上,所以为了防止竞争同一台机器的CPU、内存、网络等能够散布到不同的库中。 分库分表带来的问题又是什么?---------事务一致性的问题;跨机器节点关联问题;跨节点分页排序问题;全局主键避重问题;数据迁徙扩容问题
  • 分库分表应该怎么分?怎么解决数据迁徙的问题?
  • 对于分布式事务、以及分布式事务问题------ 对于分库分表(为什么要分库分表,用过哪些分库分表中间件)---- 分库分表的办法-----------联合我的项目,垂直和程度拆分 如何设计动静扩容缩容的分库--- 分库分表全局ID如何生成
  • 你们数据库有没有用到分库分表,怎么做的?分库分表当前全局id怎么生成的?
  • 你们公司对分库分表,防止热点是怎么解决的?----------这波及到数据库瓶颈问题的解决,所以要联合我的项目,对数据进行垂直和程度拆分。程度分库:(能够手动画个草图来论述)当用户通过userId来申请数据,通过对userId的剖析得出该去哪个数据库进行操作(比方:A数据库是偶数userId,B数据库是奇数userId。不仅仅是通过userId也有依照其余分库的形式,每个库的构造一样,但数据不一样)。程度分表:做法和分库是一样的。垂直分库:按照业务的不同,拆分成多个数据库(用户数据库和产品数据库……各管各的),垂直分表就是按照uid为外围,将字段宰割(比方表一寄存个人身份信息姓名年龄……,表二寄存集体社交信息联系方式地址……) 除了分库分表,你还理解些MySQL什么优化?
  • mysql分库分表准则 - 为什么要分这么多库这么多表 - 基于什么思考? - 如何实现数据库动静扩容?
  • 分布式事务理解吗?有哪几种解决方案?
  • mysql 幻读和间隙锁 分片实现事务,mysql原生实现分布式事务
  • 常见的分布式事务计划有哪些? (1)两阶段提交计划 (2)eBay 事件队列计划 (3)TCC 弥补模式 (4)缓存数据最终一致性
  • 你的我的项目中,如何保障分布式事务的一致性
  • 为什么抉择本地音讯法做分布式事务? 什么是TCC,它的工作过程? TCC 和 XA 的区别? 如果让你优化XA,你会如何优化?
  • 分布式事务理解吗?你们我的项目中都用到了哪些分布式事务?都有哪些优缺点?
  • 分布式事务的原理,如何应用分布式事务
  • 秒杀零碎,会波及到多个库表的更新,分布式事务怎么解决,我说的音讯最终一致性,异步?有没有更好的计划?同步TCC形式,TCC形式原理?(三个阶段的具体实现)
  • 从秒杀零碎还引申出分布式事务的几种实现,二段式、三段式、弥补型(TCC)、基于可靠消息服务的音讯队列实现。重点探讨了这几种的实现和区别,要求画出基于可靠消息服务的音讯队列实现分布式事务的架构图,以及上游服务和上游服务如何保障音讯可靠性和一致性。
  • 其实归根到底就是分布式事务的数据一致性解决方案,失败了数据怎么回滚
  • 分布式事务如何保障?
  • 分布式事务的原理,如何应用分布式事务
  • 以及分布式事务实践和解决方案
  • MySQL索引原理、联结索引、索引注意事项、慢查问排查 雪花算法原理 MySQL IN的原理,如何优化 分库分表如何操作 分布式事务的几种模式
  • 对分布式事务的了解
  • 一. 数据库 1.应用mysq1索引都有哪些准则?索引什么数据结构?B+tree和Btree什么区别? 2.mysq有哪些存储引擎啊?都有啥区别? 3.设计高并发零碎数据库层面该怎么设计?数据库锁有哪些类型?如何实现呀? 4.数据库事务有哪些? 二. 分库分表 1.如何设计能够动静扩容缩容的分库分表计划? 2.用过哪些分库分表中间件,有啥长处和毛病, 3.讲一下你理解的分库分表中间件的底层实现原理? 4.我当初有一个未分库分表的零碎,当前零碎需分库分表,如何设计, 5.让未分库分表的零碎动静切换到分库分表的零碎上? 6.分布式事务晓得吗?你们怎么解决的?TCC?那若呈现网络起因,网络连不通怎么办啊 7.为什么要分库分表啊? 8.分布式寻址形式都有哪些算法?晓得一致性hash吗? 9.手写一下java实现代码?你若userId取摸分片,那我要查段间断工夫里的数据怎么办? 10.如何解决分库分表主键问题?有什么实现计划?
  • 6、分布式事务的解决方案? 一、两阶段提交(2PC) 两阶段提交(Two-pha*mit,2PC),通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否要真正执行事务。 筹备阶段:协调者询问参与者事务是否执行胜利,参与者发回事务执行后果。 提交阶段:如果事务在每个参与者上都执行胜利,事务协调者发送告诉让参与者提交事务;否则,协调者发送告诉让参与者回滚事务。 二、弥补事务(TCC) TCC 其实就是采纳的弥补机制,其核心思想是:针对每个操作,都要注册一个与其对应的确认和弥补(撤销)操作。它分为三个阶段: Try 阶段次要是对业务零碎做检测及资源预留 Confirm 阶段次要是对业务零碎做确认提交,Try阶段执行胜利并开始执行 Confirm阶段时,默认 Confirm阶段是不会出错的。即:只有Try胜利,Confirm肯定胜利。 Cancel 阶段次要是在业务执行谬误,须要回滚的状态下执行的业务勾销,预留资源开释。 三、本地音讯表(异步确保) 本地音讯表与业务数据表处于同一个数据库中,这样就能利用本地事务来保障在对这两个表的操作满足事务个性,并且应用了音讯队列来保障最终一致性。 在分布式事务操作的一方实现写业务数据的操作之后向本地音讯表发送一个音讯,本地事务能保障这个音讯肯定会被写入本地音讯表中。 之后将本地音讯表中的音讯转发到 Kafka 等音讯队列中,如果转发胜利则将音讯从本地音讯表中删除,否则持续从新转发。 在分布式事务操作的另一方从音讯队列中读取一个音讯,并执行音讯中的操作。 四、MQ 事务音讯 第一阶段Prepared音讯,会拿到音讯的地址。 第二阶段执行本地事务,第三阶段通过第一阶段拿到的地址去拜访音讯,并批改状态。 答案只是集体的一些观点,有不对的欢送指出来。
  • 分布式事务的各种计划及你的最佳计划
  • 分布式事务(常常被问到) 1、两阶段提交(2PC) 第一阶段:事务协调器要求每个波及到事务的数据库预提交(precommit)此操作,并反映是否能够提交. 第二阶段:事务协调器要求每个数据库提交数据。 长处: 尽量保障了数据的强统一,适宜对数据强统一要求很高的要害畛域。(其实也不能100%保障强统一) 毛病: 实现简单,就义了可用性,对性能影响较大,不适宜高并发高性能场景,如果分布式系统跨接口调用,目前 .NET 界还没有实现计划。 2、弥补事务(TCC) 针对每个操作,都要注册一个与其对应的确认和弥补(撤销)。Try、Confirm、Cancel 长处: 跟2PC比起来,实现以及流程绝对简略了一些,但数据的一致性比2PC也要差一些 毛病: 毛病还是比拟显著的,在2,3步中都有可能失败。TCC属于应用层的一种弥补形式,所以须要程序员在实现的时候多写很多弥补的代码,在一些场景中,一些业务流程可能用TCC不太好定义及解决。 3、本地音讯表(异步确保) 核心思想是将分布式事务拆分老本地事务进行解决,音讯生产方,须要额定建一个音讯表,并记录音讯发送状态。音讯表和业务数据要在一个事务里提交,也就是说他们要在一个数据库外面。而后音讯会通过MQ发送到音讯的生产方。如果音讯发送失败,会进行重试发送。 长处: 一种十分经典的实现,防止了分布式事务,实现了最终一致性。
欢送搜寻关注自己与敌人共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】