
MySQL 核心技术
文章平均质量分 86
https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html 数据库官方文档
fastjson_
这个作者很懒,什么都没留下…
展开
-
两类更新丢失及解决办法
3原创 2022-07-06 21:29:47 · 2655 阅读 · 2 评论 -
MYSQL中 find_in_set() 函数用法详解
333原创 2022-07-01 17:17:39 · 33054 阅读 · 1 评论 -
[索引] 索引失效的几种情况
一、索引失效的几种情况建立员工记录表staffs(id,name,age,pos,add_time)给表中name,age,pos字段添加索引(注意三个字段的顺序)alter table staffadd index idx_staffs_nameAgePos(name,age,pos)①最佳左前缀法则指的是查询从索引的最左前列开始并且不跳过索引中的列(带头大哥不能死,中间兄弟不能断)(火车头带着车身跑,不能没有火车头,中间也不能缺少一段火车身)例:第一种情况,nam原创 2022-04-18 15:43:20 · 4550 阅读 · 0 评论 -
MySQL 约束详解
一、什么是约束约束实际上就是表中数据的限制条件二、约束作用表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效比如name字段中要让其用户名不重复,这就需要添加约束。或者必须注册的时候需要添加邮箱等三、约束种类非空约束(not null) 唯一性约束(unique) 主键约束(primary key) PK 外键约束(foreign key) FK 检查约束(目前MySQL不支持、Oracle支持)下面将逐一介绍以上约束四、非空约束用not null约束原创 2021-11-07 16:50:39 · 3100 阅读 · 0 评论 -
4分钟插入1000万条数据到mysql数据库表
我用到的数据库为,mysql数据库8.0版本的,使用的InnoDB存储引一、创建测试表CREATE TABLE `product` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL COMMENT '商品名', `price` decimal(8,2) DEFAULT NULL COMMENT '价格', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CH原创 2021-10-18 11:57:13 · 6143 阅读 · 4 评论 -
[锁] InnoDB 中的行锁算法(记录锁、间隙锁与临键锁)
环境:数据库的引擎必须是InnoDB(支持事务)下面分别讨论四种隔离级别的情况1、读未提交它是性能最好,也可以说它是最野蛮的方式,因为它压根儿就不加锁,所以根本谈不上什么隔离效果,可以理解为没有隔离。2、串行化读的时候加共享锁,也就是其他事务可以并发读,但是不能写。写的时候加排它锁,其他事务不能并发写也不能并发读。最后说读提交和可重复读。这两种隔离级别是比较复杂的,既要允许一定的并发,又想要兼顾的解决问题。3、读提交.....................原创 2021-10-16 14:13:09 · 1749 阅读 · 3 评论 -
[存储引擎] MySQL的存储引擎介绍
前言数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySql的核心就是存储引擎。存储引擎查看MySQL给开发者提供了查询存储引擎的功能,我这里使用的是MySQL8.1,可以使用:SHOW ENGINES;看到MySQL给用户提供了这么多存储引擎,包括处理事务安全表的.原创 2021-10-15 16:50:26 · 9638 阅读 · 0 评论 -
MVCC及实现原理
!首先声明,MySQL 的测试环境是 5.7前提概要 什么是 MVCC 什么是当前读和快照读? 当前读,快照读和 MVCC 的关系 MVCC 实现原理 隐式字段 undo日志 Read View 整体流程 MVCC 相关问题 RR 是如何在 RC 级的基础上解决不可重复读的? RC, RR 级别下的 InnoDB 快照读有什么不同? 一、前提概要1、什么是 MVCC ?MVCCMVCC,全称Multi-Version Concurrency Co.转载 2021-10-15 11:29:12 · 11699 阅读 · 6 评论 -
[索引] MySQL 索引实现原理分析
目前大部分数据库系统及文件系统都采用B-Tree(B树)或其变种B+Tree(B+树)作为索引结构。B+Tree是数据库系统实现索引的首选数据结构。在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。一、MyISAM 索引实现MyISAM 引擎使用 B+Tree 作为索引结构,叶节点的 data 域存放的是数据记录的地址。下图是 MyISAM 主索引的原理图:这里设表一共有三列,假设我..原创 2021-10-14 21:07:55 · 242 阅读 · 0 评论 -
[锁] MYSQL的锁机制
MySQL锁介绍相对于其他的数据库而言,MySQL的锁机制比较简单,最显著的特点就是不同的存储引擎支持不同的锁机制。根据不同的存储引擎,MySQL中锁的特性可以大致归纳如下:表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁,锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:介于表级锁和行级锁之间(一般开发中不用)MyISAM 表锁1、查询表级锁争用情况show status like 'tabl原创 2021-10-12 14:21:38 · 426 阅读 · 0 评论 -
[索引] MYSQL索引分类
一、索引概述1. 简介索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。举例说明索引:如果把数据库中的某一张看成一本书,那么索引就像是书的目录,可以通过目录快速查找书中指定内容的位置,对于数据库表来说,可以通过索引快速查找表中的数据。2. 索引的原理索引一般以文件形式存在磁盘中(也可以存于内存中),存储的索引的原理大致概括为以空间换时间,数据库在未添加索引的时候进行查询默认的是进行全量搜索,也就是进行全局扫描,有多少条数据就要进行多少次查询,然后原创 2021-10-12 09:01:33 · 370 阅读 · 0 评论 -
MySQL 的三范式
三个范式是什么第一范式(1NF):列不可再分 id 地址 1 中国广东 2 中国云南 上面的表地址字段其实可以继续分: id 国家 省份 1 中国 广东 2 中国 云南 但是具体地址到.原创 2021-10-11 14:51:42 · 340 阅读 · 0 评论 -
[事务] 事务的隔离级别
并发下事务会产生的问题举个例子,事务A和事务B操纵的是同一个资源,事务A有若干个子事务,事务B也有若干个子事务,事务A和事务B在高并发的情况下,会出现各种各样的问题。"各种各样的问题",总结一下主要就是五种:第一类丢失更新、第二类丢失更新、脏读、不可重复读、幻读。五种之中,第一类丢失更新、第二类丢失更新不重要,不讲了,讲一下脏读、不可重复读和幻读。1、脏读所谓脏读,就是指事务A读到了事务B还没有提交的数据,比如银行取钱,事务A开启事务,此时切换到事务B,事务B开启事务-->取走100...原创 2020-11-15 17:35:49 · 1120 阅读 · 0 评论 -
[事务] 事务的传播机制
前言: Spring的事务,也就是数据库的事务操作,符合ACID标准,也具有标准的事务隔离级别。 但是Spring事务有自己的特点,也就是事务传播机制。 所谓事务传播机制,也就是在事务在多个方法的调用中是如何传递的,是重新创建事务还是使用父方法的事务?父方法的回滚对子方法的事务是否有影响?这些都是可以通过事务传播机制来决定的。 本文就测试一下这些事务传播机制的使用及异同一、准备测试方法 <dependencies> <dep.........原创 2020-11-14 18:13:01 · 2382 阅读 · 0 评论 -
[事务] Transactional注解在同一个类中调用的失效问题
前段时间,朋友问了我一个问题,说有一个service类中,有一个A()方法和B()方法, A()方法没有添加事务,B()方法添加了一个默认的事务,A()方法中调用B()方法,如果B()方法抛出异常,那么A()方法B()方法是否会回滚?今天就回顾一下这个问题,看看到底如何?回顾这个问题之前,需要先了解下事务的传播行为,事务的传播行为共7种如下: PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务,最常见的选择。 PROPAGATION_SUPPORT原创 2020-11-14 16:04:59 · 3641 阅读 · 0 评论 -
[事务] 编程式事务和声明式事务的优缺点
事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种。关于事务的基础知识,如什么是事务,数据库事务以及Spring事务的ACID、隔离级别、传播机制、行为等,就不在这篇文章中详细介绍了。默认大家都有一定的了解。本文,作者会先简单介绍下什么是声明式事务和编程式事务,再说一下为什么我不建议使用声明式事务。一、编程式事务基于底层的API,如PlatformTransactionManager、TransactionDefinition 和原创 2020-11-14 12:03:22 · 7002 阅读 · 2 评论 -
[事务] 事务的回滚机制
一、事务管理的意义:在service类或所有service方法都加上事务操作;用来保证一致性,即service方法里的多个dao操作,要么同时成功,要么同时失败,保证了事务的原子性二、springboot配置事务管理的步骤1、导入相关依赖 数据源、数据库、SpringJdbc模块 <dependency> <groupId>org.springframework</groupId> &l.原创 2020-05-10 20:42:38 · 11533 阅读 · 0 评论