MySQL

两张表格让你彻底学会MySQL事务隔离级别的查改操作

在《通过实例让你真正理解数据库中的事务隔离级别》里我们彻底了解事务隔离级别,本节将教会你各种操作对事务隔离级别进行查改:一张表格教会你查看事务隔离级别:查看目标命令 (MySQL 5.7)命令 (MySQL 8.0+)通用推荐命令说明当前会话隔离级别SELECT @@tx_isolation;SELECT @@transaction_isolation;SHOW VARIABLES LIKE &#

一张表格让你彻底学会MySQL锁机制中的三种核心锁类型!

什么是锁机制?锁机制是数据库管理系统(DBMS)的核心并发控制手段,用于在多个事务同时访问和修改数据时,维护数据的一致性和完整性。其核心思想是:当某个事务访问数据资源时,根据操作类型(读或写)先对数据加锁,从而防止其他事务进行冲突操作,直到该事务释放锁。这确保了并发事务能够“有序”地访问数据,避免产生脏读、不可重复读、幻读等问题。不同的数据库锁(如行锁、表锁)和不同的锁模式(如共享锁、排他锁)共同

详细讲解MySQL锁机制按锁的粒度划分的三大类锁!

在《一张表格让你彻底学会MySQL锁机制中的三种核心锁类型!》中我们详细介绍了三种核心锁类型:共享锁、排他锁和意向锁。如果按照锁的粒度(Lock Granularity)划分(锁的粒度指的是锁定的数据范围大小),我们可以分成行级锁、页级锁和表级锁。接下来我们将着重介绍这三种锁:特性行级锁 (Row-Level Lock)页级锁 (Page-Level Lock)表级锁 (Table-Level L

详细介绍MySQL InnoDB的 三 种行锁定方式

在 MySQL中,InnoDB 不是直接锁住磁盘上的数据行,而是锁住该行数据所对应的索引项。即使你没有为表定义任何主键(PRIMARY KEY),InnoDB 也会自动为你生成一个隐藏的、名为 DB_ROW_ID 的聚簇索引来组织数据。所以,每张 InnoDB 表至少有一个索引,如果你在没有二级索引(即你自己创建的索引)的列上进行查询,InnoDB 就不得不退而求其次,使用这个隐藏的聚簇索引(或主

MySQL死锁:从原理到预防之道

什么是死锁?死锁是指两个或两个以上的事务在执行过程中,因争夺锁资源而造成的一种相互等待的现象,若无外力干预,这些事务都将无法进行下去。死锁的产生必须满足以下四个条件:条件名称描述简单解释互斥条件(Mutual Exclusion)一个资源每次只能被一个事务持有。锁是独占的,不能共享。请求与保持条件(Hold and Wait)一个事务在持有至少一个资源的同时,又请求新的资源(该资源已被其他事务持有

从实例出发,让你彻底了解InnoDB 锁监控表!

之前的学习中,一出现锁问题,我们都会通过一下两个命令之一来检测事务中的锁问题:SHOWENGINEINNODBSTATUS;SHOWFULLPROCESSLIST;其实,MySQL为我们提供了更好的工具去记录和检测锁问题。大家还记得我们的数据库里有一个information_schema数据库吗?该数据库下面有3个重要的表,分

如何理解MySQL里的字符集和校对规则?

校对规则(Collation)是字符集内部定义的字符比较与排序规则。一个字符集可对应多种校对规则,且拥有一个默认规则。字符集与校对规则彼此依存,共同作用:字符集决定数据存储编码,校对规则决定数据比较逻辑。在字符集与校对规则的设计上,不同数据库存在理念差异。SQL Server 等数据库将二者耦合,选择字符集即隐含确定了其默认的校对规则。而 MySQL 则采用了显式解耦的设计,允许对字符集和校对规则

通过实例教会你查看MySQL字符集及其校对规则?

在《如何理解MySQL里的字符集和校对规则?》我们已经知道了MySQL的字符集和校对规则,现在我将主要介绍查看字符集和校对规则的几种方法。像这样:SHOWCHARACTERset\G我们能查看到所有字符集:mysql>SHOWCHARACTERset\G***************************

如何对默认字符集和校对规则进行修改?

MySQL 具备显著的字符集灵活性,区别于 Oracle 等多数数据库管理系统通常仅支持统一字符集的限制,其可在同一服务器、数据库、甚至同一张表的不同字段中配置不同字符集。同时,MySQL 的字符集与校对规则支持服务器、数据库、表、字段四个层级的默认设置,各层级设置位置不同,分别作用于对应范围的字符存储与比较逻辑。如何查看服务器字符集和校对规则:输入:SHOWVARIABLES&nbs

一口气教你学会为MySQL数据库更换字符集!

工作时,如果遇到乱码、或是业务扩展需要支持更多字符、或是系统迁移和升级,我们不可避免地遇到修改数据库字符集的需要。该这么进行修改呢? 前面我们在《如何对默认字符集和校对规则进行修改?》已经很清楚地说了,ALTER DATABASE 或 ALTER TABLE 命令对已经存在的数据没有作用,只对新创建的表或记录生效。如果想修改已存在数据的字符集,需要先将数据导出,经过适当的调整后,再重新导入。那么解