摘要:转自:http://www.jianshu.com/p/007bd7029faf 简单锁 在讲述简单锁的实现之前,我们先来看一个锁的应用例子: public class Counter{ private Lock lock = new Lock(); private int count = 0; p
阅读全文
lotus贵有恒何必三更眠五更起 最无益只怕一日曝十日寒 |
|
11 2020 档案
摘要:转自:http://www.jianshu.com/p/007bd7029faf 简单锁 在讲述简单锁的实现之前,我们先来看一个锁的应用例子: public class Counter{ private Lock lock = new Lock(); private int count = 0; p
阅读全文
摘要:目录 1、什么是IO多路复用?2、为什么出现IO多路复用机制?3、IO多路复用的三种实现方式4、select函数接口5、select使用示例6、select缺点7、poll函数接口8、poll使用示例9、poll缺点10、epoll函数接口11、epoll使用示例12、epoll缺点13、epoll
阅读全文
摘要:引入 读这篇文章之前请先阅读:浅析服务器并发IO性能提升之路—从网络编程基础到epoll,以更好的理解本文的内容,谢谢。我们知道,我们在使用redis的时候,通过客户端发送一个get命令,就能够得到redis服务端返回的数据。redis是基于传统的C/S架构实现的。它通过监听一个TCP端口(6379
阅读全文
摘要:Redis性能为什么这么好?IO多路复用模型从底层了解下 前言 当我们去面试的时候,问到了 redis,nginx,netty他们的底层模型分别是什么? ❝ redis -> epoll nginx -> epoll netty -> epoll ❞ 需要从操作系统的层面上来谈 BIO 当我们开机的
阅读全文
摘要:上一篇我们讲了Java中的数组,其实是为本章的内容做准备的,String这个类是我们在写Java代码中用得最多的一个类,没有之一,今天我们就讲讲它,我们打开String这个类的源码: 声明了一个char[]数组,变量名value,声明了一个int类型的变量hash(hash的作用我们后续会讲),话不
阅读全文
摘要:ArrayList部分一共五篇文章了,并且引入了时间复杂度来分析,强烈建议大家一定要按顺序阅读,本文是第2篇,相关文章分别是: 1、ArrayList初始化 - Java那些事儿专栏 再次强调,ArrayList是一个普通的类,如果我们开心,可以自己写一个。 ArrayList初始化 - Java那
阅读全文
摘要:ArrayList初始化 - Java那些事儿 ArrayList部分一共五篇文章了,并且引入了时间复杂度来分析,强烈建议大家一定要按顺序阅读,本文是第1篇。 前些天的文章,反复的画图,不停的重复,就是想让大家理解,对象在内存中是什么样的。也是为今天的及以后的讲解打下基础。如果要说大家在写Java代
阅读全文
摘要:hashmap的扩容因子是0.75 原因 参考:HashMap默认加载因子为什么选择0.75?(阿里) 阿里的人问 数组的时间复杂度是多少,链表的是多少,hashmap的时间复杂度是多少。。。。。 后来才知道,时间复杂度是要区分 增删改查的。。。。主要看查询的时间复杂度; 1、数组 查询的时间复杂度
阅读全文
摘要:name时间复杂度 ArrayList :根据下标查询 :arr[10] O(1) ArrayList :根据内容查询 :for循环遍历 O(n) ArrayList底层是j基于数组实现 linkedList底层是基于 链表实现 LinkedList查询 无论下标还是内容都是 O(1) JDK7 h
阅读全文
摘要:Hashtable 初始容量是11 ,扩容 方式为2N+1; HashMap 初始容量是16,扩容方式为2N; 阿里的人突然问我为啥扩容因子是0.75,回来总结了一下; 提高空间利用率和 减少查询成本的折中,主要是泊松分布,0.75的话碰撞最小, HashMap有两个参数影响其性能:初始容量和加载因
阅读全文
摘要:一、现代CPU模式 现代一个CPU中,可以有多个运行核心(称之为物理核),每个物理核都有自己独立的一级缓存(L1)和二级缓存(L2)。并且每个物理核一般会有两个超线程(称之为逻辑核);同一个物理核下的两个逻辑核同享L1和L2缓存。并且现在机器主流都是多CPU处理器结构(CPU Socket),每个C
阅读全文
摘要:场景 假设有这样一个使用场景,依次执行下面的5条命令 命令1:hset mall:sale:freq:ctrl:860000000000001 599055114591 1(hash结构,field表示购买的商品ID,value表示购买次数)简单说明:mall:sale:freq:ctrl:8600
阅读全文
摘要:1、尽量使用短的key 当然在精简的同时,不要为了key的“见名知意”。对于value有些也可精简,比如性别使用0、1。 2、避免使用keys * keys *, 这个命令是阻塞的,即操作执行期间,其它任何命令在你的实例中都无法执行。当redis中key数据量小时到无所谓,数据量大就很糟糕了。所以我
阅读全文
摘要:在一些网络服务的系统中,Redis 的性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题。比如微博,把热点微博[1],最新的用户关系[2],都存储在 Redis 中,大量的查询击中 Redis,而不走 MySQL。 那么,针对 Redis 服务,我们能做哪些性能优化呢?或者说,应该避免哪些性
阅读全文
摘要:内存诊断 内存使用率是Redis服务最关键的一部分。 如果Redis实例的内存使用率超过最大可用内存,即“used_memory”>最大可用内存,那么操作系统会将内存与Swap空间交换,把内存中旧的或不再使用的内容写入硬盘上的Swap分区,以便留出新的物理内存给新页或活动页(page)使用。 通过查
阅读全文
摘要:在一些网络服务的系统中,Redis 的性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题。比如微博,把热点微博[1],最新的用户关系,都存储在 Redis 中,大量的查询击中 Redis,而不走 MySQL。 那么,针对 Redis 服务,我们能做哪些性能优化呢?或者说,应该避免哪些性能浪费
阅读全文
摘要:Redis 是基于单线程模型实现的,也就是 Redis 是使用一个线程来处理所有的客户端请求的,尽管 Redis 使用了非阻塞式 IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是 O(1)),但由于 Redis 是单线程执行的特点,因此它对性能的要求更加苛刻,本文我们将通过一些优化手段,
阅读全文
摘要:架构师小秘圈 2020-11-20 11:23:00 14 收藏 文章标签: 数据库 字符串 数据结构 算法 python 版权 - 01、不一样的Redis - 提到Redis,大家一定会想到的几个点是什么呢? 高并发、KV存储、内存数据库、丰富的数据结构、单线程(版本6之前)等。 那么,接下来,
阅读全文
摘要:关于 Redis 的使用,大家应该已经不陌生了,我也介绍过 Redis 的使用、数据结构、使用场景分析,既然 Redis 这个强大,那么架构中引入了 Redis 之后,是不是就“无敌”了呢? 其实所有的架构、框架、组件,在解决一部分问题的同时,同样也会带来新的问题,让我们看看使用 Redis 可能会
阅读全文
摘要:关于Redis的知识总结了一个脑图分享给大家 1、在项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果? 面试官心理分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。 只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用
阅读全文
摘要:redis 简介 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务
阅读全文
摘要:基于支付标记化项目 近年来,互联网金融公司飞速发展,无论是业务还是技术都较传统银行业有所区别,比如一年一度的双十一给银行业无疑带来了很大的压力,作为传统的银行业如何来从技术上着手,从而构建处理速度快、系统稳定性高的业务系统,是银行业面临的一大问题。 众所周知,数据库在业务系统中占据了非常重要的地位,
阅读全文
摘要:目录 1.方式一:先更新数据库,再更新缓存场景 2.方式二:先更新缓存,再更新数据库场景 3.方式三:先删除缓存,再更新数据库的场景 4.方式四:先更新数据库,在删除缓存场景 5.方式五:最佳实现,数据异步同步 返回目录 1.方式一:先更新数据库,再更新缓存场景 当有两个线程A、B,同时对一条数据进
阅读全文
摘要:一、缓存雪崩 1.1 什么是缓存雪崩 回顾一下我们为什么要用缓存(redis): 现在有个问题,如果我们的缓存挂掉了,这意味着我们的全部请求都跑去数据库了。 在前面学习我们都知道redis不可能把所有的数据都缓存起来(内存昂贵且有限),所以redis需要对数据设置过期时间,并采用的是惰性删除+定期删
阅读全文
摘要:Redis CAP理论 一致性(Consistency):从数据层面来看的一致性 可用性(Availability):从系统层面的可用性 分区容错性(Partition tolerance):从网络层面的容错性 随着读多写少场景的出现,导致需要读取数据的时间变慢,为了提升性能,出现了数据库缓存技术,
阅读全文
摘要:哨兵主要针对单节点故障无法自动恢复的解决方案,集群主要针对单节点容量、并发问题、线性可扩展性的解决方案。本文使用官方提供的redis cluster。文末有你们想要的设置ssh背景哦! 本文主要围绕如下几个方面介绍集群 集群简介 集群作用 配置集群 手动、自动故障转移 故障转移原理 本文实现环境 c
阅读全文
摘要:作为一名服务端工程师,工作中你肯定和 Redis 打过交道。Redis 为什么快,这点想必你也知道,至少为了面试也做过准备。很多人知道 Redis 快仅仅因为它是基于内存实现的,对于其它原因倒是模棱两可。 那么今天就和小莱一起看看: 基于内存实现 这点在一开始就提到过了,这里再简单说说。 Redis
阅读全文
摘要:前言 我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之快。但我们在开发过程中,这两个内存数据库,我们到底要如何选择呢?它们的优劣都有哪些?为什么现在看Redis要比Memcached更火一些? 这篇文章,我们就从各个方面来对比这两个内存数据库的差异,方便你在使用时,做出
阅读全文
摘要:Redis 系列: Redis系列(一)Redis入门 Redis系列(二)Redis的8种数据类型 Redis系列(三)Redis的事务和Spring Boot整合 Redis系列(四)Redis配置文件和持久化 Redis系列(五)发布订阅模式、主从复制和哨兵模式 Redis系列(六)Redis
阅读全文
摘要:NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。 Redis 系列: Redis系列(一)Redis入门 Redis系列(二)Redis的8种数据类型
阅读全文
摘要:NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。 Redis 系列: Redis系列(一)Redis入门 Redis系列(二)Redis的8种数据类型
阅读全文
摘要:NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。 Redis 系列: Redis系列(一)Redis入门 Redis系列(二)Redis的8种数据类型
阅读全文
摘要:NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。 Redis 系列: Redis系列(一)Redis入门 Redis系列(二)Redis的8种数据类型
阅读全文
摘要:NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。 Redis 系列: Redis系列(一)Redis入门 Redis系列(二)Redis的8种数据类型
阅读全文
摘要:NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。 Redis系列(一)Redis入门 Redis系列(二)Redis的8种数据类型 Redis系列(三
阅读全文
摘要:转自 https://javadoop.com/2017/09/05/java-thread-pool/hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 我相信大家都看过很多的关于线程池的文章,基本上也是面试必问的,好像我写这篇文
阅读全文
摘要:前言 很多时候,我都想向大家传输一个思想,那就是只有懂了原理,才能随心随心所欲写代码.而看源码,又是了解原理的一个非常重要的途径. 然而,肥朝之前的文章,大致分为三类 源码解析,穿插怎么看源码(参考肥朝Dubbo源码解析系列文章) 怎么临摹一个一比一的源码(参考肥朝dubbo源码解析-简单原理、与s
阅读全文
摘要:文章目录 一. JSR 166及J.U.C 1.什么是JSR: 2.什么是JCP 3. 什么是openJDK 4.什么是JSR 166 5.什么是J.U.C 二.本文目的 三.对线程池的认识 1.线程池是什么 2.队列是什么 3.为什么要使用线程池 4.个人认识 四.自己编写一个线程池 1.创建线程
阅读全文
摘要:问题 (1)自己动手写的线程池如何支持带返回值的任务呢? (2)如果任务执行的过程中抛出异常了该怎么处理呢? 简介 上一章我们自己动手写了一个线程池,但是它是不支持带返回值的任务的,那么,我们自己能否实现呢?必须可以,今天我们就一起来实现带返回值任务的线程池。 前情回顾 首先,让我们先回顾一下上一章
阅读全文
摘要:问题 (1)自己动手写一个线程池需要考虑哪些因素? (2)自己动手写的线程池如何测试? 简介 线程池是Java并发编程中经常使用到的技术,那么自己如何动手写一个线程池呢?本文彤哥将手把手带你写一个可用的线程池。 属性分析 线程池,顾名思义它首先是一个“池”,这个池里面放的是线程,线程是用来执行任务的
阅读全文
摘要:前言 和设计模式一样,打算花三个月的时间,结合《Java并发编程实战》一书,来总结下并发方面的知识。第一章从线程池的原理开始总结,希望自己能坚持下来,加油! 1. 如何实现一个线程池? 线程池的概念这里不多说,在讲它的原理前,我们先自己想一下,如果我来写,那如何实现一个线程池? 1.1 线程池的重要
阅读全文
摘要:MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 事务:MySQL对于事务默认是不支持的,只有某些存储引擎中如:innodb可以支持。而Oracle对于事务是完全支
阅读全文
摘要:目录 系列目录 一、引子 1.1 背景 2.spring boot对jta的支持 二、简单样例 2.1 业务场景 2.2 简单样例 2.3 测试验证 正文 回到顶部 一、引子 1.1 背景 鉴于spring boot满天飞的大环境,本节样例使用Spring Boot+Atomikos(TM)+Myb
阅读全文
摘要:目录 系列目录 一、引子 二、概念 2.1.本地事务 2.2.分布式事务 2.3 相关协议发展历史 三、DTP模型 & XA规范 背景 3.1 DTP模型 3.1.1 模型元素 3.1.2 单应用跨库DTP 3.1.3 跨应用DTP 3.2 XA规范 3.2.1 xa_*()函数群 3.2.2 ax
阅读全文
摘要:1. 通过Executors创建线程池的弊端 在创建线程池的时候,大部分人还是会选择使用Executors去创建。 下面是创建定长线程池(FixedThreadPool)的一个例子,严格来说,当使用如下代码创建线程池时,是不符合编程规范的。 ExecutorService fixedThreadPo
阅读全文
摘要:文章目录 一、缓存队列 LinkedBlockingQueue 没有设置固定容量大小 1.1、Executors.newFixedThreadPool() 1.2、Executors.newSingleThreadExecutor() 总结: 二 、最大线程数量是 Integer.MAX_VALUE
阅读全文
摘要:线程池中重要的配置 corePoolSize : 核心线程数量 workQueue : 等待队列 maximumPoolSize : 最大线程数量 提交任务时,判断的顺序为 corePoolSize --> workQueue -->maximumPoolSize 当线程数小于核心线程数时,创建核心
阅读全文
摘要:项目中使用的线程池的地方很多,一直以来感觉对它的参数已经掌握的很好了,但是遇到几次问题之后才发现欠缺的这么多 遇到的坑 任务提交后长时间没有执行 任务进入了队列,线程还在执行之前的任务。本质原因是对线程和队列的优先级认识不深刻,有一种错觉以为是所有线程都忙的时候才进入任务队列。实际上相反,是队列满的
阅读全文
摘要:目录 系列目录 一、回顾 1.1 回顾 1.2 目标 二、灵魂问答 2.1.什么是事务? 2.2.什么时候需要加 本地事务/分布式事务? 2.3.本地事务如何实现? 2.4.分布式事务如何实现? 三、不足 一、回顾 1.1 回顾 分布式从来都不是简单的东西。为此写本系列文章也耗费了笔者大量脑细胞,从
阅读全文
摘要:目录 系列目录 引子 角色: 作用: 一、bean定义 1.1 JtaTransactionManager 1.2 AtomikosDataSourceBean 二、源码剖析 2.1 自动配置类 2.2 JtaAutoConfiguration 2.3 TransactionAutoConfigur
阅读全文
摘要:引子 从Mysql5开始,innoDB引擎支持XA协议的分布式事务。DTP模型中,一个TM(事务管理器管理)管理多个RM(资源管理器),每个RM维护自己的事务分支。在看源码之前我们看一下底层DB mysql对XA事务的支持。 回到顶部 1. XA语法 官网:13.3.8.1 XA Transacti
阅读全文
摘要:目录 系列目录 一、引子 二、JTA模型 分析 三、JTA接口 四、 AS对JTA的支持 4.1 典型场景 4.2 时序图 一、引子 既然出现了分布式场景(DTP模型), 大java也及时制定出一套规范来给各大应用服务器、数据库/mq等厂商使用,以方便管理互通 》JTA闪亮登场。JTA(Java T
阅读全文
摘要:简介: 这个对于我们常用的分库分表方案来说,有很大的优势,分库分表的扩容是一件头疼的问题,如果采用对db层做一致性hash,或是中间价的支持,它的成本过于高昂了,如果不如此,只能停机维护来处理,对高可用性会产生影响。 这个对于我们常用的分库分表方案来说,有很大的优势,分库分表的扩容是一件头疼的问题,
阅读全文
摘要:一般来说数据库是通过一个微服务逻辑统一访问,通常数据库访问两个库的架构图如下所示: 随着数据量的增大,数据库要进行水平切分,分库后将数据分布到不同的数据库实例(甚至物理机器)上,以达到降低数据量,增强性能的扩容目的。 如上图所示,用户库user分布在四个实例上,ip0和ip1,服务层通过用户标识ui
阅读全文
摘要:一、缘起 (1)并发量大,流量大的互联网架构,一般来说,数据库上层都有一个服务层,服务层记录了“业务库名”与“数据库实例”的映射关系,通过数据库连接池向数据库路由sql语句以执行: 如上图:服务层配置用户库user对应的数据库实例物理位置为ip(其实是一个内网域名)。 (2)随着数据量的增大,数据要
阅读全文
摘要:(1) 对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮(2) 分页查询 MySQL是直接在SQL语句中写"select... from ...where...limit x, y",有limit就可以实现分页
阅读全文
摘要:前言 大家好,我是哪吒!最近在重新整理 Spring 事务相关的内容,在看 Spring 事务传播行为这块内容的时候,发现了这篇优秀的文章,分享一下。 Spring 在 TransactionDefinition 接口中规定了 7 种类型的事务传播行为。事务传播行为是 Spring 框架独有的事务增
阅读全文
摘要:本文是我们分布式事务系列的第三篇,这篇文章来和大家捋一捋 Spring 框架中的事务体系。前面两篇文章大家可以参考: 分布式事务开局第一篇,从数据库事务隔离级别说起 分布式事务系列第二篇,回顾 Jdbc 事务 Spring 作为 Java 开发中的基础设施,对于事务也提供了很好的支持,总体上来说,S
阅读全文
摘要:引言 因为事务这块,面试的出现几率很高。而大家工作中 CRUD 的比较多,没有好好总结过这块的知识,因此面试容易支支吾吾答不出来。于是乎接下来你就会接到一张好人卡,如"你很优秀,不适合我们公司!" 主要内容如下: Spring 事务的原理; Spring 什么情况下进行事务回滚; Spring 事务
阅读全文
摘要:本文目标 理解Spring事务管理核心接口 理解Spring事务管理的核心逻辑 理解事务的传播类型及其实现原理 版本 SpringBoot 2.3.3.RELEASE 什么是事务的传播? Spring 除了封装了事务控制之外,还抽象出了 事务的传播 这个概念,事务的传播并不是关系型数据库所定义的,而
阅读全文
摘要:在经历的几轮面试中,每一轮都问到了事务相关的内容,让我越发感到事务的重要性。 如:MySQL事务隔离级别?分别解释下他们的含义,默认的事务隔离级别是什么,Oracle的呢?Spring事务传播级别?分别代表什么含义Spring事务是如何处理的?自己能写出来吗? 那么今天一起看一下Spring的事务处
阅读全文
摘要:1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们 帕蒂、道格、苏珊 每人一把。3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的
阅读全文
摘要:对于 sql 性能的判断,你是否还是通过百度,看看人家的博客,通过别人的回答 做出判断,或是凭自己的一点知识加上猜想呢?如果是,那么你将很被动,百度出来的经验我们无法判断是否正确,如果出了问题,可能就不知道怎么办了 。其实我们完全可以通过分析得到我们想要的答案。 分析需要工具,今天我就给大家介绍两个
阅读全文
摘要:基本概念 事务 由多个计算任务构成的一组具有明确边界的工作集合。事务当中可能包括接口访问、网络通信、数据获取和处理。严格的事务实现应该具备具有原子性、一致性、隔离性、持久性四个特性。 原子性(Atomicity):一个事务中的任务要么全部完成,要么全部失败。没有中间状态。 隔离性(Isolation
阅读全文
摘要:欢迎跳转到本文的原文链接:https://honeypps.com/architect/introduction-of-distributed-transaction/ 《分布式事务科普》是我在YiQing期间整理的一篇科普型文章,内容共计两万五千字左右,应该算是涵盖了这个领域的大多数知识点。篇幅较
阅读全文
摘要:朱小厮 2020-04-10 09:08:00 486 收藏 2 版权 点击上方“朱小厮的博客”,选择“设为星标” 后台回复"高效Java"领取《Effective Java第三版》 欢迎跳转到本文的原文链接:https://honeypps.com/architect/introduction-o
阅读全文
摘要:文章纲要 此次分享的缘由 目前分布式事务问题是怎么解决的 行业中有什么解决方案 这些解决方案分别有什么优缺点 别人是怎么做的 我们可以怎么来做 此次分享的缘由 支付重构 考虑支付重构的时候,自然想到原本属于一个本地事务中的处理,现在要跨应用了要怎么处理。拿充值订单举个栗子吧,假设:原本订单模块和账户
阅读全文
摘要:单库,多个数据要同时操作,如何保证数据的完整性,以及一致性? 答:事务。 举个栗子: 用户下了一个订单,需要修改余额表,订单表,流水表,于是会有类似的伪代码: start transaction; CURD table t_account; any Exception rollback; CURD
阅读全文
摘要:- 总述 - 咱们前面分别对分布式事务的几个分支:XA、2PC、3PC、TCC、Saga、事务消息、最大努力事务进行的详细介绍。本篇作为分布式事务设计的收尾篇,讲对前面的内容查缺补漏和总结,最后对市面的一些开源框架做一些介绍。 - 1. 补偿型事务 柔性事务分补偿型事务和通知型事务。但对补偿型事务没
阅读全文
摘要:来自:网易云 www.zhihu.com/question/64921387/answer/225784480 关于分布式事务,工程领域主要讨论的是强一致性和最终一致性的解决方案。典型方案包括: 两阶段提交(2PC, Two-phase Commit)方案 eBay 事件队列方案 TCC 补偿模式
阅读全文
摘要:背景 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免。 ACID 指数据库事务正确执行的四个基本要素: 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durabi
阅读全文
摘要:https://tech.meituan.com/2017/04/21/mt-leaf.html 背景 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据
阅读全文
摘要:前言:分区是指根据一定的规则,数据库把一个表分解成多个更小的,更容易管理的部分。分区对应用来说是完全透明的,不影响应用的业务逻辑。 MySQL分区的优点: 1、和单个磁盘或者文件系统分区相比,可以存储更多数据; 2、优化查询。在Where字句中包含分区条件时,可以只扫描必要的一个或多个分区来提高查询
阅读全文
摘要:文章目录 一,需求缘起: 二,解决什么问题? 三,mysql常见的水平切分方式有哪些? 四,什么是mysql的分库分表? 五,什么是mysql的分区表? 六,总结 一,需求缘起: 有个朋友问我分区表在我们公司的应用,我回答不出来,在我印象中,百度、腾讯都没有听说有分区表相关的应用,业内进行一些技术交
阅读全文
摘要:1、什么是表分区? mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看), 一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存表索引的。如果一张表的数据量太大的话,那么myd,
阅读全文
摘要:对用户来说,分区表示一个独立的逻辑表,但是底层由多个物理子表组成。 实现分区的代码实际上是对一组底层表的句柄对象的封装。对分区表的请求,都会通过句柄对象转换成对存储引擎的接口调用。 MYSQL 实现分区表的方式-》 对底层表的封装 -》意味着索引也是按照分区的子表定义,而没有全局索引。 分区的一个主
阅读全文
摘要:目录 一、查看MySQL是否支持分区 1、MySQL5.6以及之前版本 2、MySQL5.7 二、分区表的分类与限制 1、分区表分类 2、分区表限制 三、创建分区表 1、range分区 2、list分区 3、hash分区 4、key分区 5、Column分区 6、子分区(组合分区) 四、普通表转换为
阅读全文
摘要:一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。 数据库分布式核心
阅读全文
摘要:在谈论数据库架构和数据库优化的时候,我们经常会听到分库分表,分库分表其实涉及到很多难题,今天我们来汇总一下数据库分库分表解决方案。 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。 当单表的数据量达到 1000W 或 100G 以后,由于查询维度较多,即使添加从
阅读全文
摘要:之前有不少刚入坑 Java 的粉丝留言,想系统的学习一下分库分表相关技术,可我一直没下定决心搞,眼下赶上公司项目在使用 sharding-jdbc 对现有 MySQL 架构做分库分表的改造,所以借此机会出一系分库分表落地实践的文章,也算是自己对架构学习的一个总结。 我在网上陆陆续续的也看了一些有关于
阅读全文
摘要:目录 一.分分合合 1.1 分 2.2 合 二.分区 2.1 实现方式 2.2 内部文件 2.3 数据处理 三.分库分表 3.1 实现 3.2 分布式数据库中间件 3.3 内部文件 3.4 问题 四.总结 回到顶部 一.分分合合 说过很多次,不要拘泥于某一个技术的一点,技术是相通的。重要的是编程思
阅读全文
摘要:一、数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 1、IO瓶颈 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓
阅读全文
摘要:分区(加快访问速度) 什么时候分区? 一张表的查询速度已经慢到影响使用的时候。 sql经过优化 数据量大(表的大小超过2GB,一般单表撑死1000万条) 表中的数据是分段的(表中包含历史数据,新的数据被增加都新的分区中) 对数据的操作往往只涉及一部分数据,而不是所有的数据 从应用程序的角度来看,分区
阅读全文
摘要:一、概念 1.为什么要分表和分区?日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高
阅读全文
摘要:一. MYSQL的索引mysql中,不同的存储引擎对索引的实现方式不同,大致说下MyISAM和InnoDB两种存储引擎。MyISAM的B+Tree的叶子节点上的data,并不是数据本身,而是数据存放的地址。主索引和辅助索引没啥区别,只是主索引中的key一定得是唯一的。这里的索引都是非聚簇索引。MyI
阅读全文
摘要:聚集(clustered)索引,也叫聚簇索引 定义:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引。 注:第一列的地址表示该行数据在磁盘中的物理地址,后面三列才是我们SQL里面用的表里的列,其中id是主键,建立了聚集索引。 结合上面的表格就可以理解这句话了吧
阅读全文
摘要:知识点总结 1. 聚集索引和非聚集的最大区别 聚集索引和非聚集索引用的是B+树索引,区别在于聚集索引的叶子结点是数据,非聚集索引叶子结点存的是索引值以及聚集索引列数据。 2. 关于聚集索引特点 (1)一个表中只能拥有一个聚集索引 (2)MySQL里主键就是聚集索引,如果不创建主键,系统会自动创建一个
阅读全文
摘要:看了很多博客,也听过很多人说,包括我们公司的DBA,说MySql中如果某一列中含有null,那么包含该列的索引就无效了。 翻了下《高性能MySQL第二版》和《MySQL技术内幕——InnoDB存储引擎第2版》,并没有看到关于这个的介绍。但在本地试了下,null列是可以用到索引的,不管是单列索引还是联
阅读全文
|