db数据库
文章平均质量分 91
数据库知识
拽着尾巴的鱼儿
The harder you work, the luckier you are
展开
-
面试篇-Mysql-3+集群+分库分表
你知道Mysql 的集群吗,你了解主从复制的过程吗,当海量数据出现你们是怎么处理的。本文重点对面试的问题进行介绍,祝愿每位程序员都能上岸!!!本文对Mysql 集群,及分库分表的一些面试问题进行了梳理。原创 2024-07-12 14:07:21 · 924 阅读 · 0 评论 -
面试篇-Mysql-2+事务隔离级别的实现
你知道Mysql 的事务,事务底层的实现原理你知道吗,Spring 是怎么支持事务的。本文重点对面试的问题进行介绍,祝愿每位程序员都能上岸!!!其中mvcc的意思是多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,它的底层实现主要是分为了三个部分,第一个是隐藏字段,第二个是undolog日志,第三个是readView读视图;隐藏字段是指:在mysgl!中给每个表都设置了隐藏字段,有一个是tx_id(事务id),记录每一次操作的事务id,是自增的;原创 2024-07-12 14:06:54 · 996 阅读 · 0 评论 -
面试篇-Mysql-1+慢sql+索引
你们项目都使用过哪些关系型数据库,Mysql 用过吗,针对线上慢查询你们是怎么排查的,索引是什么,你们是怎么使用索引进行优化的。本文重点对面试的问题进行介绍,祝愿每位程序员都能上岸!!!本位对线上慢sql 的排查及优化,以及索引的一些面试问题进行总结。原创 2024-07-12 14:05:53 · 963 阅读 · 0 评论 -
阿里云轻量服务器--Docker--nacos 集群部署
本文对介绍通过docker 部署nacos 集群。本文环境linux centos7;本文对介绍通过docker 部署nacos 集。原创 2024-03-20 15:22:20 · 1289 阅读 · 0 评论 -
源码篇--Redis 内存策略
Redis之所以性能强,最主要的原因就是基于内存存储。然而单节点的Redis其内存大小不宜过大,会影响持久化或主从同步的性能;所以当内存使用达到上限时,就无法存储更多数据了 ,那么 redis 是怎么避免达到内存上限;Redis 内存中会采用各种策略来避免内存达到上限;处了定时任务 去清理已经过期的key ,当redis 内存达到上限 但是所以的key 都是有效时,redis 会通过 key 的淘汰策略 去筛选出一批合理的 key 进行删除 来释放内存。原创 2024-01-30 14:24:49 · 1035 阅读 · 0 评论 -
源码篇--Redis 通信协议
在我们知道redis 的网络模型后,继续看下 redis 的通信协议。Redis 使用 RESP 协议 进行客户端与服务端的通信,通过对数据进行不同的头部标识 来区分数据类型,通过长度来保证读取的完整性。原创 2024-01-30 14:24:28 · 1195 阅读 · 0 评论 -
源码篇--Redis 网络模型
知道了Redis 底层的数据结构,接下来看下 Redis 通信的网络模型。用户空间并不能直接的访问 系统资源,需要发送指令到内核空间,然后内核空间执行指令 从系统获取磁盘,然后将获取到的资源拷贝到用户空间,然后在从用户空间拷贝到用户空间;redis 内部使用IO多路复用,在linux 环境下,通过创建红黑树来监听多个socket 的fd 文件,并将就绪的fd 写入到就绪链表中;这样服务端就可以对就绪链表进行遍历;原创 2024-01-30 14:24:05 · 1309 阅读 · 0 评论 -
源码篇--Redis 底层数据结构
在项目中我们经常使用redis 作为数据库的前置层,从而加快数据的检索速度,而我们经常使用的五种数据接口它们底层是怎么实现的,本篇记录redis 中常见的几种数据结构。本文总结了 redis 底层使用的 7中数据结构,不同的数据结构的特点,来更好的支持数据的存入和读取。原创 2024-01-24 10:49:28 · 1115 阅读 · 0 评论 -
源码篇--Redis 五种数据类型
在源码篇–Redis 底层数据结构章节中介绍了redis 底层的数据结构,而底层的数据结构又是为了数据存储而设计的,那么redis 中我们都可以存入哪些数据类型呢?Redis 会根据不同数据类型底层采用不同的 数据结构进行保存,对于key 和value 来说,都会被封装成为一个redisobject 对象,key 是一个字符串的redisobject 对象其内部主要通过sds实现,value 会根据存储的数据不同而在redisobject 对象内部 使用进行实现;而。原创 2024-01-24 10:48:39 · 1122 阅读 · 0 评论 -
源码篇--Redisson 分布式锁lock的实现
我们知道Redis 缓存可以使用setNx来作为分布式锁,但是我们直接使用setNx 需要考虑锁过期的问题;此时我们可以使用Redisson 的lock 来实现分布式锁,那么lock 内部帮我们做了哪些工作呢。锁过期自动续时的触发条件是tryLock设置的锁到期时间leaseTime == -1;原创 2024-01-24 10:48:15 · 1260 阅读 · 0 评论 -
Springboot整合Canal -- Canal 多客户端
文章目录前言一、批量注册bean定义:1.1 定义Canal注解:1.2 canal bean定义注册:1.3 canal bean 生成:二、canal客户端获取mysql数据变动2.1 canal客户端2.2 消息处理总结参考前言在项目中如果想要多个Canal 客户端通过tcp直连接入Canal 服务端,显然需要定义多个连接不同实例的客户端,而每个客户端除了连接到的实例不同其它配置几乎都相同,如果定义多个客户端显然会造成很多重复代码,那么spring 中有什么办法可以批量定义canal客户端?原创 2024-01-16 14:38:50 · 1019 阅读 · 0 评论 -
Springboot整合Canal 实践经验
本文是Springboot整合Canal 实践过程中经验记录;canal 服务端定义的监听实例名称与数据库中的实例无关,通过建立一个实例并且在改实例中对instance.properties 设置连接的数据源,实际上可以监听到这个数据源下的所有mysql 实例库中所有表的数据变化;通过在客户端连接这个监听的实例,可以获取到该实例对应数据源下所有mysql 实例库中所有表的数据变化;原创 2024-01-16 14:38:22 · 1372 阅读 · 0 评论 -
集群部署篇--Redis 集群动态伸缩
在集群部署篇–Redis 集群分片模式中我们知道了如果去部署redis 的分片集群,本文继续结束下集群节点的增加和删除。Redis cluster 集群可以方便的通过集群命令进行节点的添加,槽位的分配,节点的下线操作。原创 2024-01-03 14:05:21 · 1365 阅读 · 0 评论 -
集群部署篇--Redis 集群分片模式
对于平常的业务往往使用redis 的哨兵模式就可以了,虽然redis 单台服务可以提供10W 的并发,但是对于并发量非常大的服务来说可能还不够,所以此时就需要对redis 进行分片集群;如果说依靠哨兵可以实现redis的高可用,如果还想在支持高并发同时容纳海量的数据,那就需要 redis 集群。redis 集群是 redis 提供的分布式数据存储方案,集群通过数据分片sharding来进行数据的共享,同时提供复制和故障转移的功能。原创 2023-12-29 17:05:51 · 1309 阅读 · 0 评论 -
集群部署篇--Redis 哨兵模式
虽然有了Reids 的主从模式,但是我们发现它的故障转移能力非常弱,所以在主从模式的基础之上有衍生出了哨兵模式。基于主从方案的缺点还是很明显的,假设 Master 宕机,那么就不能写入数据,那么 Slave 也就失去了作用,整个架构就不可用了,除非你手动切换,主要原因就是因为没有自动故障转移机制。而哨兵(sentinel)的功能比单纯的主从架构全面的多了,哨兵模式是一种特殊的模式,首先 Redis 提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它独立运行。原创 2023-12-29 16:55:29 · 2116 阅读 · 0 评论 -
集群部署篇--Redis 主从模式
显然在线上环境中 Redis 服务不能以单机的方式运行,必须有备份,来应对服务挂掉的情况,本文通过docker 完成 Redis 的主从模式部署;Redis主从架构是一种常见的数据复制和高可用性架构设计,它包括一个主节点和多个从节点。主节点负责接收写操作并将数据同步到所有从节点,而从节点则负责从主节点复制数据,并处理读请求。主节点是可读可写的,所有的写操作都在主节点进行处理,主节点将写操作的结果同步到所有从节点上。从节点是只读的,它们通过与主节点进行复制同步来保持数据一致性。原创 2023-12-29 16:55:07 · 1535 阅读 · 0 评论 -
Spring-Mybatis源码解析--手写代码实现Spring整合Mybatis
Spring 项目中我们只需要通过简单的注解及bean 定义就可以实现对Mybatis 的整合,便我们直接进行CRUD的,那么Spring 底层是如何对Mybatis进行处理的,本文通过手写代码实现Spring整合Mybatis。我们在启动类的配置文件ConfigMybatis 中来定义SqlSessionFactory 的bean;// 定义 SqlSessionFactory 方便通过 SqlSessionFactory 执行sql@Bean。原创 2023-11-30 15:09:04 · 130 阅读 · 0 评论 -
Spring-Mybatis源码解析--Mybatis配置文件解析
Spring 整合Mybatis 后,如何对其配置文件进行加载和解析,如何进行数据的CRUD。Spring 中主要通过 SqlSessionFactoryBuilder().build(reader) 方法完成 事务管理器,数据源以及sql 语句的解析和绑定,并将解析好的sql 放入到map 中,执行时通过key 获取具体的sql 语句交由执行器执行,然后返回执行结果。原创 2023-11-29 15:53:31 · 176 阅读 · 0 评论 -
Spring-boot Mybatis-plus 实战应用
Spring-boot 项目中引入了Mybatis-plus 后 应该怎样进行数据源的配置,怎样通过Mybatis-plus 的接口快速的实现CRUD。定义id 生成:(分布式全局唯一id 的设置可以参考我博客中的其他文章 搜索关键字"分布式全局唯一id" 查看)@Component@Override//可以将当前传入的class全类名来作为bizKey,或者提取参数来生成bizKey进行分布式Id调用生成.//根据bizKey调用分布式ID生成//返回生成的id值即可.return id;原创 2023-11-14 10:19:43 · 225 阅读 · 0 评论 -
MyBatis-Plus多数据源dynamic-datasource解决多数据源Redis Key 重复问题
在使用ynamic-datasource 因为多个租户共用一个系统,但是每个租户设置的缓存资源必须是隔离的,不然就会造成redis 缓存数据混乱的情况,如 租户1 设置key为name value 为张三的缓存,其他的租户因为缓存key 也是相同的,造成多租户缓存的数据没有做到隔离性。");} // 重要方法,在这里对key 的序列化完成自定义处理 ,追加数据源标识 public byte [ ] serialize(@Nullable String string) {原创 2023-10-11 10:35:59 · 344 阅读 · 0 评论 -
分库分表篇-2.4 springBoot 集成Mycat(1.6) 分库分表,读写分离,分布式事务
springboot 在整合mycat 之后,对于分库分表,读写分离,分布式事务 这些常用的业务处理是怎么实现的。以上就是今天要讲的内容,本文阐述了使用mycat 如何完成分库分表,配置读写分离,以及基于xa 事务实现分布式事务。原创 2023-09-01 10:00:47 · 580 阅读 · 0 评论 -
分库分表篇-2.3 springBoot 集成Mycat(1.6)
在springboot 项目中我们应该如何集成mycat 然后让其帮助我们进行数据的分库和分表处理呢。springBoot 集成mycat 只需要将之前连接db 的数据源修改为 mycat 即可,其它都不用修改;因为mycat1.6 版本使用了query_cache_size 参数,所以将mycat 服务端的对应jar 进行替换;原创 2023-09-01 10:00:10 · 376 阅读 · 0 评论 -
分库分表篇-2.2 Mycat-分片规则
对Mycat 的数据节点进行配置后,想要将数据路由到不同的库,不同的表,需要对tale 配置自己的分片规则。提示:以下是本篇文章正文内容,下面案例可供参考本文对mycat 的常用分片规则做了介绍,在使用时需要按照实际的业务配置不同的规则。原创 2023-09-01 09:59:36 · 269 阅读 · 0 评论 -
分库分表篇-2.1 Mycat-配置文件篇
在安装Mycat 后,我们怎么连到Mycat ,怎么配置数据库和表及其路由规则,本文对此进行说明。提示:以下是本篇文章正文内容,下面案例可供参考user--逻辑数据库连接 用到的用户名和密码 --> < user name = " root " defaultAccount = " true " > < property name = " password " > 123456 </ property > <!原创 2023-09-01 09:58:59 · 391 阅读 · 0 评论 -
分库分表篇-1 分库分表介绍
随着单库中业务数据的增加,数据库的查询QPS越来越高,相应的,对数据库的读写所需要的时间也越来越多,数据库的读写性能可能会成为业务发展的瓶颈。对应的,就需要做数据库性能方面的优化。如果单表数据量过大,当数据量超过一定量级后,常规的优化手段已经不起作用了,比如:SQL调优、添加索引、主从复制、读写分离,这是量变产生了质变,这时候就需要去换个思路来解决问题,既然单台数据库无法容纳如此多的数据,那么就把这些数据分而治之,分散到不同的表甚至不同的库中去,以此解决单台数据库的性能瓶颈问题。原创 2023-09-01 09:58:30 · 96 阅读 · 0 评论 -
Idea+maven+springboot项目搭建系列--4 整合Mysql读写分离
springboot 中对于数据库mysql的读写分离,依赖于与mysql 的主从复制;即我们将写入的数据放到主库中,然后从库通过主库的binlog 完成数据的复制,当需要读取数据时,就从从库读取;Mysql架构篇–Mysql(M-S) 主从同步;提示:以下是本篇文章正文内容,下面案例可供参考MySQL读写分离是一种数据库架构设计策略,它将数据库的读操作和写操作分别路由到不同的数据库实例上,以提高系统的性能和可扩展性。原创 2023-07-31 09:28:46 · 256 阅读 · 0 评论 -
工具篇-Mysql 性能优化
随着业务和数据量的增加,同样的sql 可能在项目开始时查询只需要几毫秒,后续可能需要几十秒设置几分钟,那么对于此种情况,怎么进行优化?mysql 的性能优化是一个细致且长期的过程,本文仅仅对优化的方向进行探究,在具体的实践中提供优化的方向和思路。原创 2023-07-28 13:25:03 · 322 阅读 · 0 评论 -
Mysql原理篇--第三章 事务与锁
Mysql 的事务是什么,为什么它要支持事务,它的事务又是怎么实现;在一个事务中对于不带LOCK IN SHARE MODE 和 SELECT FOR UPDATE 进行读取的普通select(快照读) 来说,读取数据使用的是MVCC 技术,在RC 级别下因为每次select 都会建立新的read view 从而会读取到新的其它事务提交的数据,从而造成不可重复读和幻读的情况;在RR 级别下载第一次select 时建立的read view 一直到事务结束都不会进行变化,所有不会有不可重复读和幻读的情况;原创 2023-07-28 13:24:02 · 361 阅读 · 0 评论 -
Mysql原理篇--第二章 索引
在使用Mysql时 当表中数据量增加,需要对表中的列建立索引以增加检索速度,那么Mysql 中的索引究竟是什么,它为什么能增加检索速度,索引都有哪些类型,我们应该为哪些列创建索引,索引的失效场景有哪些,本文进行探究。本文讲述了mysql 索引的类型,索引的具体实现,以及索引的失效场景,欢迎各位 码友 进行交流指正。原创 2023-07-28 13:23:07 · 113 阅读 · 0 评论 -
Mysql原理篇--第一章 1条语句的执行
对于mysql 数据存储工具,我们并不陌生,但是当我去执行1条sql 语句时,mysql 执行的流程是怎样的;为了提示读写速度,mysql 提供了buffer pool 内存,对于修改和查询操作,mysql 会按页加载数据到buffer pool 内存中;对于修改的数据,mysql 后端线程定时将buffer pool 的数据刷脏,持久化的磁盘中;为了防止buffer pool 数据因为mysql 宕机而丢失,通过redolog 将数据进行记录并进行持久化;原创 2023-07-27 16:14:15 · 128 阅读 · 0 评论 -
Mysql架构篇--Mysql 主从同步方案
本文对mysql的传统主从复制,半同步复制和组复制进行介绍。本文对mysql 的传统主从异步复制,半同步复制,组内复制进行了对比,已经通过3台虚拟机搭建了组内复制架构。原创 2023-07-07 13:36:44 · 2854 阅读 · 0 评论 -
Mysql架构篇--Mysql(M-M) 主从同步
本文在Mysql(M-S) 主从同步模型基础之上,增加主节点,扩展模型为M-M,两个设备互为主库和从库,当写入数据时,互相进行备份。这样一来,对任何一台数据的更改,都会同步到另一台设备上。M 为主节点,两个主节点的数据,可以相互进行同步;本文通过2个mysql 节点,搭建了M-M 同步模型,在两个Master 节点修改的数据 ,都会被相互同步。原创 2023-06-30 14:27:29 · 263 阅读 · 0 评论 -
Mysql架构篇--Mysql(M-S-S) 主从同步
本文在Mysql(M-S) 主从同步模型基础之上,增加从节点,扩展模型为M-S-S,进行级联数据复制;M 为主节点,S 从节点从M节点同步数据,对数据记录binlog,后续S 节点可以从前面的S 节点同步数据;本文通过3个mysql 节点,搭建了M-S-S 主从同步模型,在Master 节点修改的数据 ,都会被同步的S 节点中。原创 2023-06-30 14:27:06 · 255 阅读 · 0 评论 -
Mysql架构篇--Mysql(M-S) 主从同步
MySQL主从同步(MySQL Replication)是MySQL服务器的一个常用特性,它能够将MySQL服务器数据自动同步到其他MySQL服务器上,从而实现数据备份和负载均衡的功能。在实际应用中,MySQL主从同步可以用于实现高可用、灾备转移、读写分离等。Mysql 主从同步主要是通过master 节点开启binlog 日志,然后slave 节点消费binlog 日志的数据,将数据更新到各自的库中。原创 2023-06-30 14:21:57 · 4125 阅读 · 2 评论 -
Idea+maven+springboot项目搭建系列--3 整合阿里云Canal完成Mysql数据的监听
并且当多个客户端,连接到同一个canal 服务端,如果此时客户端感兴趣的数据库和表是相同的,则只有一个客户端能够接收到具体的Binlog数据,从而避免重复消费;canal server在默认情况下使用了RocketMQ作为消息队列,用于将解析出的binlog数据发送到下游的消费端,实现数据的异步传输和消息的可靠投递。至此消息消费的代码完成,从消费端可以看到,通过定义好的CanalConnector 一直向canal server 去拉取消息,完成消费,并且提交消息的ack,并将消费到的最新位点进行保存;原创 2023-06-19 14:41:16 · 1716 阅读 · 2 评论 -
工具篇--5 WIndow/Linux--Mysql binLog日志监听Canal安装
因此,在使用canal server之前,需要首先安装和配置Java环境。总之,canal server是基于Java开发的,需要在JVM上运行,因此需要先安装和配置Java环境。前言:作为一个中间件canal,可以实时的监听到mysql 中表结构及数据的变化, 项目中只需要接入canal ,不需要我们在业务中进行aop 或者接口的编写就可以及时的收到数据的变化。既然canal 是服务化的,所以在使用之前搭建canal 的服务,至于为什么要搭建canal 服务 ,可以从canal 的工作原理中得到答案;原创 2023-06-16 10:54:34 · 1705 阅读 · 0 评论 -
springBoot-MyBatis-Plus-binlog日志监听BinaryLogClient
ROW格式:此格式会记录每行数据更新的情况,包括更新前的数据和更新后的数据。客户端连接到MySQL数据库实例,并发送一个特殊的请求,称为dump请求,来指示MySQL开始从当前日志位置发送日志事件。MySQL的binlog-format是用于指定二进制日志的格式的设置,它决定了MySQL服务器记录的事件的详细程度和内容。前言 :项目中如果想要实时监听Mysql 表中数据的实时状态(插入,更新,删除),并根据不同的状态做出相应的动作,应该怎么办;在更改完配置文件后,重启mysql服务。原创 2023-05-31 14:30:22 · 4426 阅读 · 2 评论 -
springBoot-MyBatis-Plus逻辑删除@TableLogic
总的来说,@TableLogic 注解只能对 MyBatis Plus 自动注入的 SQL 生效,不能对手写 SQL 生效,如果需要使用逻辑删除功能,就需要选用 MyBatis Plus 的自动注入 SQL 功能来实现。但是,@TableLogic 注解只对 MyBatis Plus 自动注入的 SQL 生效,不针对手写 SQL 生效,这是因为逻辑删除的原理是在 MyBatis Plus 自动注入的 SQL 中做了特殊处理,实现了逻辑删除功能。即: and 定义的逻辑删除字段 = 定义的正常值;原创 2023-05-25 15:56:55 · 3620 阅读 · 0 评论 -
分布式全局唯一id实现总结
前言:本文意在对借助db和程序生成分布式id进行一些总结,以及对其特性进行比较分析;原创 2023-05-23 13:29:24 · 1163 阅读 · 0 评论 -
分布式全局唯一id实现-4 springCloud-MyBatis-Plus集成美团分布式全局id(leaf)
使用雪花算法生成的id 也是由时间戳+机器位+序列号组成的64位数字id,其中值得注意的是workId,会在每次项目启动的使用先去zookeeper中,通过ip+port 组成的key 去获取是否已经注册过,如果已经注册过则直接使用,否则注册持久有序的节点,以此来保证workId 唯一性;前言:美团的leaf集成了db分段生成id和雪花算法生成分布式id,本文对其实现部分细节展开讨论,leaf 的具体实现请参考:https://tech.meituan.com/MT_Leaf.html;原创 2023-05-23 13:30:12 · 1337 阅读 · 0 评论