一文搞懂 MySQL/GreateSQL 只读参数:read_only 参数核心区别

红旗Asianux Server Linux V8 安装万里数据库(GreatSQL) ​ 红旗Asianux Server Linux 8.0是为云时代重新设计的操作系统,为云时代的到来引入了大量新功能,包括用于配置管理、快速迁移框架、编程语言和诸多开发者工具,它还为容器工具包提供全面支持,用于创建,运行和共享容器化应用程序,旨在支持从企业数据中心到多云计算平台的工作负载和应用。 阅读详情

一文搞懂 MySQL/GreateSQL 只读参数:read_only 参数核心区别

一、概述

在 MySQL/GreatSQL 数据库管理中,通过设置只读模式来控制实例的数据写入权限是一项常见的运维操作,尤其在搭建主从复制、执行备份、进行维护或实现读写分离时至关重要。MySQL/GreatSQL 提供了多个与只读相关的系统参数,它们从不同维度对实例的读写能力进行约束。理解这些参数的作用、区别及相互影响,能够帮助我们更精确地控制数据库的行为,确保数据一致性和系统高可用。

二、参数介绍

1. innodb_read_only

该参数为静态参数,仅能在 MySQL/GreatSQL 服务启动阶段配置,运行时无法修改。

从 MySQL/GreatSQL 8.0.* 版本开始,启用该变量后,所有存储引擎的表创建、删除操作都会被禁止。核心原因是:无论操作的表属于哪种存储引擎,表的增删及其他涉及数据字典修改的表操作,都会改动mysql系统库中的数据字典表,而这类数据字典表均基于 InnoDB 存储引擎,因此innodb_read_only启用后,相关修改操作会被直接限制。

启用该参数后,即使是超级管理员 root 用户,其相关操作也会受到严格限制。

操作示例

库表创建、修改操作
greatsql> CREATE DATABASE test;
ERROR 1836 (HY000): Running in read-only mode

greatsql> CREATE TABLE t10 (c1 int);
ERROR 1836 (HY000): Running in read-only mode

greatsql> DROP TABLE sbtest1;
ERROR 3604 (HY000): Storage engine cant DROP TABLE 'sysbench.sbtest1'

greatsql> DELETE FROM sbtest1 WHERE id>100;
ERROR 1015 (HY000): Cant lock file (errno: 165 - TABLE is read only)

greatsql> ALTER TABLE sbtest1 DROP key k_1;
ERROR 1836 (HY000): Running in read-only mode
账户与插件管理类操作

因mysql系统库中权限表、插件表、函数表等均为 InnoDB 引擎,启用innodb_read_only后,以下操作均会执行失败:

  • CREATE USER、GRANT、ALTER等账户管理语句
# 创建用户、修改用户
greatsql> CREATE USER t1@'%' IDENTIFIED BY 'abc123';
ERROR 3501 (HY000): The ACL operation failed due to the following error FROM SE: errcode 165 - TABLE is read only

greatsql> ALTER USER tt@'%' IDENTIFIED BY 'abc123';
ERROR 3501 (HY000): The ACL operation failed due to the following error FROM SE: errcode 165 - TABLE is read only
  • INSTALL PLUGIN、UNINSTALL PLUGIN 等插件管理语句;
  • CREATE FUNCTION、DROP FUNCTION 等函数管理语句;
表分析操作限制

启用该参数后,执行ANALYZE TABLE会因无法更新数据字典中的统计信息表而失败:

greatsql> ANALYZE TABLE t1;
+-----------+---------+----------+----------------------------------------------------------------+
| TABLE     | Op      | Msg_type | Msg_text                                                       |
+-----------+---------+----------+----------------------------------------------------------------+
| test01.t1 | analyze | Warning  | InnoDB: Running in read-only mode                              |
| test01.t1 | analyze | Error    | Running in read-only mode                                      |
| test01.t1 | analyze | Error    | Unable to store dynamic TABLE statistics INTO data dictionary. |
| test01.t1 | analyze | status   | Unable to write TABLE statistics to DD TABLEs                  |
+-----------+---------+----------+----------------------------------------------------------------+
4 rows in set (0.01 sec)
非 InnoDB 存储引擎表的特殊操作规则

若数据库中已存在 MyISAM 等非 InnoDB 引擎的表,仅可对表内数据执行 DML 操作,表结构的 DDL 操作仍会被禁止;若强制执行 DDL,可能出现底层文件丢失但数据库元数据残留的异常情况。

数据DML操作可正常执行

greatsql> INSERT INTO t3 VALUES (1),(2);
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

greatsql> DELETE FROM t3;
Query OK, 4 rows affected (0.00 sec)

表DDL操作执行失败

greatsql> DROP TABLE t3;
ERROR 1036 (HY000): TABLE 'columns' is read only

异常情况:表底层文件丢失,元数据仍存在,无法访问表

greatsql> SHOW CREATE TABLE t3\G
ERROR 1017 (HY000): Cant find file: 't3' (errno: 2 - No such file or directory)

greatsql> SHOW TABLES;
+------------------+
| TABLES_in_test01 |
+------------------+
| t1               |
| t2               |
| t3               |
+------------------+
3 rows in set (0.00 sec)

greatsql> SELECT * FROM t3;
ERROR 1017 (HY000): Cant find file: 't3' (errno: 2 - No such file or directory)

# 针对上述元数据残留问题,可通过DROP TABLE IF EXISTS语句清理数据库中的残留表信息:
greatsql> DROP TABLE IF EXISTS t3;
Query OK, 0 rows affected, 1 warning (0.01 sec)

2.read_only

该参数为动态参数,默认处于禁用状态。启用后,服务器会禁止普通用户执行任何更新操作,拥有CONNECTION_ADMIN权限(或已弃用的SUPER权限)的用户除外,是数据库实例级的只读控制参数。

源服务器上 read_only 的配置变更不会复制到副本服务器,副本可独立于源服务器设置该参数的值,不受源库配置影响.

(1)该参数与super_read_only存在强联动关系:

  • 启用super_read_only时,会隐式强制 read_only 设置为 ON;
  • 将read_only置为 OFF 时,会隐式强制 super_read_only 设置为 OFF。

(2)当read_only和super_read_only同时启用时,服务器仍允许执行以下操作,不做只读限制:

  • 副本(replica)服务器中,复制线程发起的更新操作;该特性常用于复制架构,确保副本仅接收源服务器的更新,拒绝客户端的直接修改;
  • 向mysql.gtid_executed系统表写入数据(该表存储当前二进制日志中未记录的已执行事务 GTID);
  • 执行ANALYZE TABLE或OPTIMIZE TABLE语句,两类操作仅做表分析 / 优化,不修改表结构和数据;
  • 执行FLUSH STATUS语句,该语句会始终写入二进制日志;
  • 对临时表(TEMPORARY TABLES)执行的所有操作;
  • 向日志表mysql.general_log和mysql.slow_log插入数据;
  • 对(Performance Schema)表执行UPDATE、TRUNCATE TABLE等更新操作。

(3)尝试启用read_only时(包括因启用super_read_only触发的隐式启用),需满足以下规则,否则会执行失败或被阻塞:

  • 若当前会话持有通过LOCK TABLES获取的显式锁,或存在未提交的事务,启用操作会直接失败并抛出错误;
  • 若其他客户端存在正在执行的语句、活跃的LOCK TABLES WRITE锁,或正在进行事务提交,启用操作会被阻塞,直到锁释放、语句执行完成且事务结束;在此期间,其他客户端申请表锁或开启事务的请求也会被阻塞,直至read_only设置完成;
  • 若存在持有元数据锁的活跃事务,启用操作会被阻塞,直至该事务结束;
  • 持有通过FLUSH TABLES WITH READ LOCK获取的全局读锁时,可正常启用read_only(全局读锁不涉及表级锁,无冲突)。

3.super_read_only

该参数为动态参数,默认处于禁用状态,是比read_only更严格的实例级只读控制参数。启用后,服务器会禁止所有客户端的更新操作,即使是拥有CONNECTION_ADMIN或SUPER权限的特权用户也不例外。

与read_only一致,源服务器上super_read_only的配置变更不会复制到副本服务器,副本可独立设置该参数的值。

核心限制范围

除常规的 DML、DDL 操作外,启用super_read_only后,表面非更新但会修改mysql系统表的操作也会被禁止,包括:

  • CREATE FUNCTION(函数操作);
  • INSTALL PLUGIN、UNINSTALL PLUGIN(插件管理);
  • INSTALL COMPONENT、UNINSTALL COMPONENT(组件管理)。

以上操作的禁用原因均为会改动mysql系统库中的相关系统表。

对事件调度器(Event Scheduler)的影响

(1)若事件调度器处于启用状态,启用super_read_only会导致其无法更新事件数据字典表中的「最后执行」时间戳,进而触发以下结果:

  • 事件调度器在下次尝试执行计划事件时会停止运行,并向服务器错误日志写入相关提示消息;
  • 此情况下event_scheduler系统变量的值仍为 ON,不会自动变为 OFF,即变量配置与调度器实际运行状态分离,与数据库管理员的配置意图可能不一致。

(2)针对事件调度器的恢复,MySQL不同版本有不同规则:

  • MySQL 8.0.26 及以上版本:super_read_only启用后再禁用,服务器会根据需要自动重启事件调度器;
  • MySQL 8.0.26 以下版本:需手动执行启用命令,重新启动事件调度器。

4.transaction_read_only

该参数为事务层面的读写控制开关,核心作用是通过开关限定指定作用域内事务是否允许执行写操作,与实例级的只读控制参数无关联。

基础配置

取值:仅支持OFF(读写模式,默认值)和ON(只读模式);

作用域:分为全局级、会话级、下一个事务级,不同作用域的生效范围和持续时间不同。

(1)全局级
  1. 配置语句:SET GLOBAL transaction_read_only = ON;
  2. 生效规则:为所有后续新建的会话设定默认的事务访问模式;已存在的当前会话不受该配置影响。
(2)会话级
  1. 配置语句:SET SESSION transaction_read_only = ON;
  2. 生效规则:影响当前会话中所有后续执行的事务,直至手动修改该参数值,会话内的事务只读规则才会变更。
(3)下一个事务级
  1. 配置语句:SET @@transaction_read_only = ON;
  2. 生效规则:仅对当前会话的下一个单个事务生效,该事务执行完成后,参数会自动恢复为默认的读写模式,需重新配置才能再次生效。

操作示例

示例 1:全局级 / 会话级只读的限制效果

全局级和会话级启用只读后,对事务内的DML 和 DDL 操作均会禁止,执行时报错一致。

1. 设置会话级只读
greatsql> SET SESSION transaction_read_only=ON;

2. 执行DML操作,报错
greatsql> INSERT INTO test.t01 VALUES('c',null,'c',null);
ERROR 1792 (25006): Cannot execute statement in a READ ONLY transaction.

3. 执行DDL操作,报错
greatsql> CREATE TABLE test.t16 (c1 int);
ERROR 1792 (25006): Cannot execute statement in a READ ONLY transaction.

4. 执行账户管理DDL,报错
greatsql> CREATE user test01@'%';
ERROR 1792 (25006): Cannot execute statement in a READ ONLY transaction.
示例 2:下一个事务级只读的限制效果

下一个事务级启用只读后,仅对 DML 操作生效,DDL 操作不受限制,且配置仅对单次事务有效。

1. 设置下一个事务级只读
greatsql> SET @@transaction_read_only=ON;

2. 执行DML操作,报错
greatsql> INSERT INTO test.t01 VALUES('c',null,'c',null);
ERROR 1792 (25006): Cannot execute statement in a READ ONLY transaction.

3. 重新设置下一个事务级只读(上一步DML已消耗该配置,需重新设定)
greatsql> SET @@transaction_read_only=ON;

4. 执行DDL操作,成功执行
greatsql> CREATE TABLE test.t15 (c1 int);
Query OK, 0 rows affected (0.04 sec)

三、总结

本文详细解析了 MySQL/GreatSQL 中innodb_read_only、read_only、super_read_only、transaction_read_only四类只读参数的核心作用、适用场景、限制范围及相互关系,核心要点总结如下:

参数层级与定位清晰

  • innodb_read_only:静态参数,启动时配置,该参数仅作用于 InnoDB 存储引擎,会限制所有针对 InnoDB 表的写入操作(包括数据增删改、表结构修改等),且无权限绕过(即使是拥有 SUPER 权限的管理员也无法执行 InnoDB 写入操作)。
  • read_only:动态实例级参数,仅限制普通用户,特权用户可写入,是主从复制中从库常规只读配置。
  • super_read_only:更严格的动态实例级参数,限制所有用户(含特权用户)写入,与 read_only 存在强制联动,适用于高安全级只读管控,super_read_only 启用会强制开启 read_only,关闭 read_only 会强制关闭 super_read_only。
  • transaction_read_only:事务级动态参数,与实例级只读无关,可在全局、会话、单事务维度控制只读,灵活适配精细化事务读写需求。
新版本 | GreatSQL 8.0.32-26全新发布 增强“四高”诸多新特性 🌟GreatSQL 8.0.32-26版本全新发布 🙌高可用+高性能+高安全+高兼容全面加强! 🙌增强多项新特性,打造更优使用体验! 戳上方链接一键了解详情~ 阅读详情

相关推荐

GreatSQL vs MySQL性能测试来了,速围观~

无论ibp(innodb_buffer_pool_size)是否充足,MySQL的性能都远不如GreatSQL。MySQL的性能平均约为GreatSQL的70%(最高84.5%,最低61.7%)。在ibp充分的情况下,随着并发数的增加,MySQL并没有表现出该有的性能提升,反倒掉头向下,可见还是不够稳定。在ibp不够的情况下,GreatSQL开启thread pool性能有所提升;当ibp充足的情况下,区别就不大了。MySQL vs GreatSQL性能数据对比各数据库版本分别为。

m0_73257876的博客 735

图文结合带你搞懂GreatSQL体系架构

往期系列回顾很多小伙伴使用了GreatSQL,但是对GreatSQL的底层原理还不是很了解,今天就带大家一起揭开GreatSQL体系架构的神秘面纱!首先来回顾一张经典的体系架构图:图1_GreatSQL5.7 版本体系架构图由此可以发现,GreatSQL5.7 由以下几部分组成GreatSQL数据库区别于其他数据库的一个特点就是其可插拔的表存储引擎,特别需要注意的是,存储引擎是基于表的,而不是数据库。然而,经典同时也意味着这幅图已经相当陈旧了。在GreatSQL8.0 及更高版本中,查询缓存这一功能已经被移

GreatSQL2021的博客 569

技术干货 | MGR新手超全入门指南 GreatSQL部署MGR集群及运维知识全get!

**MGR新手福利来了,一文帮大家快速掌握MGR集群的部署和运维知识点,**新建集群、添加新节点、滚动升级、切主在这全都有,超详细。 0内容提纲 1、运行环境 2、准备my.cnf配置文件 3、初始化MySQL实例 4、构建MGR集群 4.1 构建MGR集群前的准备工作 4.2 配置MGR集群PRIMARY节点 4.3 查看MGR集群状态 4.4 测试数据读写 5、进一步,再增加一个新节点 6、再进一步,切换主节点 6.1 先升级SECONDARY节点 6.2 再升级PRIMA

GreatDB的博客 1078

GreatSQL 8.0.32-26 发布,安全性进一步增强

GreatSQL 数据库是一款 开源免费 数据库,可在普通硬件上满足金融级应用场景,具有 高可用、高性能、高兼容、高安全 等特性,可作为 MySQL 或 Percona Server for MySQL 的理想可选替换。GreatSQL 8.0.32-26 版本的发布,不仅在功能上进行增强,也在持续关注和投入数据库性能和安全性。8月5日,GreatSQL 8.0.32-26 版本发布,对应的 Docker 镜像已推送,此次还提供了阿里云 ACR 镜像。ღ( ´・ᴗ・` )~其中在高安全方面,新增两个特性。

少安事务所 752

GreatSQL与MySQL性能对比测试,带您一同探索数据库的速度差异

在选择适合自己的数据库时,性能是一个至关重要的考虑因素。本文将介绍GreatSQL和MySQL两个常见的关系型数据库,并通过性能测试来比较它们之间的速度差异。除了查询性能之外,我们还可以比较GreatSQL和MySQL在插入和更新操作方面的性能差异。除了查询性能之外,我们还可以比较GreatSQL和MySQL在插入和更新操作方面的性能差异。然后,我们分别在GreatSQL和MySQL中执行了一个查询,并记录了执行时间。然后,我们分别在GreatSQL和MySQL中执行了一个查询,并记录了执行时间。

HackGJN的博客 868

MyEclipse 2017 CI 10安装与激活

本文介绍MyEclipse 2017 CI 7、CI 8、CI 9和CI 10的安装与激活。此方法理论上应该能激活MyEclipse 2017 CI所有系列,即激活方法是通用的,只是激活文件略有不同。本文提供MyEclipse 2017 CI 7、CI 8、CI 9和CI 10的激活文件。说明:博主所提供的压缩包格式均为RAR5,即WinRAR 5.0以上的版本才能正常解压,别的压缩软件博主不太清...

weixin_42539046的博客 9416

在统信UOS上二进制安装GreatSQL

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 作者:vatebur 文章来源:GreatSQL社区投稿 UOS二进制安装数据库和其他 Linux 基本一样,网上命令行安装的教程很多。考虑到 UOS 自带图形化界面,为了降低一点安装门槛,本文尽量使用图形化界面安装。 纯命令行安装可以参考:https://greatsql.cn/docs/user-manual/3-quick-start/3-2-qui

GreatSQL2021的博客 1302

Windows下快速搭建MSYS2开发环境(含GCC与MinGW配置)

本文详细介绍了在Windows系统下快速搭建MSYS2开发环境的完整流程。通过使用pacman包管理器,可以便捷地安装GCC编译器与MinGW-w64工具链,并配置系统环境变量。文章还涵盖了从基础安装、系统更新到编译开源项目的实战指南,帮助开发者高效构建原生Windows程序,显著提升C/C++开发效率。

weixin_29213827的博客 539

GreatSQL优化技巧:半连接(semijoin)优化

GreatSQL的 IN 子查询适用于半连接时,优化器提供了5种优化策略:Table pullout、FirstMatch、LooseScan、Duplicate weedout、materialize。

GreatSQL2021的博客 957

UG/NX二次开发Siemens官方NXOPEN实例解析—1.3 BlockStyler/ExtrudewithPreview

随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。

MarcoPro的博客 1633

安装了anaconda,pycharm导入numpy时提示没有该包(模块)?

**问题详情:**我安装了anaconda,在利用Pycharm学习numpy这个库的时候,导入numpy这个包的时候提示我没有nummpy这个模块:No module named numpy.如下图所示。 应该说安装了Anaconda,里边就自带了numpy这个库,就应该能够使用。我一个新手怎么搞得懂呢?于是网上查了查找到了一个解决办法,说是我项目的解释器应该设置为Anaconda安装目录下的python.exe,而不应该是系统自带的:https://blog.youkuaiyun.com/aanndd77/art

qq_39820505的博客 1万+

GreatSQL是一个国内自主的开源数据库,可替代mysql

此外,GreatSQL社区还提供了MySQL Shell for GreatSQL,这是一个高级客户端和代码编辑器,支持JavaScript和Python脚本功能,以及与MySQL一起使用的API。它可以用来管理数据库,特别是对MGR的支持,可以方便地进行搭建、管理和配置。GreatSQL的架构可以分为连接层、服务层和存储引擎层。连接层负责与客户端建立连接,服务层是GreatSQL的核心,包括连接器、分析器、优化器、执行器等,而存储引擎层则负责数据的存储和提取。

地球空间 3193

西门子 G120 变频器报文

G120报文

mmxxoo_xxmmp的博客 8080

GreatSQL5.7 与 8.0 对 DATE 非法值处理方式不同

MySQL 8.0 与 5.7 在 DATE 非法值处理上差异显著,本文不仅对比两者表现,还深入探讨成因,为从业者提供实操建议。

GreatSQL2021的博客 1103

从VLM到VLA概论

智驾视觉大模型

xiaomu_347的博客 1712

各向同性、VTI、TTI以及双相介质波场数值模拟

各位读者,大家好!在今天的文章中,我将介绍关于波场数值模拟中的各向同性、VTI(垂直横向等参数介质)、TTI(倾斜横向等参数介质)以及双相介质的基本概念。同时,我也会提供一些基础的Fortran代码片段,供大家了解和学习。

qq_38334677的博客 1707

借助AI将PostgreSQL迁移到GreatSQL(文末可免费领红包封面)

* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文将介绍如何从 PostgreSQL 到 GreatSQL 的数据迁移,并运用 AI 协助迁移更加方便。迁移的方式有很多,例如:pg_dump:导出SQL文件,修改后导入 GreatSQL 数据库。COPY:导出txt文本文件,导入 GreatSQL 数据库。pg2mysql:从 PostgreSQL 迁移到 MyS...

老叶茶馆 244

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

腾讯 GreatSQL 全链路实战:从国产化选型到 MGR 集群部署

【摘要】GreatSQL是由腾讯主导开发的开源MySQL分支数据库,基于MySQL 8.0内核深度优化,完全兼容MySQL协议与语法,特别适配国产信创环境。其核心优势包括:增强的MGR高可用架构,支持仲裁节点避免脑裂;性能较原生MySQL提升30%;提供国密加密等安全特性;完美适配鲲鹏、飞腾等国产CPU及麒麟、统信等操作系统。安装部署支持二进制包方式,配置与MySQL高度一致,同时针对MGR集群进行了优化预设。GreatSQL的零代码迁移特性使其成为金融、政务等领域替代Oracle/MySQL的理想选择,特

一火的专栏 842

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Mysql5.7变为GreatSQL 8.0.32-25过程中,SQL语句报错及解决方案

考虑兼容国产化数据库,现需要将Mysql5.7变为GreatSQL,在执行部分sql时,发现在Mysql5.7无报错,在GreatSQL有报错,在此记录一下遇到的几个错误。

qq_40001822的博客 1407

GreatSQL 8.0.32-26 今日发布

等多方面都有增强新特性,包括 Clone 增量备份、压缩备份,MGR 新加入成员节点时自动选择最新数据节点为 donor 节点,NUMA 亲和性优化,非阻塞式 DDL,无主键表导入优化,更多 Oracle 兼容用法,最后登录信息,基于规则的数据脱敏功能等多个新特性。当有新成员节点加入 MGR 时,如果选择 Clone 方式复制数据,支持自动选择从最新事务数据的成员节点复制数据,可有效提升 Clone 速度,提高 MGR 的服务可靠性。当新加入节点触发 Clone 方式复制数据时,也支持该特性。

GreatSQL2021的博客 1255

GreatSQL特性介绍及未来展望--叶金荣|万里数据库

活动详情大会主题:云原生--数据和未来大会时间:2021.12.188:40-18:10大会地点:深圳市福田区车公庙深铁置业大厦 3 楼精细潮菜宴会厅 1 厅Part1上午场18:40-...

老叶茶馆 817

GreatSQL,打造更好的MGR生态

用GreatSQL,上MGR更放心!P.S,文末有彩蛋,别错过 :)在3月20日「3306π」社区成都站分享会上,万里数据库CTO娄帅做了主题分享《MGR Bug修复之路》。娄帅指出,由于...

老叶茶馆 608

面向金融级应用的GreatSQL正式开源

本文首发于 GreatSQL社区 微信公众号。经过几个月的紧张筹备,GreatSQL宣布正式开源。GreatSQL是源于Percona Server的分支版本,除了Percona Serv...

老叶茶馆 510

MySQL 索引深入理解:B+ 树、二级索引、联合索引与查询优化

理解二级索引后,就可以理解回表了。SELECT *MySQL 的执行过程分为三个步骤。覆盖索引(Covering Index)并不是一种独立的索引类型,而是一种查询效果。SQL 查询需要的所有字段,都能够直接从某个索引中获得,不需要再访问聚簇索引获取其他字段。例如:因为user_id已经包含在二级索引中,所以 MySQL 可以直接返回结果。不需要回表。联合索引(Composite Index)是同时使用多个字段建立的索引。它的排序规则是:首先按照user_id排序。当user_id。

m0_64642997的博客 135

MySQL 单点详解(14)

给定一条 SQL,联合索引的列该怎么排呢?

2401_88601046的博客 345
上一篇: MySQL/GreatSQL 游标重解析后条件下推core缺陷深度排查
下一篇: 参数配置不当导致GreatSQL异步复制IO线程中断
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值