MySQL 8 中大小写敏感与不敏感排序规则的选择

在 MySQL 数据库设计中,字符集(charset)和排序规则(collation)通常是在创建数据库或表时确定的配置,但它们会直接影响字符串比较、排序以及查询行为。

在 MySQL 8 中,常见的排序规则包括:

  • utf8mb4_bin
  • utf8mb4_unicode_ci
  • utf8mb4_0900_ai_ci

不同排序规则会影响字符串是否区分大小写、排序方式以及模糊查询行为。很多项目在建表时没有认真考虑,后期才在搜索或索引使用时遇到问题。

本文总结在 MySQL 8 中如何根据字段语义选择大小写敏感或不敏感的排序规则。


排序规则与大小写敏感

MySQL 排序规则决定了字符串比较方式。

常见类型可以分为两类。

大小写敏感(Binary Collation)

bin代表二进制,大小写敏感。

例如:

复制代码
utf8mb4_bin

utf8mb4_bin 使用二进制方式比较字符串,本质上按 UTF-8 字节值进行比较,因此字符 Aa 是不同的。

示例:

sql 复制代码
SELECT 'abc' = 'ABC' COLLATE utf8mb4_bin;

结果:

复制代码
0

大小写不敏感(Case Insensitive Collation)

ci代表case insensitive大小写不敏感。 例如:

复制代码
utf8mb4_unicode_ci
utf8mb4_0900_ai_ci

示例:

ini 复制代码
SELECT 'abc' = 'ABC' COLLATE utf8mb4_unicode_ci;

结果:

复制代码
1

这种差异会影响所有字符串操作,包括:

  • =
  • LIKE
  • ORDER BY
  • 索引匹配

适合使用大小写敏感排序规则的场景

大小写敏感通常适用于技术型字段,这些字段本身具有严格的字符含义,不应该因为大小写变化而被认为是相同值。

常见场景包括:

  • 用户名或登录名(部分系统区分大小写)
  • 密码哈希值
  • API Key / Token
  • UUID 或 Hash 字符串
  • Base64 编码
  • 文件路径

推荐使用:

sql 复制代码
COLLATE utf8mb4_bin

示例:

sql 复制代码
CREATE TABLE api_keys (
    id BIGINT PRIMARY KEY,
    api_key VARCHAR(128) COLLATE utf8mb4_bin,
    user_id BIGINT
);

这样可以确保字符串完全精确匹配。


适合使用大小写不敏感排序规则的场景

另一类字段属于用户输入文本,例如自然语言内容。

常见字段包括:

  • 用户昵称
  • 文章标题
  • 商品名称
  • 标签
  • 城市或地址
  • 评论内容

例如用户搜索 iphone 时通常希望匹配:

复制代码
iphone
iPhone
IPHONE

因此推荐使用大小写不敏感排序规则:

复制代码
utf8mb4_unicode_ci

或在 MySQL 8 中更推荐:

复制代码
utf8mb4_0900_ai_ci

示例:

sql 复制代码
CREATE TABLE articles (
    id BIGINT PRIMARY KEY,
    title VARCHAR(255) COLLATE utf8mb4_0900_ai_ci,
    content TEXT COLLATE utf8mb4_0900_ai_ci
);

这样 LIKE 查询和搜索体验会更友好。


为什么不建议全库使用 utf8mb4_bin

有些团队为了避免排序规则混乱,会选择全库统一使用 utf8mb4_bin

虽然简单,但会带来明显问题。

搜索体验差

例如:

sql 复制代码
SELECT * FROM products WHERE name LIKE 'iphone%';

如果字段是 utf8mb4_bin,则不会匹配:

复制代码
iPhone

排序不符合语言习惯

utf8mb4_bin 按字节排序,而不是按语言规则排序。

因此 ORDER BY 的结果可能不符合人类阅读习惯。

模糊查询命中率低

用户输入通常不会严格区分大小写。


推荐的数据库设计方式

比较合理的设计方式是:

数据库默认使用大小写不敏感排序规则,少数需要精确匹配的字段单独使用 _bin

示例:

sql 复制代码
CREATE TABLE users (
    id BIGINT PRIMARY KEY,

    username VARCHAR(64) COLLATE utf8mb4_bin,

    email VARCHAR(128) COLLATE utf8mb4_0900_ai_ci,

    nickname VARCHAR(64) COLLATE utf8mb4_0900_ai_ci,

    password_hash VARCHAR(255) COLLATE utf8mb4_bin,

    bio TEXT COLLATE utf8mb4_0900_ai_ci
);

这种设计可以兼顾:

  • 安全字段精确匹配
  • 用户文本友好搜索

MySQL 8 推荐默认排序规则

如果是新项目,MySQL 8 推荐使用:

复制代码
utf8mb4_0900_ai_ci

特点包括:

  • 基于 Unicode 9.0
  • 支持更多语言字符
  • 支持 emoji
  • 排序更符合语言规则
  • 忽略大小写与重音符号

对于大多数 Web 应用,这是最合理的默认选择。


已有表如何修改大小写敏感规则

在实际项目中,排序规则往往不是一开始就设计好的。随着业务发展,可能会出现以下情况:

  • 原本不区分大小写的字段,需要改为区分大小写
  • 新增字段,需要指定为大小写敏感
  • 整个表需要统一调整排序规则
  • 数据库默认排序规则需要调整

因此了解如何在 已有表结构中调整排序规则非常重要。


修改字段的排序规则

如果只是某个字段需要调整大小写敏感规则,可以直接修改字段的 COLLATE

例如原字段:

sql 复制代码
username VARCHAR(64) COLLATE utf8mb4_unicode_ci

需要改为大小写敏感:

sql 复制代码
ALTER TABLE users 
MODIFY username VARCHAR(64)
CHARACTER SET utf8mb4
COLLATE utf8mb4_bin;

需要注意:

  • MODIFY 时必须写完整字段定义
  • 字符集和排序规则通常需要一起声明
  • 该操作会重建字段索引

新增大小写敏感字段

如果是新增字段,可以在 ADD COLUMN 时直接指定排序规则。

例如新增 API Key:

sql 复制代码
ALTER TABLE users
ADD COLUMN api_key VARCHAR(128)
CHARACTER SET utf8mb4
COLLATE utf8mb4_bin;

这样该字段在比较时会区分大小写。


修改整张表的排序规则

如果希望整张表默认使用新的排序规则,可以使用:

sql 复制代码
ALTER TABLE users 
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;

该操作会:

  • 修改表默认字符集
  • 修改所有未显式指定排序规则的字段
  • 重建表数据

注意:如果字段已经显式指定 COLLATE,则不会被覆盖。

注意:如果从字符集A转换成字符集B,存在无法转换的生僻字,MYSQL转换会报错,比如GBK转UTF8/utf8mb4,MYSQL会报错,最佳实践是先导出文件,对文件字符集进行转换,再导入。


修改数据库默认排序规则

如果希望新建表默认使用新的排序规则,可以修改数据库默认设置。

sql 复制代码
ALTER DATABASE mydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;

该操作只影响:

  • 未来新建的表
  • 不影响已有表

修改排序规则时需要注意的问题

唯一索引冲突

当从 大小写敏感改为不敏感 时,可能出现唯一索引冲突。

例如原数据:

复制代码
UserA
usera

utf8mb4_bin 下是合法的,但在 utf8mb4_unicode_ci 下会被认为是相同值。

执行修改时可能报错:

复制代码
Duplicate entry

因此修改前需要检查数据。


索引可能会被重建

修改字段排序规则时:

  • 索引会重建
  • 大表可能产生锁表
  • 需要评估执行时间

对于生产环境大表,建议:

  • 在低峰期执行
  • 或使用在线 DDL

LIKE 查询行为会变化

例如:

sql 复制代码
SELECT * FROM users WHERE username LIKE 'abc%';

在不同排序规则下:

排序规则 是否匹配 Abc
utf8mb4_bin
utf8mb4_unicode_ci

修改排序规则后,查询结果可能会发生变化。


实际项目中的推荐做法

在业务系统中,一般采用以下策略:

数据库默认排序规则:

复制代码
utf8mb4_0900_ai_ci

用户文本字段:

复制代码
utf8mb4_0900_ai_ci

技术标识符字段:

复制代码
utf8mb4_bin

例如:

sql 复制代码
CREATE TABLE users (
    id BIGINT PRIMARY KEY,

    username VARCHAR(64) COLLATE utf8mb4_bin,

    email VARCHAR(128) COLLATE utf8mb4_0900_ai_ci,

    nickname VARCHAR(64) COLLATE utf8mb4_0900_ai_ci,

    password_hash VARCHAR(255) COLLATE utf8mb4_bin,

    api_key VARCHAR(128) COLLATE utf8mb4_bin
);

这种设计既能保证安全字段的精确匹配,又能保持良好的搜索体验。


无法修改字符集合排序规则的处理方案

在一些系统中,由于历史原因或生产环境限制,可能无法直接修改字段或表的排序规则。例如:

  • 表数据量非常大,修改 COLLATE 会导致长时间锁表
  • 字段存在唯一索引,修改排序规则可能产生冲突
  • 线上系统不允许执行重建表结构的操作
  • 依赖系统较多,修改排序规则风险较高

在这种情况下,可以通过其他方式解决大小写敏感问题。


使用函数统一大小写进行比较

一种简单的做法是对字段值和查询值统一转换大小写,例如转换为小写:

sql 复制代码
SELECT id
FROM user
WHERE LOWER(name) = 'peter';

或者:

sql 复制代码
SELECT id
FROM user
WHERE LOWER(name) = LOWER('Peter');

这种方式可以在任何排序规则下实现大小写不敏感比较。

但需要注意,这种写法存在明显问题。

索引会失效

当字段使用函数处理时,例如 LOWER(name),数据库无法使用原有索引。

例如:

sql 复制代码
WHERE LOWER(name) = 'peter'

优化器无法利用 name 字段上的索引,因此会进行 全表扫描

如果数据量较大(例如百万级以上),查询性能会明显下降,因此不建议在高并发或大数据量场景使用。


使用生成列维护查询字段

另一种方式是使用 生成列(Generated Column) 来维护统一格式的字段,例如统一转换为小写。

例如:

sql 复制代码
ALTER TABLE user
ADD COLUMN name_search VARCHAR(64)
GENERATED ALWAYS AS (LOWER(name)) STORED;

然后为生成列创建索引:

scss 复制代码
CREATE INDEX idx_user_name_search ON user(name_search);

查询时使用生成列:

sql 复制代码
SELECT id
FROM user
WHERE name_search = 'peter';

这种方式的优点是:

  • 查询仍然可以使用索引
  • 不需要修改原字段排序规则
  • 对现有业务影响较小

但需要注意:

  • 需要额外存储空间
  • 写入或更新时需要维护生成列
  • 需要额外维护索引

在写入频繁的业务中,需要评估写入性能影响。


增加搜索中间层(Elasticsearch)

当系统对搜索能力要求较高,同时又无法修改数据库排序规则时,可以引入专门的搜索引擎作为中间层,例如

Elasticsearch。

基本思路是:

  • MySQL 负责事务型数据存储
  • Elasticsearch 负责搜索
  • 数据通过同步机制写入 ES

典型架构如下:

markdown 复制代码
应用服务
    │
    ├── 写入 MySQL
    │
    └── 同步数据 → Elasticsearch
                     │
                 搜索查询

在 Elasticsearch 中可以通过 normalizer 或 analyzer 实现统一大小写,例如使用 lowercase filter。

例如字段 mapping:

json 复制代码
{
  "mappings": {
    "properties": {
      "name": {
        "type": "keyword",
        "normalizer": "lowercase"
      }
    }
  }
}

这样在 ES 中:

复制代码
Peter
PETER
peter

都会被统一为:

复制代码
peter

查询时即可实现大小写不敏感搜索,同时保持高性能。

优点

  • 查询性能高,适合大数据量
  • 支持复杂搜索能力(模糊搜索、分词、全文检索)
  • 不影响原有数据库结构
  • 可以支持更多搜索需求

缺点

  • 架构复杂度增加
  • 需要维护数据同步
  • 引入新的基础设施

三种方案对比

方案 是否使用索引 改造成本 适用场景
LOWER() 函数查询 小数据量、临时查询
生成列 + 索引 查询频繁但无法修改排序规则
引入 Elasticsearch 大规模搜索、复杂查询

小结

当无法修改数据库排序规则时,可以考虑三种解决方案:

函数转换方案:

sql 复制代码
LOWER(column) = 'value'

实现简单,但会导致索引失效。

生成列方案:

sql 复制代码
GENERATED COLUMN + INDEX

可以保持数据库索引性能,但会增加存储和写入成本。

搜索中间层方案:

MySQL + Elasticsearch

适合数据规模较大、搜索需求复杂的系统,同时也能解决大小写敏感问题。

在实际系统设计中,任何影响性能、推翻架构的方法都应该谨慎对待,应根据数据规模、查询复杂度以及系统架构选择最合适的方案。

数据库规范与设计建议

字符集和排序规则的选择,本质上属于 数据库设计阶段的重要决策。在系统上线并产生大量数据之后,再去修改这些基础属性往往成本很高,因此在建库和建表时应尽量提前规划。

在数据库设计规范中,一般建议将以下内容作为设计阶段需要确认的事项:

  • 数据库默认字符集
  • 数据库默认排序规则
  • 特殊字段是否需要大小写敏感
  • 唯一索引字段是否受排序规则影响
  • 是否存在跨系统共享数据库的情况

这些规则一旦确定,上线后不应轻易修改


为什么不建议轻易修改排序规则或字符集

在生产环境中修改字符集或排序规则,通常会带来以下影响。

可能导致锁表

很多修改字符集或排序规则的操作,本质上会触发表结构重建,例如:

sql 复制代码
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

对于大表来说,该操作可能需要较长时间,在某些情况下还会导致表级锁或元数据锁(MDL),影响线上业务读写。

如果表数据达到百万、千万甚至更高规模,风险会进一步放大。


索引需要重建

排序规则变化会影响字符串的比较方式,因此相关字段的索引通常需要重新构建,例如:

  • 普通索引
  • 唯一索引
  • 联合索引

索引重建会带来额外的 I/O 和 CPU 消耗,在高负载系统中可能影响整体性能。


可能引发唯一索引冲突

如果字段从 大小写敏感 改为 大小写不敏感,原本合法的数据可能会出现冲突。

例如原始数据:

复制代码
UserA
usera

utf8mb4_bin 下是合法的,但在 utf8mb4_unicode_ci 下会被认为是同一个值。

此时执行修改可能出现:

复制代码
Duplicate entry

需要提前清理或合并数据。


查询行为可能发生变化

排序规则不仅影响存储,还会影响查询结果。

例如:

sql 复制代码
SELECT * FROM users WHERE username LIKE 'abc%';

不同排序规则下结果不同:

排序规则 是否匹配 Abc
utf8mb4_bin
utf8mb4_unicode_ci

如果直接修改排序规则,部分业务查询结果可能发生变化。


可能导致乱码或转换失败

修改字符集时,如果原有数据编码与目标字符集不兼容,可能会出现乱码或转换失败的问题。

例如:

  • 原表使用 latin1
  • 数据实际存储的是 UTF-8 编码
  • 直接修改为 utf8mb4

可能出现以下问题:

  • 字符被错误转换导致乱码
  • 转换过程中出现非法字符
  • 修改操作报错中断

例如执行:

sql 复制代码
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4;

如果数据存在非法编码,可能出现类似错误:

c 复制代码
Incorrect string value

因此在修改字符集前通常需要:

  • 确认当前数据真实编码
  • 备份数据
  • 在测试环境验证转换结果

在复杂系统中,字符集问题往往不仅涉及数据库,还涉及:

  • 应用程序编码
  • JDBC / 连接字符串配置
  • 数据导入导出工具

如果处理不当,很容易导致系统出现乱码问题。

多表关联查询中字符集或排序规则不同导致索引失效

在多表关联查询中,如果连接字段(Join Key)的字符集或排序规则不同,即使两个字段都建立了索引,数据库在执行查询时仍然可能无法使用索引,从而导致全表扫描,严重影响查询性能。

例如,A 表和 B 表通过 name 字段进行关联:

sql 复制代码
SELECT *
FROM table_a a
JOIN table_b b
ON a.name = b.name;

如果两个字段的定义如下:

scss 复制代码
table_a.name VARCHAR(64) COLLATE utf8mb4_bin
table_b.name VARCHAR(64) COLLATE utf8mb4_unicode_ci

由于排序规则不同,数据库在比较字段值时需要进行字符集或排序规则转换。这种隐式转换会导致优化器无法使用已有索引,从而可能出现以下执行计划:

  • 关联字段索引失效
  • 使用全表扫描
  • 使用临时表或 filesort
  • 查询性能明显下降

在数据量较大的系统中,这类问题会显著放大,特别是在以下场景中:

  • 高频 JOIN 查询
  • 报表或统计类查询
  • 分页查询
  • 多表复杂关联查询

EXPLAIN 执行计划中,通常会表现为:

  • type 变为 ALL
  • possible_keys 存在但 keyNULL
  • rows 扫描数量显著增大

例如:

css 复制代码
EXPLAIN
SELECT *
FROM table_a a
JOIN table_b b
ON a.name = b.name;

可能出现:

type key rows
ALL NULL 1000000

说明数据库没有使用索引,而是执行了全表扫描。

为了避免这种情况,数据库设计时应遵循以下规范:

连接字段应保持完全一致的定义,包括:

  • 字段类型一致(如 VARCHAR(64)
  • 字符集一致(如 utf8mb4
  • 排序规则一致(如 utf8mb4_bin
  • 长度一致

例如:

sql 复制代码
table_a.name VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
table_b.name VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

对于系统中的关联字段,通常建议:

  • 使用统一字符集(推荐 utf8mb4
  • 使用大小写敏感排序规则(如 utf8mb4_bin
  • 尽量使用语义明确、结构简单的字段(例如 ID、编码或 UUID)
  • 避免在 JOIN 条件中进行函数计算或类型转换

例如以下写法都会导致索引失效:

css 复制代码
ON LOWER(a.name) = b.name
vbnet 复制代码
ON a.name = CAST(b.name AS CHAR)

在数据库规范中,应特别强调 连接字段的结构统一性。一旦系统上线并积累大量数据,再去修改字符集或排序规则往往成本较高,因此应在设计阶段就统一规范。

如果系统已经存在字符集不一致的问题,通常需要通过以下方式进行治理:

  • 统一字段字符集和排序规则
  • 重建相关索引
  • 在新表设计时统一规范
  • 尽量避免使用字符串字段作为关联主键

对于高性能系统而言,关联字段优先使用数值型 ID(如 BIGINT) ,既可以避免字符集问题,也能获得更好的索引效率。


推荐的数据库设计规范

在实际项目中,可以通过制定数据库规范来减少后期修改的风险。

推荐的实践包括:

数据库默认字符集统一使用:

复制代码
utf8mb4

数据库默认排序规则使用:

复制代码
utf8mb4_0900_ai_ci

用户输入的自然语言字段使用不区分大小写的排序规则,例如:

复制代码
utf8mb4_0900_ai_ci

技术标识符字段使用大小写敏感规则,例如:

复制代码
utf8mb4_bin

例如:

sql 复制代码
CREATE TABLE users (
    id BIGINT PRIMARY KEY,

    username VARCHAR(64) COLLATE utf8mb4_bin,

    email VARCHAR(128) COLLATE utf8mb4_0900_ai_ci,

    nickname VARCHAR(64) COLLATE utf8mb4_0900_ai_ci,

    password_hash VARCHAR(255) COLLATE utf8mb4_bin,

    api_key VARCHAR(128) COLLATE utf8mb4_bin
);

通过在设计阶段明确这些规则,可以避免在系统规模扩大后再进行高风险的结构调整。


小结

字符集和排序规则虽然看起来只是数据库的基础配置,但它们会影响:

  • 字符串比较逻辑
  • 索引行为
  • 查询结果
  • 系统性能
  • 数据编码正确性

因此在数据库设计阶段就应确定好相关规范,并在项目中统一执行。

一旦系统上线并积累大量数据,再修改这些属性往往需要付出较高成本,甚至可能影响线上业务稳定性。因此应尽量在设计阶段完成规划,而不是在生产环境中频繁调整。

总结

在 MySQL 8 中选择排序规则时,核心原则是根据字段语义进行设计。排序规则不仅影响字符串比较,还会影响索引、模糊查询和唯一约束。

技术标识符字段建议使用大小写敏感规则,例如:

复制代码
utf8mb4_bin

用户输入文本建议使用大小写不敏感规则,例如:

复制代码
utf8mb4_0900_ai_ci

数据库默认排序规则建议使用 utf8mb4_0900_ai_ci,并对特殊字段进行单独配置。

合理的排序规则设计不仅能避免后期迁移问题,也能提升搜索体验和查询效率。

当业务需求发生变化时,可以通过以下方式调整:

  • 修改字段排序规则
  • 新增指定排序规则字段
  • 修改表默认排序规则
  • 修改数据库默认排序规则

在生产环境执行这些操作前,应提前检查数据冲突和索引影响,以避免业务异常。

附录:不同数据规模修改字符集或排序规则的维护成本参考

在实际生产环境中,修改字符集或排序规则通常会触发表结构重建,因此会产生明显的维护成本。

以下表格是基于常见业务环境(普通 SSD、常规服务器配置、在线 DDL 未启用或不可用)的经验估算,仅作为容量规划和风险评估参考。

表数据规模 数据量级 典型维护耗时 锁表风险 建议策略
小表 < 10 万行 几秒 几乎无影响 可以直接修改
中小表 10 万 ~ 100 万 几秒 ~ 数十秒 低峰期执行
中型表 100 万 ~ 1000 万 数十秒 ~ 数分钟 需要评估业务窗口
大表 1000 万 ~ 1 亿 数分钟 ~ 数十分钟 较高 建议使用在线 DDL 或影子表迁移
超大表 > 1 亿 数十分钟 ~ 数小时 必须设计迁移方案

需要注意,实际耗时会受到以下因素影响:

  • 行数据大小(例如是否包含 TEXT/BLOB 字段)
  • 索引数量
  • 磁盘性能(SSD / NVMe / 网络存储)
  • MySQL 配置
  • 是否使用在线 DDL
  • 是否存在并发写入

例如执行如下操作:

sql 复制代码
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

对于千万级数据表,很可能会触发表重建,并在执行过程中产生较长时间的 I/O 压力。

常见风险

修改字符集或排序规则时,可能出现以下问题:

风险类型 说明
锁表 元数据锁可能阻塞写入
索引重建 所有相关索引需要重新构建
查询性能波动 执行期间 I/O 压力上升
唯一索引冲突 大小写敏感规则变化导致冲突
数据乱码 原始数据编码与目标字符集不一致

生产环境建议

对于数据量较大的系统,一般建议采用更安全的迁移方式,例如:

  • 影子表迁移(Shadow Table)
  • 在线 DDL
  • 数据分批迁移
  • 使用中间层同步数据

例如通过以下流程进行迁移:

markdown 复制代码
1. 创建新表(目标字符集)
2. 同步历史数据
3. 同步增量数据
4. 切换业务读写
5. 下线旧表

这种方式虽然步骤较多,但可以显著降低生产环境风险。

总体建议

字符集和排序规则属于数据库底层设计,一旦系统进入稳定运行阶段,大规模修改会带来较高维护成本。因此在系统设计阶段,应尽量提前规划好:

  • 默认字符集
  • 默认排序规则
  • 是否需要大小写敏感字段

通过前期规范化设计,可以避免后期在高数据量环境下进行高风险的结构调整。

相关推荐
泯仲2 小时前
从零起步学习MySQL 第十三章:MySQL 事务详解:原理、特性、并发问题与隔离级别
数据库·学习·mysql
西门吹雪分身2 小时前
ShardingSphere-JDBC水平分片
mysql·shardingjdbc
0xDevNull2 小时前
MySQL的索引下推(ICP)
sql·mysql
倔强的石头1062 小时前
数据库迁移 TCO 全景账本:MySQL 替代中的隐性成本与工程化工具链实测
数据库·mysql·kingbase
小龙加油!!!2 小时前
k8s 部署中间件(mysql、redis、minio、nacos)并持久化数据
mysql·中间件·kubernetes
鸽芷咕3 小时前
从JSON行为差异到事务隔离微调:深度解析金仓“零改造”迁移的内核黑科技
科技·mysql·json·金仓数据库
heze093 小时前
sqli-labs-Less-48
数据库·mysql·网络安全
heze093 小时前
sqli-labs-Less-49
数据库·mysql·网络安全
不过普通话一乙不改名3 小时前
高可用:Keepalived 配置文件详解
mysql