面试题:事务并发可能会导致哪些问题,数据库的隔离级别有哪些,mysql默认的是哪种级别,这种默认的隔离级别能够避免哪些问题?...举个例子,A在一个转账事务中,转了100块钱给B,此时B读到了这个转账的数据,然后做了一些操作(发货给A,或者其他的),可是这时候A的事务并没有提交,如果A回滚了事务,那就GG了。这就是脏读了。...例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。...而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。...由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率。
、文章阅读、点赞) 基数计算 GEO计算 Redis功能特点都有哪些 持久化 丰富的数据类型(string、list、hash、set、zset、发布订阅等) 高可用方案(哨兵、集群、主从) 事务 丰富的客户端...提供事务 消息发布订阅 Geo HyperLogLog 事务 分布式事务锁 Redis的数据类型都有哪些 有五种基本数据类型,分别是string、hash、list、有序集合(zset)、集合(set...Redis底层数据结构有哪些 Redis底层数据结构主要有六种,这六种构成了五种常用的数据类型。其他的数据类型,例如bitmap、hyperLogLog也是基于这五大数据类型实现。...队列中的命令没有提交(exec)之前,都不会实际被执行,因为事务提交前任何指令都不会被实际执行。 事务中如果有一条命令执行失败,后续的命令仍然会被执行,没有回滚。...Redis如何实现距离检索功能 实现距离检索,可以使用Redis中的GEO数据类型。GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
非原子性操作指的的setnx命令执行成功,但是expire没有执行成功,此时key就成为了一个无过期时间的key,一直保留在Redis中,导致其他的请求就无法执行。...Redis底层数据结构有哪些 Redis底层数据结构主要有六种,这六种构成了五种常用的数据类型。其他的数据类型,例如bitmap、hyperLogLog也是基于这五大数据类型实现。...队列中的命令没有提交(exec)之前,都不会实际被执行,因为事务提交前任何指令都不会被实际执行。 事务中如果有一条命令执行失败,后续的命令仍然会被执行,没有回滚。...Redis如何实现距离检索功能 实现距离检索,可以使用Redis中的GEO数据类型。GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。...如果出现消息处理失败,需要手动回滚消息。 发布订阅可以实现多个消费者功能,但是发布订阅无法实现数据持久化,容易导致数据丢失。并且开启一个订阅者无法获取到之前的数据。
,如果在这过程中实现失败,那么Sagas工作流引擎就会以相反的顺序调用补偿操作,重新进行业务回滚。...3.设计高并发系统数据库层面该怎么设计?数据库锁有哪些类型?如何实现呀? 4.数据库事务有哪些? 二. 分库分表 1.如何设计可以动态扩容缩容的分库分表方案?...----------这是针对并发量过大导致单机存储容量、连接数、处理能力瓶颈问题。...什么是TCC,它的工作过程? TCC 和 XA 的区别? 如果让你优化XA,你会如何优化? 分布式事务了解吗?你们项目中都用到了哪些分布式事务?都有哪些优缺点?...数据库锁有哪些类型?如何实现呀? 4.数据库事务有哪些? 二. 分库分表 1.如何设计可以动态扩容缩容的分库分表方案?
在消费者方面,目前的消息确认是尽力而为的操作,并不能确保消息一定被确认成功,如果消息确认失败,这将导致消息重新投递,消费者将收到重复的消息, Pulsar 只能保证消费者至少消费一次。...TC用于处理来自Pulsar Client的事务请求以跟踪其事务状态的模块。每个TC都有一个 唯一id (TCID) 标识,TC之间独立维护自己的事务元数据存储。...因为消息确认是幂等操作,如果Broker不慎宕机,只需要把redo log中的操作重新执行一遍。当订阅中的消息被真正确认掉后,pendingAckStore中对应的redo log也可以被清理了。...TC的日志中保存了Producer的消息要发往哪些Partition,也保存了Consumer会Ack哪些Partition。RM分散在每个Broker上,记录了整个事务中发送的消息和要确认的消息。...当事务结束时,TC则以TCID为key,找到所有的元数据,通过元数据得知需要通知哪些Broker上的RM,最后发起广播,通知这些Broker上的RM,事务需要提交/回滚。
Mysql MySQL数据库的面试题你遇过多少 你知道Mysql事务的四大特性不,简单说下 事务的四大特性ACID 原子性Atomicity: 一个事务必须被事务不可分割的最小工作单元,整个操作要么全部成功...: 一旦事务提交,则其所做的修改就会永久保存到数据库中。...重启数据库会进行redo log执行重做,到达事务一致性 undo 回滚日志 作用:保证数据的原子性,记录事务发生之前的数据的一个版本,用于回滚。...从库也执相应的操作,并在从库上计算相同数据块的checksum,然后对比主从中各个表的checksum是否一致并存储到数据库,最后通过存储校验结果的表就可以判断出哪些表的数据不一致 pt-table-sync...记得加上limit 用模糊查询时,%放在前面是会使索引失效 要小心条件字段类型的转换 进阶 哪些情况不适合使用索引 重复数据较多的列 比如性别 存储null的字段 因为排序机制 说说哪些情况会导致索引失效
2、PAAS(平台即服务) PaaS 是一种云服务类型,其中供应商不但提供按需硬件和操作系统服务,而且还提供应用程序平台和解决方案堆栈。...但为了在可控的系统中保持线程数,GAE 会强迫任何应用程序发起的连接在 5 到 10 秒后关闭。这使 GAE 成为不可靠混合类型应用程序平台。...但是关系数据库难于扩展是出了名的。要解决此问题,Google 的研究人员开发了一个名为 BigTable 的替代数据存储解决方案,它是 NoSQL 数据库世界中的数据存储解决方案之一。...虽然由于您在本地计算机上测试应用程序而导致 SDK 可为自动生成索引配置文件提供工具,但是如果您没有手动地详尽测试所有执行路径,那么您可能会一直错过索引。...然而,也像 GAE 那样,如果应用程序长时间处于不活动状态,那么 RUN@Cloud 可以将您的 JVM 交换出内存。这可能会导致对第一个请求的缓慢响应,就像应用程序在 “预热”。
Redis有哪些数据结构?其底层是怎么实现的? Redis 系列(一):深入了解 Redis 数据类型和底层数据结构 字符串(String): 用于存储文本或二进制数据。...分布式系统中的节点失效: 在分布式缓存环境下,如果一个或多个缓存节点失效,会导致请求无法命中缓存,从而打到后端数据库。...在执行过程中,Redis会将事务队列中的命令依次执行,如果其中的某个命令执行失败,不会影响其他命令的执行。...事务执行结果: EXEC命令执行完成后,Redis会返回事务中所有命令的执行结果,以数组形式返回。如果事务中的某个命令执行失败,对应的结果将是错误信息。...需要注意的是,虽然Redis事务提供了一种封装多个命令的方式,但是由于Redis的单线程模型,事务中的某些命令可能会因为特定的情况(如阻塞操作)导致整个事务执行的时间较长。
否则纷繁的技术名词,各种支持方案,会让人眼花缭乱。...关联配套:一个在PaaS上运行的程序,是完成不了太多的任务的,起码需要有一个数据库之类的存储软件。...实际上的商业应用中,除了数据库以外,还可能需要大量其他的配套程序,才能让你的业务逻辑程序运行完整,比如Memcache,甚至Crontab这样的程序。...[1510126612623_3876_1510126658083.jpg] 关联配套 GAE提供的配套服务,都是那些大名鼎鼎的Google系基础服务,分为两大类型,数十种细类: 存储服务 App...,最值得关注就是存储类服务,毕竟Google是处理大数据的互联网鼻祖。
大家好,我是Tom哥~ 为了便于大家查找问题,了解全貌,整理个目录,我们可以快速全局了解关于mysql数据库,面试官一般喜欢问哪些问题 接下来,我们逐条来看看每个问题及答案 MyISAM 和 InnoDB...InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁,并发能力低。MySQL 将默认存储引擎是 InnoDB mysql 锁有哪些类型?...比如两个更新数据的事务,事务 A 更新数据的顺序为 1,2;事务 B 更新数据的顺序为 2,1。这样更可能会造成死锁。 在并发比较高的系统中,不要显式加锁,特别是是在事务里显式加锁。...更多内容,参考 mysql 一棵 B+ 树能存多少条数据? 事务的特性有哪些? 答案:ACID。 原子性。一个事务中的操作要么全部成功,要么全部失败。 持久性。永久保存在数据库中。 一致性。...答案: master主库,有数据更新,将此次更新的事件类型写入到主库的binlog文件中 主库会创建log dump 线程通知slave有数据更新 slave,向master节点的 log dump线程请求一份指定
ACID其实是事务特性的英文首字母缩写,具体的含义是这样的: 原子性(atomicity) 一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说...但如果该事务需要回滚,非事务型的表上的变更就无法撤销,这会导致数据库处于不一致的状态,这种情况很难修复,事务的最终结果将无法确定。所以,为每张表选择合适的存储引擎非常重要。...MySQL存储引擎类型有哪些? 最常用的存储引擎是InnoDB引擎和MyISAM存储引擎,InnoDB是MySQL的默认事务引擎。...查看数据库表当前支持的引擎 : show table status from 'your_db_name' where name='your_table_name'; 查询结果表中的`Engine`字段指示存储引擎类型...但是和事务恢复以及崩溃恢复不同,可能导致一些「数据丢失」,而且修复操作是非常慢的。
redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库...12、redis事物的了解CAS(check-and-set 操作实现乐观锁 )? 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制。...相信对有关系型数据库开发经验的开发者而言这一概念并不陌生,即便如此,我们还是会简要的列出 Redis中 事务的实现特征: 12.1 在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,Redis不会再为其它客户端的请求提供任何服务...12.2 和关系型数据库中的事务相比,在Redis事务中如果有某一条命令执行失败,其后的命令仍然会被继续执行。...因为bgsave会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要aof来配合使用。
个人建议先了解 Elasticsearch 的适用场景以及不适用场景,这样能清楚 Elastic Stack 技术栈更适合哪些业务需求。 例如,咱们文章之前图解的六大应用场景是非常适合的。...Elasticsearch 主要侧重于全文搜索和数据聚合,不支持复杂的事务和多表关联操作。 在关系数据库中,我们可以使用复杂的 SQL 查询、事务和多表关联操作来保证数据的一致性和完整性。...(更新订单状态、减少库存和记录客户活动)要么全部成功,要么全部失败,从而保证数据的一致性(事务的本质)。...4、 误用 Elasticsearch 的潜在问题 将 Elasticsearch 当作关系数据库使用可能会导致以下问题: 4.1 问题1:性能不佳 复杂的事务和多表关联操作会显著降低 Elasticsearch...4.3 问题3:索引膨胀 由于 Elasticsearch 的文档存储方式,频繁的更新操作可能导致索引膨胀,增加存储和管理的复杂性。
其他还有一些数据库中间件例如 Vitess 等,使用不算广泛,了解即可。 数据库 对于数据库相关知识点,首先需要知道不同类型的数据库。...这个级别可以解决脏读和不可重复读的问题。MySQL 默认的隔离级别就是可重复读。 最后一个隔离级别是串行化,这是最高的隔离级别,所有事务操作都依次顺序执行。这个级别会导致并发度下降,性能最差。...通过在事务中插入保存点,当操作失败后,可以选择回滚到最近的保存点处。 第三种事务是链事务,可以看做是第二种事务的变种。...一般场景下两段式提交已经能够很好得解决分布式事务了,然而两阶段在即使只有一个进程发生故障时,也会导致整个系统存在较长时间的阻塞。...基本思路是将本地操作和发送消息放在一个事务中,保证本地操作和消息发送要么都成功要么都失败。下游应用订阅消息,收到消息后执行对应操作。
数据库的字段进行更新,缓存中的存储结构未进行更新。 测试方法: 了解缓存内容,对数据进行操作;操作后缓存相应展示页面查看(一般前台页面查询时会体现。...如数据库结构发生变化,需测试缓存中数据的存储 2.2、缓存失效性 有些关键数据放缓存中是有失效性的,需根据具体业务去了解相关失效性,还是永远存储。...(测试重点,日常类似问题会很多) 测试方法: 测试时模拟事务正常返回失败时的系统处理机制; 测试时,对数据库:做手脚,如事物中要进行数据库更新,则可对该数据进行行锁、或删除数据、或试数据状态无效,导致事务某一操作失败...; 此时在A.B两个机器上的操作员对使用积分的购物同时点击【提交】 正确的结果是:应该只有一方成功,另一方给出合理提示信息; 但处理不当就会导致:两个都成功,用户积分为负值 飞机订票系统中的一个活动序列...1) 金额极值测试,尤其和外围第三方交互过程中,对于大额度传输的测试。(传输类型不一致,会导致大金额成科学技术,会让千万以上数据按各位处理) 测试方法: 常规边界值,了解一些不同数据类型的处理格式。
大家好,我是 Tom哥~ 马上要开启国庆小长假了,祝大家节日快乐,吃喝玩乐走起~ 为了便于大家查找问题,了解全貌,整理个目录,我们可以快速全局了解关于消息队列,面试官一般会问哪些问题。...Tom哥之前带的团队就有小伙伴出现这个问题,当时是数据库的一条sql没有命中索引,导致单条消息处理耗时拉长,进而导致消息堆积,线上报警,不过凭我们丰富的经验,很快就定位解决了。...如何保证数据一致性问题? 答案:为了解耦,引入异步消息机制。先进行本地数据库操作,处理成功后,再发送MQ消息,由消费端进行后续操作。比如:电商订单下单成功后,要通知扣减库存。...这两者一定要保证事务操作,否则就会出现数据不一致问题。这时候,我们就需要引入事务消息来解决这个问题。 另外,在消费环节,也可能出现数据不一致情况。我们可以采用最终一致性原则,增加重试机制。...答案: 1、消息的批量处理 2、消息压缩,节省传输带宽和存储空间 3、零拷贝 4、磁盘的顺序写入 5、page cache 页缓存,由操作系统异步将缓存中的数据刷到磁盘,以及高效的内存读取 6、分区设计
合理使用覆盖索引、避免在索引列上使用函数操作等,都可以有效减少查询的开销。 优化SQL语句 面试官:你平时对SQL语句做了哪些优化呢? 候选人:对SQL语句的优化可以极大地提升数据库性能。...我们可以通过一个例子来说明这些特性,比如进行转账操作,事务要么全部成功,要么全部失败,确保数据一致性。隔离性保证了并发事务的隔离,避免相互干扰。持久性确保事务提交后,数据得到持久化存储。...并发事务的问题与解决 面试官:并发事务带来哪些问题? 候选人:并发事务可能导致脏读、不可重复读和幻读等问题。脏读是因为一个事务修改数据还未提交,另一个事务读取到了未提交的数据。...不可重复读是一个事务内多次读取同一数据,但在读取过程中另一个事务修改了数据。幻读则是一个事务内读取一系列数据,在读取过程中另一个事务插入了新数据,导致读取结果不一致。 面试官:怎么解决这些问题呢?...我们采用了分片和中间件来实现数据的分布存储。 通过这些问题和解答,我们深入了解了在MySQL数据库面试中关于表的创建、索引、优化、事务、隔离级别、日志和分库分表等方面的问题和技巧。
如果字段类型和长度不够,有些数据可能会保存失败。如果字段类型和长度太大了,又会浪费存储空间。我们在工作中,要根据实际情况而定。...这种情况数据会直接回滚,A,B,C三张表的数据都会同时保存失败。...建议优先使用TransactionTemplate的编程式事务的方式创建事务。此外,引入事务还会带来大事务问题,可能会导致接口超时,或者出现数据库死锁的问题。...Double类型的两个参数相减会转换成二进制,因为Double有效位数为16位这就会出现存储小数位数不够的情况,这种情况下就会出现误差。...通过阅读源码,可以真正的了解某个技术的底层原理是什么,这些开源项目有哪些好的设计思想,有哪些巧妙的编码技巧,使用了哪些优秀的设计模式,可能会出现什么问题等等。当然阅读源码是一个很枯燥的过程。
索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。 12.数据库中的事务是什么?...事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。...如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。ACID 四大特性,原子性、隔离性、一致性、持久性。...或者这样理解: 事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。...但是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。 (2)优化字段的数据类型 记住一个原则,越小的列会越快。
2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。...1.速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) 2.支持丰富数据类型,支持string,list,set,sorted set,hash...12.redis事物的了解CAS(check-and-set 操作实现乐观锁 )? 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制。...相信对有关系型数据库开发经验的开发者而言这一概念并不陌生,即便如此,我们还是会简要的列出 Redis中事务的实现特征 : 1.在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,Redis不会再为其它客户端的请求提供任何服务...2.和关系型数据库中的事务相比,在Redis事务中如果有某一条命令执行失败,其后的命令仍然会被继续执行。
领取专属 10元无门槛券
手把手带您无忧上云