
MySQL
文章平均质量分 94
MySQL
爱吃牛肉的大老虎
学无止境,既要有深度又要有广度地学习
展开
-
MySQL数据同步之Canal讲解
Canal是阿里巴巴开源的一个用于高效抓取MySQL数据库增量变更日志(binlog)并进行处理的中间件。它可以将MySQL的binlog解析为结构化的JSON格式,并提供多种方式将这些数据推送到下游系统。原创 2025-05-01 09:37:25 · 1019 阅读 · 0 评论 -
MySQL日志之误删恢复数据
比如说,数据是在9月12日12:00插入的,那么我们看上方的所有binlog文件,可以看出插入语句应该保存在mysql-bin.000213文件中。比如说,数据是在9月12日12:00删除的,那么我们看上方的所有binlog文件,可以看出插入语句应该保存在mysql-bin.000213文件中。因为这些参数是用于解码binlog的,是让开发人员更方便看到binlog被解析之后的格式。目前有一些开源的工具,可以帮助我们解析binlog,并且自动生成binlog记录的操作的逆向操作。被误删的数据,如何恢复呢。原创 2024-12-27 10:38:43 · 1651 阅读 · 0 评论 -
MySQL查询之distinct 和 group by效率比较
group by和distinct都能使用索引,效率相同。因为group by和distinct近乎等价,distinct可以被看做是特殊的group by。distinct效率高于group by。原因是distinct和group by都会进行分组操作,但group by在Mysql8.0之前会进行隐式排序,导致触发filesort,sql执行效率低下。但从Mysql8.0开始,Mysql就删除了隐式排序,所以,此时在语义相同,无索引的情况下,group by和distinct。原创 2024-10-24 09:10:52 · 1162 阅读 · 0 评论 -
MySQL原理之UUID主键分析,插入或更新语法分析
在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花idlong形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?如果在INSERT语句末尾指定了,并且插入行后会导致在一个UNIQUE索引或中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。咱们在运用数据库时能够会常常遇到这种状况。原创 2024-09-11 21:17:51 · 1588 阅读 · 0 评论 -
MySQL中大量数据优化方案
表分区可以在区间内查询对应的数据,降低查询范围并且索引分区也可以进一步提高命中率,提升查询效率分区是指将一个表的数据按照条件分布到不同的文件上面,未分区前都是存放在一个文件上面的,但是它还是指向的同一张表,只是把数据分散到了不同文件而已。分表后,显而易见,单表数据量降低,树的高度变低,查询经历的磁盘io变少,则可以提高效率分库分表。原创 2025-01-17 21:35:47 · 2275 阅读 · 0 评论 -
MySQL锁之深入死锁分析
其实,根据事务1步骤6,与事务0步骤3/4之间的顺序不同,死锁日志中还有可能产生另外一种情况,那就是事务1等待的锁模式为记录上的X锁 + No Gap锁(lock_mode X locks rec but not gap waiting)。:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。(范围下的删除,也会产生死锁,但是死锁的场景,跟本文分析的场景,有所不同)原创 2023-02-20 11:11:12 · 1803 阅读 · 0 评论 -
MySQL之索引数据结构分析
索引是一种数据结构,可以帮助我们快速的进行数据的查找索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash 索引,B+ 树索引等,而我们经常使用的InnoDBB+ 树索引。原创 2022-12-12 10:20:39 · 1154 阅读 · 0 评论 -
MySQL基础之触发器,函数,存储过程
ITERATE : 通过引用复合语句的标号,来从新开始复合语句,在MySQL的LOOP,WHILE和REPEAT语句中,当想再次执行循环主体时,可以使用ITERATE语句,即:当不满足条件时,要继续执行的意思。REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替换search_str。SUBSTRING (str , position [,length ]) //从str的position开始,取length个字符,...原创 2019-09-17 19:17:04 · 3181 阅读 · 2 评论 -
MySQL之json数据操作
当然了,5.7的版本只是最基础的版本,对于海量数据的效率是远远不够的,不过这些都在mysql8.0解决了。写到这里大家都发现了,我们查询的json都是整条json数据,这样看起来不是很方便,那么如果我们只想看json中的某个字段怎么办?事例比如我们想针对id=2的数据新增一组newData新增的数据,修改deptName为新增的部门1。如果我们再执行以下刚才的那个sql,只是换了value,我们会看到里面的key值不会发生变化。如果我们要更新id=2数据中newData2的值为更新的数据2。...转载 2022-08-01 14:24:01 · 4788 阅读 · 0 评论 -
数据库事务,JDBC操作和数据类型
JDBC规范虽然定义了事务的以上支持行为,但是各个JDBC驱动,数据库厂商对事务的支持程度可能各不相同。表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始的状态。表示提交,即提交事务的所有操作。的作用都完成对数据库的一次操作,并且释放当前的一些资源,对于commit之后的事务,是不能够再进行回滚。元素的排序对应于批中的命令,批中的命令根据被添加到批中的顺序排序。,但是对于回滚之后的失误,在不同的情况下却可以选择提交,........原创 2022-07-27 10:50:53 · 703 阅读 · 0 评论 -
MySQL之数据库维护
备份数据库是最基本的工作,也是最重要的,否则后果很严重,但由于数据库比较大,上百G,往往备份都很耗费时间,所以就该选择一个效率高的备份策略,对于数据量大的数据库,一般都采用增量备份。文件,根据MySQL所使用的存储引擎的不同(MySQL常用的两个存储引擎是MyISAM和InnoDB),存储引擎会创建各自不同的数据库文件。是物理备份,备份和恢复速度快,不影响数据库服务情况下进行热拷贝,建议使用xtrabackup,支持增量备份。表都可以用,不需要停止数据库,如修复单个表,可在数据库后面添加表名,以空格分割。.原创 2022-07-29 15:00:14 · 3621 阅读 · 0 评论 -
MySQL分布式环境下生成全局自增有序ID(雪花算法Snowflake)
文章目录1 MySQL全局ID1.1 前言1.2 ID生成要求1.2.1 ID生成规则部分硬性要求1.2.2 ID号生成系统可用性要求1.3 一般通用解决方案1.3.1 UUID1.3.1.1 使用1.3.1.2 存在问题1.3.2 数据库自增主键1.3.2.1 单机1.3.2.2 集群分布式集群1.3.3 基于Redis生成全局ID策略1.3.3.1 单机版1.3.3.2 集群分布式1.3.4 雪花算法1.3.4.1 定义1.3.4.2 结构1.3.4.3 实现1.3.4.4 SpringBoot整合雪花转载 2022-03-18 11:10:02 · 5015 阅读 · 1 评论 -
MySQL之索引失效情况
文章目录1 MySQL索引1.1 简介1.1.1 索引创建1.1.2 索引类型1.1.3 索引优缺点1.2 SQL优化1.2.1 查看执行计划1.2.2 show profile分析1.2.3 trace2 索引失效2.1 问题引入2.2 准备工作2.2.1 创建user表2.2.2 插入数据2.2.3 查看数据库版本2.3 联合索引2.3.1 联合索引中索引有效2.3.2 联合索引中索引失效2.4 select *2.5 索引列上有计算2.6 索引列用了函数2.7 字段类型不同2.8 like左边包含%2原创 2022-02-08 12:46:55 · 8198 阅读 · 0 评论 -
MySQL查询之limit耗时原理分析
文章目录1 需求说明1.1 问题复现1.2 limit耗时1.2.1 limit耗时复现1.2.2 limit耗时原理1 需求说明有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms),按照下文的方式调整SQL后,耗时347 ms (execution: 163 ms, fetching: 184 ms);解决操作:查询条件放到子查询中,子查询转载 2021-09-18 23:26:50 · 1426 阅读 · 0 评论 -
数据库设计三大范式
文章目录1 数据库范式1.1 为什么要范式1.2 如何是合理数据库1.3 如何才能保证数据库设计水平1.4 什么是范式(NF= NormalForm)1.5 范式的分类2 各个范式详解2.1 第一范式1 数据库范式1.1 为什么要范式为什么需要数据库范式呢,因为必须保证数据库设计的合理性数据库设计关系整个系统的架构,关系到后续的开发效率和运行效率数据库的设计主要包含了设计表结构和表之间的联系1.2 如何是合理数据库如何是合理数据库结构合理冗余较小尽量避免插入删除修改异常1.3原创 2021-09-15 09:01:38 · 377 阅读 · 0 评论 -
oracle或mysql获取分组后每组的前三条数据
转载于:https://blog.youkuaiyun.com/Alex_81D/article/details/104901075mysql :select a.* from(select t1.*,(select count(*)+1 from 表 where 分组字段=t1.分组字段 and 排序字段<t1.排序字段) as group_idfrom 表 t1) awhere a.group_id<=3oracle:SELECT t.* FROM (SEL转载 2021-06-01 11:34:07 · 10043 阅读 · 1 评论 -
MySQL架构之select,insert原理
文章目录1 MySQL查询1.1 频繁使用的select语句1.2 MySQL 逻辑架构1.3 连接器是如何授权的1.4 查询缓存的作用是什么1.5 分析器1.6 优化器1.7 执行器2 MySQL为什么不能用UUID做主键2.1 前言2.2 mysql和程序实例2.2.1 准备工作2.2.2 开始测试2.2.3 程序写入结果2.2.4 效率测试结果2.3 使用uuid和自增id的索引结构对比2.3.1 自增id2.3.2 uuid2.4 自增id缺点1 MySQL查询MySQL 作为互联网行业使用最多转载 2021-05-25 15:33:21 · 1937 阅读 · 0 评论 -
MySQL锁之行表锁,共享排他锁,悲观乐观锁,记录间隙意向锁
文章目录1 MySQL锁1.1 Mysql锁类型和加锁分析1.2 死锁产生原因和示例1.2.1 产生原因1.2.2 产生示例1.2.2.1 案例一1.2.2.2 案例二1.2.2.3 案例三1.2.2.4 案例四1.2.2.5 案例五1.2.2.6 案例六1.2.3 死锁预防策略1.2.4 剖析死锁的成因1.2.5 接触死锁的占用1 MySQL锁MySQL 死锁是面试常问问题,金三银四,所以最近面试相关的文章比较多,本文章是总结的一波死锁问题,和大家分享一下1.1 Mysql锁类型和加锁分析MySQ转载 2021-04-15 11:09:45 · 816 阅读 · 0 评论 -
MySQL之事务一致性,日志,MVCC
文章目录1 MySQL函数1.1 字符串函数1.2 数值函数1.3 日期函数1.4 系统信息函数2 事务3 MySQL日志3.1 二进制日志3.2 错误日志3.3 通用查询日志3.4 慢查询日志1 MySQL函数1.1 字符串函数连接字符串concat('a','b');concat_ws(',','2021','04'); 是带连字符的字符串连接比较字符串大小函数(实际是ascii码值比较)select strcmp('a','b'); --返回 1(大于)或者-1(小于)或者0(相等)原创 2021-04-10 16:10:53 · 1718 阅读 · 2 评论 -
MySQL基础之索引,虚表视图,游标
文章目录1 MySQL索引1.1 添加索引1.1.1 普通索引1.1.2 其他类型索引1.2 删除索引1.3 查看索引执行计划2 MySQL视图3 MySQL触发器4 存储过程4.1 创建存储过程4.2 变量4.3 查看并使用存储4.4 修改删除存储5 函数5.1 创建函数5.2 查看并使用5.3 修改删除函数6 游标1 MySQL索引MySQL索引分类:普通索引,唯一索引,主键索引1.1 添加索引1.1.1 普通索引创建表时添加索引:create table table_name (属性名 数原创 2021-04-10 15:35:13 · 1019 阅读 · 0 评论 -
MySQL基础之登录,权限,数据库
文章目录1 MySQL认识1.1 MySQL历史和认识1.2 数据库基本知识2 MySQL安装配置3 MySQL登录和权限3.1 用户登录3.2 创建用户3.2.1 创建用户3.2.3 删除用户3.2.4 重命名用户3.3 赋予并查看权限3.4 修改密码3.5 回收权限4 数据库和查看帮助文档4.1 查看帮助文档4.2 数据库操作5 存储引擎1 MySQL认识1.1 MySQL历史和认识MySQL是一款免费开源、小型、关系型数据库管理系统。随着该数据库功能的不断完善、性能的不断提高,可靠性不断增强原创 2021-04-10 12:35:40 · 547 阅读 · 0 评论 -
Linux安装MySql 5.7.20以及彻底卸载mysql服务
目录1 安装mysql5.7.201.1 把下载的mysql5.7.20放到目录:/usr/local/1.2 卸载cenos上预装的mysql1.3 解压压缩包1.4创建用户组以及用户1.5创建配置文件保存并退出1.6 初始化数据库并查看初始密码1.7 启动服务,进入mysql,修改初始密码1.8 开机自启1.9 service启动2彻底卸载my......原创 2019-01-18 19:09:39 · 2070 阅读 · 1 评论 -
Windows安装MySQL的zip包安装教程
之前我们都是后缀为.msi的文件,换言之就是傻瓜式安装,但是有些版本不容易控制安装路径,或者数据库编码格式,还有些会安装很多无用的服务,但是都没有后缀为.zip文件简单直接,说是在哪里,就在哪里。1,首先在官网下载一个合适的mysql版本,有msi文件,也有zip文件的,先前是下载了两个一个是5.7.24但是里面缺少一个文件夹:data,还缺少文件:my-default.ini文件,后来下载了...原创 2018-11-24 11:29:36 · 21167 阅读 · 12 评论 -
怎么彻底删除MySQL服务
因为MySQL装在了c盘,想要挪一下位置,重装系统永远是个好办法,但有谁喜欢这么做呀 后来无意发现是卸载的时候没有卸载完全导致,下面给出完整的卸载MySQL 5.1的卸载方法: 1、控制面板里的增加删除程序内进行删除 2、删除MySQL文件夹下的my.ini文件,如果备份好,可以直接将文件夹全部删除 3、开始->运行-> regedit 看看注册表...原创 2018-10-20 11:38:18 · 15725 阅读 · 2 评论 -
MySQL中单引号,双引号和反引号的区别
目录1 单引号,双引号1.1 单引号1.2双引号2 反引号1 单引号,双引号MySQL里引用字符串常量时需要用一对英文单引号“ ' ”或英文双引号“ " ”将字符串常量常量括起来。例如:'an apple'"a book"1.1 单引号一般应使用英文单引号,如果字符串内需要包含单引号时,除了使用转义的办法外,我们可以选用一对双引号来包括字符串,这样字符串...原创 2019-06-22 18:34:09 · 33141 阅读 · 6 评论 -
MySQL之事件(Event)详解
目录1 创建事件1.1 检查数据库事件是否开启1.2 开启任务(事件)1.3 关闭事件1.4 语法1.4.1 参数取值1.4.2 参数定义1.5 开启事件1.6 关闭事件1.7 删除事件1.8 案例1 创建事件1.1 检查数据库事件是否开启 如果 event_scheduler 等于 NO表示开启 SELECT @@event_...原创 2019-07-18 17:43:12 · 3533 阅读 · 2 评论 -
MySQL对用户变量、系统变量、局部变量详解
目录1 变量分类1.1 用户变量1.1.1 用户变量定义1.1.2 用户变量操作1.2 系统变量1.2.1 系统变量定义1.2.2 系统变量操作1.3 局部变量1.3.1 局部变量定义1.3.2 赋值1 变量分类MySQL数据库中的变量分为MySQL系统变量和MySQL用户变量1.1 用户变量1.1.1 用户变量定义MySQL用户变量:基...原创 2019-07-17 18:12:58 · 8161 阅读 · 0 评论 -
MySQL之数据库基字符集,中文乱码,大小写敏感,Packet for query is too large
目录1 数据库字符集选择1.1 utf8和utfmb4区别2 排序说明3 大小写报错3.1 报错现象3.2处理过程1 数据库字符集选择1.1 utf8和utfmb4区别一般选择utf8.下面介绍一下utf8与utfmb4的区别utf8mb4兼容utf8,且比utf8能表示更多的字符。至于什么时候用,看你的做什么项目了,unicode编码区从1 ~ 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候需要存储那.原创 2019-01-30 17:29:26 · 7639 阅读 · 1 评论