
mysql进阶之路
文章平均质量分 89
如果你了解mysql基础知识,想要对mysql进阶学习;如果你正在准备mysql面试,那么这个专栏或者是你所需要的
wu@55555
软考高级系统架构师、Elastic认证工程师、CSDN后端领域博客专家、阿里云专家博主、华为云·云享专家博主、51CTO专家博主、掘金社区认证优秀作者
——致力于家乡互联网技术建设
展开
-
flyway:数据库移植框架,再也不用担心历史版本表结构管理问题
flyway是一款基于java开发的,数据库移植组件,支持所有的JDBC数据库flyway会在项目启动时,扫描指定路径下的所有sql脚本,同时会维护一张记录表,将扫描的sql脚本与中的记录对比,如果记录与指定路径下的sql脚本不一致(修改了历史的sql脚本),则会进行报错;如果比对一致,则会执行记录中没有的sql脚本。综上,使用flyway来做多版本的数据库结构管理,是比较方便和快捷的,去尝试下吧。原创 2023-04-10 00:00:00 · 997 阅读 · 0 评论 -
mysql进阶:设置了事务注解 @Transactional但未生效|手动事务回滚
有同学遇到设置了事务,但是也报出了错误,但是一致未生效的问题,事务没有回滚,rollbackFor也设置成了捕捉全部报错Exception,那么这是怎么回事呢,其实原因很简单。原创 2023-03-07 00:42:40 · 974 阅读 · 0 评论 -
springboot:接手老项目,领导让更新数据库说明文档,如何3分钟完成任务
screw是用来生成数据库表结构说明文档的组件,通过引用jar包,通过简单的配置就可以自动生成文档,相当于数据库中的swagger,支持html, word, md三种格式的文档如上所示,我们的数据库说明文档就做完了,当然我在实际项目中的数据库比上述演示的要大的多,但数据库越大,我们省的时间就越多。原创 2023-01-11 00:14:15 · 3961 阅读 · 6 评论 -
mysql进阶:通过canal-admin来管理canal集群
canal-admin的设计初衷就是为了canal提供整体的配置管理、节点运维等功能。针对多节点的情况,不需要相同的配置每个节点都要操作一遍。为运维人员节约时间。集群:也就是一组canal服务端deployer,也称为Server,同一集群的Server的配置文件可以在admin中统一集中管理。也就是说admin是面向多集群的管理。原创 2022-10-07 09:21:29 · 2020 阅读 · 0 评论 -
mysql进阶:canal搭建主从|集群架构
deployer节点同时只会运行一个,而adapter节点是采用服务分发的机制,多节点同时服务,由zk分发请求到具体的adapter节点上执行数据同步任务下期,我们接着讲讲如何结合canal-admin来管理集群节点。原创 2022-10-06 19:07:30 · 3490 阅读 · 0 评论 -
Elastic实战:canal自定义客户端,实现mysql多表同步到es
anal是阿里开源的数据同步工具,基于bin log可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等canal分成服务端deployer和客户端adapter,我们可以部署多个,同时为了方便管理还提供了一个管理端admin,同时我们还可以自定义客户端,我们讲自定义的客户端称为clientcanal的数据同步流程如下图所示1、新建一个springboot项目,我们结合之前讲解的。原创 2022-10-02 00:11:29 · 5042 阅读 · 2 评论 -
mysql进阶:canal实现mysql数据同步到redis|实现自定义canal客户端
canal是阿里开源的数据同步工具,基于bin log可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等canal分成服务端deployer和客户端adapter,我们可以部署多个,同时为了方便管理还提供了一个管理端admincanal的数据同步流程如下图所示因为目前canal还不能直接通过配置就实现对redis的数据同步,因此我们需要自定义一下canal客户端,通过服务端将数据同步到客户端后,由客户端自定义操作同步到redis。原创 2022-09-25 15:40:21 · 3305 阅读 · 1 评论 -
mysql进阶:canal实现跨机房数据同步|主从数据同步
canal是阿里开源的数据同步工具,基于bin log可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等自此我们针对数据以及数据结构的同步都配置成功了,并且本次演示中使用的目标数据库部署在百度服务器上,源数据库部署在本地虚拟机中,两者异地,演示了异地机房同步。大家需要注意的是,配置镜像模式同步时,一定要确保初始的数据库结构是一致的,否则也无法达到“镜像”的效果。原创 2022-09-25 02:42:52 · 4191 阅读 · 5 评论 -
mysql进阶:数据库审计软件yearning搭建指南
yearning提供的核心功能就是sql查询和审计。我们可以通过yearning来创建用户,设置权限,规定哪些用户可以查询哪个库,哪些用户可以修改哪个库,查询、修改操作需要经过那些人的审批后才能执行,执行完成的SQL修改语句可以进行回退,可以监控追溯到哪些人执行了哪些SQL。以此我们可以搭建一个监控SQL执行的审计平台,也方便的实现数据库权限的分层管理。下面我们详细来看看yearning的搭建和使用。本期针对数据库审计软件的讲解就到此结束了,多看、多练,亲自实践!原创 2022-09-17 12:24:17 · 3394 阅读 · 0 评论 -
mysql进阶:企业数据库安全防护方案
数据库安全是系统安全的重中之重,做好数据库安全防护及规范,是系统建设的基础。今天我们来看看企业生产如何落地数据库安全防护机制。原创 2022-09-10 11:44:27 · 2334 阅读 · 0 评论 -
【mysql进阶】MTS主从同步原理及实操指南(七)
随着业务场景的深入和请求量的剧增,单库实现读写越来越趋近瓶颈,于是我们想到搭建主从库,主库负责写,从库负责读,从而实现读写分离,提高查询效率。但是主从库之间的数据如何同步呢?很明显我们写入数据是只能通过主库操作的,因为我们要求的是主库负责写,从库负责读。我们知道binlog可以实现数据的备份和同步,那么我们是否可以通过它来实现主从同步呢?这就是我们接下来要讨论的了在正式开始讲解实操前,我们需要先了解其原理,否则只能做到知其然,而不知其所以然什么是bin log?bin log是我们实现主从同步的核心,同时原创 2022-06-26 15:55:54 · 1643 阅读 · 0 评论 -
【mysql进阶】查询优化原理与方案(六)
mysql中查询操作是重中之重,大部分优化的核心都为了提高查询效率。我们之前讲解了针对索引的优化,间接也说明了一些查询操作的优化,今天我们就专门针对查询进行优化方案讲解首先我们要知道查询慢的原因是什么,才能知道怎么去调优。影响查询的原因主要有以下几点:当然上述列举的这些原因并不是全部,但大部分的性能低下的查询都可以通过减少数据量的方式来进行优化1、是否查询了不需要的数据根据业务要求,返回业务需要的数据即可,不要去查询多余的列2、多表关联时,是否返回了全部列这一点很多同学比较容易忽略,觉得我在最外层已经限原创 2022-06-12 12:55:23 · 840 阅读 · 2 评论 -
【mysql进阶】索引分类及索引优化方案(五)
索引是数据库中占据着核心地位,它能帮助服务器减少需要扫描的数据量,减少排序和临时表,大大提高查询效率,因此索引的使用在数据库中是必须掌握的技能,但是不正当的使用索引,不能不能提高性能,反而会降低运行效率。因此今天,我们就来谈谈如何正确建立索引,索引如何优化在正式开始讲述之前,我们依然要先理解索引有哪几种,每种是用场景是什么,这样才能正确选型有很多同学看到这个问题就会一股脑的说,索引有主键索引、唯一索引、普通索引、全文索引、组合索引、聚簇索引、非聚簇索引这几种。然而这样的说法,并不正确,因为这些索引类型并不在原创 2022-06-12 00:36:56 · 466 阅读 · 1 评论 -
【mysql进阶】mysql索引数据结构的演变(四)
你知道索引的底层数据结构是什么吗?mysql为什么用B+树而不用红黑树?mysql为什么用B+树而不用B树?… …这样一些问题经常出现来mysql的面试中,mysql中两个比较重要的概念就是锁与索引,而mysql的行锁本身就是通过锁定索引来实现的,所以理解索引的底层原理十分必要。那么今天,我们从mysql索引的底层数据结构出发,带大家学习mysql的底层原理首先我们要来复习一下索引的概念,什么是索引?官方对于索引的定义是帮助mysql高效获取数据的数据结构。就像我们把一张表看作一本书的话,索引就是我们的原创 2022-06-11 21:48:36 · 512 阅读 · 0 评论 -
【mysql进阶】10种数据类型的区别以及如何优化表结构(三)
一个优秀的开发者在于性能的提升和资源的节约上是会不断追求,不断打磨的,我们在使用mysql时创建表结构时,更是需要我们理解每一种数据类型的区别,并且在不同的业务场景中选择适合的数据类型。那么我们今天就来谈谈如何来优化表结构字段是组成表结构的基础,而针对数据类型做好优化,更是表结构优化的第一步。所以我们先来看如何对数据类型做好选型与优化。首先我们要知道mysql支持哪些数据类型,这些数据类型之间的区别是是什么,然后我们才能针对不同的场景选择不同的类型。mysql中一共支持10种数据类型整数类型分为以下5种通过原创 2022-06-11 00:37:41 · 801 阅读 · 0 评论 -
【mysql进阶】利用执行计划explain优化sql(二)
在实际开发中,我们往往需要针对某些较为复杂的SQL进行优化,首先我们就需要了解SQL的具体执行情况和过程,但是如何知道呢?知道之后又如何优化我们的sql效率呢?今天我们就来聊聊,如何通过explain来优化SQLexplain,即执行计划,是mysql提供的用来模拟优化器执行sql语句的指令,用它我们可以知道sql的执行效果,需要注意的是explain是模拟执行,并不是真正的执行,所以其效果分析并不能完全还原真实的执行效果。explain指令的用法就是explain+要执行的sql,比如结果显示在exp原创 2022-06-09 02:04:28 · 627 阅读 · 0 评论 -
【mysql进阶】mysql如何监控sql执行情况(一)
要想进阶针对mysql学习乃至掌握mysql调优的基本技能,监控mysql的执行情况必不可少。就像我们的代码,如果不能debug,想要进行调优排错,难度将会大大增加。所以今天我们就来讲解如何监控mysql的sql执行情况show profile是mysql提供的用来分析当前会话中sql语句执行的资源消耗情况,利用它我们可以用来分析sql的性能,作为调优的测量工具show profile默认是关闭的,可以通过指令来开启,但是需要注意的是每次开启只是生效在当前会话中,想要永久生效的话需要修改mysql配置文件1原创 2022-06-07 21:34:24 · 5641 阅读 · 0 评论 -
mysql redo log为什么有两阶段提交/为什么有prepare和commit两个状态?
mysql redo log为什么有两阶段提交/为什么有prepare和commit两个状态?mysql 数据更新流程回答标题之前,我们要先明白数据更新的流程,这两个状态是在什么时候生成的在mysql中数据更新的流程是:1、执行器先从引擎中找到数据,如果在内存则直接返回,如果不在内存查询后返回2、执行器拿到数据后,会先修改数据,然后调用引擎接口重新写入数据3、引擎将数据更新到内存,同时写入redo log,此时处于prepare状态4、执行器生成这个操作的binlog5、执行器调用引擎的事务原创 2021-03-29 17:15:59 · 3635 阅读 · 6 评论 -
只使用mybatis-plus的注解,而不用配置数据库
背景我们在项目开发时,特别是多module项目场景时,可能会遇到某些实体类要使用mybatis-plus的注解,如@tableName或者@TableField等, 但是如果引入mybatis依赖就要配置数据库,但实际上有可能这个项目只是个公共实体类、接口类等的一个公共module,在该公共module中写一遍这些实体类,接口等,然后在其他module中直接依赖这个公共module就可以了,所以在这个场景下,这个公共module就不需要连接数据库,自然而然也不需要配置数据库解决因为mybatis-pl原创 2020-11-16 19:56:25 · 2860 阅读 · 2 评论