讲之前,先唠点5毛钱的基础小知识。我们都知道 MySQL 有全局锁、表记锁和行级别锁,其中行级锁加锁规则比较复杂,不同的场景,加锁的形式还不同。
需要明确的是:对记录加锁时,加锁的基本单位是 next-key lock,它是由记录锁和间隙锁组合而成的,next-key lock 是前开后闭区间,而间隙锁是前开后开区间。而 next-key lock 在一些场景下会退化成记录锁或间隙锁。
前置概念
脏读
又称无效数据的读出,是指在数据库访问中,事务 T1 将某一值修改但是还未提交,然后事务 T2 读取该值,此后 T1 因为某种原因撤销对该值的修改并提交,这就导致了 T2 所读取到的数据是无效的,值得注意的是,脏读一般是针对于 update 操作的。
在 Mysql 中,无论是 Innodb 还是 MyISAM 引擎,都使用了 B + 树做索引结构 (这里先不考虑 Hash 索引)。那么我们从最普通的二叉树开始,从而说明 Mysql 为什么选择 B + 树作为索引结构。
索引这个词,相信大多数人已经相当熟悉了,很多人都知道 MySQL 的索引主要以 B + 树为主,但是要问到为什么用 B + 树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。
在数据库查询中,多表查询是一项非常常见且重要的任务。它允许我们从多个相关联的表中检索和组合数据,以满足各种复杂的查询需求。在多表查询中,子查询是一种强大的工具,用于在查询中嵌套另一个查询。本文将深入探讨 MySQL 中的子查询,包括什么是子查询、如何编写子查询以及使用子查询解决的常见查询问题。
一、MySQL 的 For Update 简介
For update 是 MySQL 中用于实现行锁的一种语法,其主要作用是在 SELECT 查询语句中加上 FOR UPDATE 子句,以保证查询结果集中的每一行都被锁定,避免其他事务对这些行进行修改。具体语法如下:
事务是 MySQL 等关系型数据库区别于 NoSQL 的重要方面,是保证数据一致性的重要手段。本文将首先介绍 MySQL 事务相关的基础概念,然后介绍事务的 ACID 特性,并分析其实现原理。
金三银四很快就要来啦,准备了索引的 15 连问,相信大家看完肯定会有帮助的。
在并发编程中,经常会遇到多个线程访问同一个共享资源而这时候,我们就需要保证数据的"一致性",那么就要用到锁的概念,给资源加上锁,拿到锁所有权的人才能够进行操作共享资源,没有拿到资源的线程需要等待,等其他线程使用完,释放锁。
简单对MySQL安装过程中的常见错误进行总结、归纳。
Linux
1819 Mysql密码等级问题
问题描述
在修改MySQL密码时,因密码过于简单(如:123456),不符合MySQL密码规范,会触发一个报错信息: