数据库
-
MySQL 参数简介
数据库参数 MySQL中维护着很多系统参数。其中部分是动态参数(可以在系统运行期间设置或修改),部分是只读参数(只能在系统启动前设置,系统运行期间无法进行修改操作);部分是全局参数…
-
MySQL JSON 和text等大字段类型不可以有默认值吗?
在MySQL中当我们设计表的时候,给JSON、text和blob等类型设置非空的默认值时会产生下面的错误,难道是MySQL中无法给这些类型的字段设置默认值吗? Error …
-
怎么在 MySQL 中查询重复记录
有时候由于业务原因或者其他原因,我们的表中产生了部分重复记录,我们需要只保留一条数据,删除重复的部分。这时候,我们的SQL该怎么写呢?今天我们就一起来看看。 🎃 首先,我们创建如下…
-
怎么强制 MySQL 表带有主键?
通常情况下,在公司中DBA会制定数据库开发policy,其中有一条就是创建的表必须他有主键(复制和部分高可用集群要求;性能要求)。但是有些公司并没有SQL上线审核平台,并且给用户授…
-
怎么查看MySQL中其他会话定义的变量
在MySQL中我们可能会需要自定义一些变量,可以通过以下的方式进行定义。 set @var_uid = 1;select ‘xiaoxin’…
-
MySQL 容器 IO 隔离不足导致慢SQL
1 引言 研发反馈数据库多次出现慢 SQL,经排查多种原因,最终定位根因是底层容器 IO 隔离不足导致的实例间相互影响。 本中详细介绍了分析过程,并介绍相关概念,比如半同步复制、组…
-
MySQL 两种 kill 语法
1 引言 MySQL 中的 kill 语句的使用非常广泛,最常用的场景是处理慢 SQL。 不过 kill 语句实际上支持两种语法,适用于不同的场景,本文将进行介绍。 本文的主要内容…
-
MySQL pt 执行报错 replicas have too many rows in one chunk
1 引言 pt 执行 SQL 工单报错 replicas have too many rows in one chunk,本文进行复现并分析处理方法。 2 现象 2.1 报错 单号…
-
并发 replace into 导致 supremum X 锁与插入意向锁形成死锁
引言 pt-osc 执行 DDL 时多次遇到 replace into 语句导致 业务 insert 语句发生死锁,对业务有较大影响。 本文介绍其中一种死锁现象产生的原因,supr…
-
MySQL 长事务导致 ibdata 文件膨胀
引言 本文分析一个主库与从库磁盘使用率差异大的案例,发现差异大的原因是从库系统表空间大小 296G,使用 innochecksum 工具分析显示 undo log 大小 …
-
MySQL 从一个死锁案例到锁分裂
引言 本文首先介绍一个更新不存在的记录导致死锁的案例,然后在测试过程中发现 update + insert 存在的记录时新增 gap lock,因此结合源码分析了锁分裂的原理。 个…
-
MySQL 记录、页、索引的数据结构简析
引言 本文在介绍 MySQL 内存中记录、页、索引、游标的数据结构的基础上,通过简单分析插入操作过程中行格式的转换介绍了不同数据结构的关系,其中不涉及加锁相关逻辑。 由于个人能力有…
-
MySQL 行锁锁的是什么?
引言 很早之前就听说 InnoDB 中的行锁锁的是索引上的记录,但是对于具体锁的是什么并不清楚,因此整理了这篇文章。 其中在介绍锁相关数据结构的基础上介绍了创建锁与查询锁的流程。 …
-
PostgreSQL 版本的向后兼容性
数据库版本的向后兼容性至关重要,它直接影响业务系统的可用性、连续性和整体效率,是一款数据库产品获得成功的必要条件。当你习惯了使用一些成功的数据库产品后,你可能会感觉不到它的存在,因…
-
使用 ChatGPT 访问 PostgreSQL
GPT 可以编写 SQL。如果我们用简单的语言写下我们的问题,然后让 GPT 编写 SQL 来获得答案,那么我们就可以节省大量花费在企业流程管理、数据分析软件上面的时间。 测试 让…
-
GROUP BY 和 PARTITION BY 的对比
GROUP BY和PARTITION BY子句在 SQL 中都用于对数据进行分组和计算聚合值,那么它们之间有什么区别呢? 介绍 GROUP BY 和 PARTI…