mysql
文章平均质量分 77
祁_z
这个作者很懒,什么都没留下…
展开
-
【explain执行计划】MySQL性能调优
这个相同的join语句出现了三次:(1)扫描类型为eq_ref,此时id为主键(查询条件是主键ID);(2)扫描类型为ref,此时id为非唯一普通索引(查询条件是非主键ID);(3)扫描类型为ALL,全表扫描,此时id上无索引(查询条件不带索引);(1)explain结果中的type字段,表示(广义)连接类型,它描述了找到所需数据使用的扫描方式;(2)常见的扫描类型(由快到慢)有: system>const>eq_ref>ref>range>index>ALL。原创 2022-12-08 14:21:08 · 1193 阅读 · 1 评论 -
【mysql索引实现原理】
例如说两个事务,事务A锁住了1-5行,同时事务B锁住了6-10行,此时事务A请求锁住6-10行,就会阻塞直到事务B施放6-10行的锁,而随后事务B又请求锁住1-5行,事务B也阻塞直到事务A释放1-5行的锁。当一个事务对某几行上读锁时,允许其他事务对这几行进行读操作,但不允许其进行写操作,也不允许其他事务给这几行上排它锁,但允许上读锁。排他锁大家的理解可能就有些差别,我当初就犯了一个错误,以为排他锁锁住一行数据后,其他事务就不能读取和修改该行数据,其实不是这样的,:会出现死锁,发生锁冲突几率低,并发高。...原创 2022-08-08 17:23:33 · 143 阅读 · 0 评论 -
MYSQL误删数据恢复
所有演示代码-- 查看binlog是否开启show variables like 'log_bin';-- 查询binlog日志show binlog EVENTS;-- 创建表CREATE TABLE `user_5` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=36 DE原创 2022-04-17 15:05:24 · 7025 阅读 · 1 评论 -
表中存在多个索引问题? - 聚集索引,回表,覆盖索引
目录主键索引树name列 - 普通索引树age address - 组合索引树索引 - 涉及的三个重要概念聚集索引(也叫主键索引)回表覆盖索引例如: user表有 id name age address work五个字段id 是主键name 是普通索引age address 是组合索引work 没有加任何索引小知识: 表中的每个索引都会维护一个B+树, 只有主键索引树数据才是完整的(聚集索引)主键索引树name列 - 普通索...原创 2022-02-17 14:48:38 · 758 阅读 · 0 评论 -
mysql相关锁
首先经过验证说明:1. select查询是不会加任何锁的,就算此时记录/行数据被上锁,select也是可能正常查询的。2. insert、update、delete都会对记录数据进行上锁,根据查询条件以及查询条件是否为索引列,分别上不同的锁 行锁、间隙锁、表锁。行锁说明:只有查询带索引的列才会走行锁。记录锁/行锁 record-lock锁住一行数据。(insert、update、delete查询条件不带><查询的语句)间隙锁 Gad-lock锁住查询范围内的数据,原创 2021-03-11 21:48:59 · 75 阅读 · 0 评论 -
Mybatis拦截器修改sql语句
拦截器介绍MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能。MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) ParameterHandler (getParameterObject, setPa原创 2020-12-23 14:32:11 · 7174 阅读 · 8 评论 -
springboot使用RoutingDataSource实现动态数据源(mysql读写分离)
目录Maven依赖信息application.ymlDataSourceContextHolderDataSourceConfigDynamicDataSourceSwitchDataSourceAOPMaven依赖信息<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</ar.原创 2020-12-01 11:55:22 · 2668 阅读 · 1 评论 -
MyCat实现读写分离与动态数据源切换
什么是MyCat MyCAT是一款由阿里Cobar演变而来的用于支持数据库,读写分离、分表分库的分布式中间件。MyCAT支持Oracle、MSSQL、MYSQL、PG、DB2关系型数据库,同时也支持MongoDB等非关系型数据库。 MyCAT原理MyCAT主要是通过对SQL的拦截,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。官方网站:http://www.mycat.io/基于MyCat实现读..原创 2020-11-29 16:01:18 · 487 阅读 · 0 评论 -
mysql主从复制、数据备份
主从复制介绍在学习Redis的时候,已经了解过主从复制的作用。在MySQL集群环境中,可以分为主节点与从节点,通过主从复制可以实现数据备份、故障转移、MySQL集群、高可用、读写分离等。 MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我再Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果。误区(主从复制..原创 2020-11-29 16:01:27 · 543 阅读 · 0 评论 -
mysql配置慢查询、索引失效原因、联合索引遵循左前缀原则、mysql优化方案!
MySQL如何定位和配置慢查询配置慢查询,参数说明:slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运维帐号才有权限操作,一般设置为MySQL的数据存放目录)long_query_time 查询超过多少秒才记录1.开启慢查询记录日志,将 slow_query_log 全局变量设置为“ON”开启状态set global slow_query_log='ON';2.查询超过1秒就进行记录set g.原创 2020-11-29 16:01:40 · 255 阅读 · 0 评论 -
mysql索引实现原理、及相关数据结构:二叉树>平衡二叉树>B树>B+树!
1原创 2020-11-29 16:12:50 · 225 阅读 · 0 评论 -
mysql悲观锁和乐观锁
乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。悲观锁https://www.hollischuang.com/archives/934当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。这种借助数据库锁机制在修改数据之前先锁定,再修改的方式被称之为悲观锁。在数据库中,悲观锁的流程如下:在对任意记录进行修改前,先尝试为原创 2020-06-14 15:28:04 · 211 阅读 · 0 评论 -
springboot整合sharding-jdbc分库分表
链接:https://pan.baidu.com/s/1GRDY2WV35B2tDINNFsYZlw提取码:6rbk原创 2019-07-19 13:37:16 · 1654 阅读 · 4 评论 -
mysql分库分表介绍
什么是分库分表数据库的拆分主要体现在两个方面:垂直拆分和水平拆分- 垂直拆分:根据业务的维度,将原本的一个表拆分成多个表,每个表与原有的结构不同(优先采用冷热分离拆分)。- 水平拆分:根据分片(sharding)算法,将一个表拆分为多个表,每个表依旧保留原有的结构。 两种拆分方法可能会同时存在,在互联网应用中的开发过程中,通常先进行垂直拆分,使单体应用形成多个微服务结构,在...原创 2020-08-08 17:04:11 · 288 阅读 · 0 评论