首页
文章列表
标签墙
返回找工具啦
MySQL
共 41 篇文章
MySQL pt-online-schema-change无锁修改表结构的原理
2026-04-30 18:16:40
MySQL ptonlineschemachange无锁修改表结构的原理 在生产环境中修改大表结构是一项高风险操作。MySQL 默认的 ALTER TABLE 语句在执行期间通常会锁表,导致应用无法写入,甚至阻塞读取,这在高并发场景下是不可接受的。ptonlineschemachange(简称 pt
MySQL
pt-osc
在线DDL
61
0
MySQL窗口函数ROW_NUMBER与RANK的区别与分页应用
2026-04-30 16:23:01
MySQL窗口函数ROWNUMBER与RANK的区别与分页应用 基本概念与区别 认识 ROWNUMBER和RANK这两个窗口函数时,首先需要了解它们都是用来为结果集中的行分配排名号的工具。 区分 这两个函数的关键点在于处理相同值时的行为: ROWNUMBER:无论值是否相同,都会为每行分配一个唯一的
MySQL
窗口函数
排名函数
52
0
MySQL INSERT IGNORE与REPLACE INTO的数据保留差异
2026-04-30 12:14:51
MySQL INSERT IGNORE与REPLACE INTO的数据保留差异 在数据库维护与开发过程中,处理主键或唯一索引冲突是常见场景。MySQL 提供了 INSERT IGNORE 和 REPLACE INTO 两种机制来应对数据插入时的冲突,但它们在数据保留策略和底层执行逻辑上截然不同。了解
MySQL
数据库
SQL
42
0
MySQL分区表的分区裁剪如何加速范围查询
2026-04-30 08:22:28
MySQL分区表的分区裁剪如何加速范围查询 分区裁剪是MySQL优化器在处理分区表时的一项核心能力,它类似于图书馆管理员根据索引直接去特定书架找书,而不是从进门开始一本本翻阅。对于包含海量数据的表,合理利用分区裁剪可以极大减少磁盘I/O,从而显著提升范围查询的响应速度。 以下指南将通过实操步骤,演示
MySQL
分区表
分区裁剪
36
0
MySQL Generated Column虚拟列与存储列的索引应用
2026-04-29 15:19:45
MySQL Generated Column虚拟列与存储列的索引应用 MySQL 5.7 版本引入了 Generated Column(生成列)功能,允许我们在表中创建一列,其值是由表中其他列的表达式自动计算得出的。这一特性解决了在数据库层面直接对计算结果建立索引的难题,避免了频繁修改应用层代码。
MySQL
虚拟列
存储列
56
0
MySQL WHERE条件中使用函数导致索引失效的原因
2026-04-28 00:26:29
MySQL WHERE条件中使用函数导致索引失效的原因 MySQL 数据库中,索引是提升查询速度的关键,但在 WHERE 子句中对索引列使用函数常常会导致索引失效,转而进行全表扫描。理解这一现象的核心在于掌握数据库索引的查找机制与计算顺序。 理解索引查找的基本逻辑 MySQL 中的 InnoDB 引
MySQL
索引失效
SQL优化
53
0
MySQL B+树索引为什么比B树更适合数据库
2026-04-27 02:25:07
MySQL B+树索引为什么比B树更适合数据库 数据库索引的核心目标是减少磁盘 I/O 次数,从而提升数据查询速度。MySQL 的 InnoDB 引擎之所以选择 B+ 树而不是 B 树作为索引结构,是基于对磁盘读写特性、查询性能以及范围扫描需求的综合考量。以下是详细的对比分析步骤。 1. 分析数据存
MySQL
索引
B+树
86
0
MySQL MVCC多版本并发控制的实现原理
2026-04-26 23:15:11
MySQL MVCC多版本并发控制的实现原理 MySQL 的 InnoDB 引擎通过 MVCC(MultiVersion Concurrency Control,多版本并发控制)实现了在不加锁的情况下进行并发读写。这种机制让“读操作”和“写操作”互不冲突,极大地提升了数据库的性能。MVCC 的核心实
MySQL
MVCC
InnoDB
76
0
MySQL 临时表与派生表在复杂查询中的性能影响
2026-04-25 18:18:04
MySQL 临时表与派生表在复杂查询中的性能影响 在处理涉及多表关联、聚合计算或分页的复杂 SQL 查询时,经常会遇到性能瓶颈。这通常是因为 MySQL 在后台悄悄创建了“派生表”或“临时表”来存储中间结果,而这些表往往缺乏有效的索引支持。以下指南将深入剖析这两种表的工作机制,并提供可执行的优化步骤
MySQL
临时表
派生表
49
0
MySQL Generated Always As表达式索引的使用技巧
2026-04-24 13:19:22
MySQL Generated Always As表达式索引的使用技巧 MySQL 5.7 引入了虚拟列功能,MySQL 8.0 进一步完善了函数索引的支持。利用 GENERATED ALWAYS AS 可以在不修改业务代码逻辑的前提下,将复杂的计算、函数调用或 JSON 字段提取逻辑固化为列,并直
MySQL
表达式索引
虚拟列
40
0
MySQL CTE递归公共表表达式实现树形结构查询
2026-04-23 12:24:46
MySQL CTE递归公共表表达式实现树形结构查询 在关系型数据库中处理层级数据(如组织架构、分类目录、评论回复)一直是开发中的痛点。MySQL 8.0 引入了递归公用表表达式,让这种查询变得简单且高效。本文将手带你通过三个典型场景,掌握从任意节点向下查询子节点、向上查询父节点以及生成完整路径的方法
MySQL
递归CTE
树形结构
39
0
MySQL数据库分库分表后的跨库查询与全局ID生成
2026-04-22 03:27:12
MySQL数据库分库分表后的跨库查询与全局ID生成 当单表数据量超过千万级或单库性能达到瓶颈时,分库分表成为解决存储和性能压力的必经之路。然而,拆分后的数据库架构引入了两个核心难题:原本简单的跨表JOIN操作变得无法执行,以及如何在分布式环境下保证全局ID的唯一性。本文将直接提供解决这两个问题的具体
分库分表
MySQL
跨库查询
59
0
MySQL Online DDL在线修改表结构的原理与限制
2026-04-21 23:29:23
MySQL Online DDL在线修改表结构的原理与限制 在生产环境中维护数据库时,直接对大表执行 ALTER TABLE 往往意味着风险。传统的修改方式会导致表被锁定,甚至阻塞所有的读写请求。MySQL 提供的 Online DDL(在线定义表结构)功能旨在解决这个问题,让修改表结构尽量不影响业
MySQL
在线DDL
表结构修改
50
0
MySQL Count(*)、Count(1)、Count(列名)的性能差异真相
2026-04-21 21:26:28
MySQL Count、Count1、Count列名的性能差异真相 在数据库优化和面试中,关于 COUNT 的讨论从未停止。许多开发者为了追求极致性能,会在写 SQL 时纠结是用 COUNT 还是 COUNT1,甚至有人认为 COUNT1 比 COUNT 更快。这些说法在现在的 MySQL 版本中大
MySQL
性能优化
Count函数
57
0
MySQL查询缓存被移除的原因与应用层缓存替代方案
2026-04-20 04:28:22
MySQL查询缓存被移除的原因与应用层缓存替代方案 MySQL 8.0 彻底移除了查询缓存功能。这并非失误,而是基于性能权衡的必然选择。以下是深入解析其移除原因,以及在应用层构建高效缓存的实操方案。 1. 为什么 MySQL 移除了查询缓存 MySQL 的查询缓存机制简单粗暴:服务器收到 SELEC
MySQL
查询缓存
MySQL8.0
47
0
MySQL InnoDB行锁与表锁的加锁规则
2026-04-20 00:25:14
MySQL InnoDB行锁与表锁的加锁规则 InnoDB 存储引擎支持行锁和表锁,但为了保证高并发下的数据一致性,其加锁逻辑非常复杂。理解这些规则,能帮助你快速定位死锁原因或优化锁等待。 一、 理解基础锁模式与兼容性 在深入具体规则前,先弄清楚两种核心锁类型及其兼容关系。如果不理解兼容性,就无法判
MySQL
InnoDB
行锁
66
0
PHP 环境配置:XAMPP 安装与配置
2026-04-16 06:14:55
PHP 环境配置:XAMPP 安装与配置 XAMPP 是一款集成了 Apache 服务器、MySQL 数据库、PHP 解释器以及 Perl 的免费开发环境安装包。它允许开发者在本地计算机上模拟真实的 Web 服务器环境,而无需手动配置每一个组件。本文将详细介绍如何在 Windows 系统上下载、安装
PHP
XAMPP
环境配置
61
0
Go 数据库:database/sql 包与连接池
2026-04-13 08:15:37
Go 数据库:database/sql 包与连接池 在 Go 语言中处理数据库操作主要通过标准库 database/sql 实现。该库提供了一套通用的接口用于连接关系型数据库(如 MySQL、PostgreSQL 等),并内置了高效的连接池机制。正确使用连接池可以显著减少建立 TCP 连接和认证的开
Go语言
数据库
连接池
83
0
PHP 数据库连接:MySQLi 与 PDO
2026-04-12 21:13:25
PHP 数据库连接:MySQLi 与 PDO 在 PHP 开发中,连接 MySQL 数据库主要有两种方式:MySQLi 和 PDO。选择哪一种取决于你的项目需求。以下指南将通过具体步骤,演示如何使用这两种方式建立安全、高效的数据库连接,并提供选择建议。 第一步:明确选择方向 在编写代码前,请根据以下
PHP
数据库连接
MySQLi
54
0
Go 数据库:sql 包与 ORM 框架
2026-04-08 03:27:11
Go 语言提供了两种主要方式与数据库交互:使用标准库 database/sql 进行底层控制,或使用 ORM(对象关系映射)框架进行高效开发。 方式一:使用 database/sql 包 这是 Go 官方提供的轻量级接口,要求手动处理 SQL 语句、行和结果。适合追求性能或处理复杂 SQL 的场景。
Go语言
数据库
sql包
66
0
上一页
1
2
3
下一页