MariaDB 和 GreatSQL 性能差异背后的真相

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性能数据对比各数据库版本分别为。 阅读详情

MariaDB 和 GreatSQL 性能差异背后的真相

前言

最近项目上遇到了两次 MariaDB 和 GreatSQL 的对比,GreatSQL受到客户质疑,最后经过排查抓到性能差异背后的真相。基于此做个分享。

版本

MariaDB版本:10.3.39 该版本为麒麟V10 yum安装

GreatSQL版本:GreatSQL-8-0-32-25

问题一:MariaDB和GreatSQL使用sysbench压测性能相差100倍

某天某客户反馈他们的sysbench压测结果,MariaDB 和 GreatSQL 压测性能相差100倍。

信息收集

架构:均为单机

版本如上文版本所示

配置文件:MariaDB yum安装后/etc/my.cnf 未曾更改

GreatSQL配置文件为GreatSQL用户手册中的配置文件链接如下:

https://GreatSQL.cn/docs/8.0.32-25/3-quick-start/3-4-quick-start-with-cnf.html

两者在同一台机器上轮流运行(即开启MariaDB时关闭GreatSQL,开启GreatSQL时关闭MariaDB)

ps:没收集硬件信息是因为都是运行在麒麟V10上,相同规格硬件运行,这部分已经排除影响。

思考

遇到这么夸张的性能差距,第一反应是innodb_buffer_pool,binlog开关,sync_binlog 和 innodb_flush_log_at_trx_commit这几个和性能关系较大的参数

复现测试

MariaDB 10.3.39 安装
$ yum -y install MariaDB
$ yum -y install MariaDB.server
 #启动MariaDB
$ systemctl start MariaDB
 #查看MariaDB的状态
$ systemctl status MariaDB

查看相关参数

# 登录,初始化首次登录MariaDB的密码为空
$ mysql -uroot -p -S /var/lib/mysql/mysql.sock

#查看binlog
MariaDB [(none)]> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | OFF   |
+---------------+-------+
1 row in set (0.003 sec)

# 查看sync_binlog 
MariaDB [(none)]> show variables like 'sync_binlog';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog   | 0     |
+---------------+-------+
1 row in set (0.002 sec)

# 查看innodb_flush_log_at_trx_commit
MariaDB [(none)]> show variables like '%trx_commit%';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 1     |
+--------------------------------+-------+
1 row in set (0.001 sec)

查到这里其实问题已经明朗。GreatSQL用户手册中配置为binlog开启,sync_binlog 和 innodb_flush_log_at_trx_commit均设置为1。

GreatSQL 安装

参考用户手册进行安装

https://GreatSQL.cn/docs/8.0.32-25/3-quick-start/3-2-quick-start-with-tarball.html

sysbench测试相关说明

针对这个情况使用sysbench在相同情况下做了对比测试:

innodb_buffer_pool大小设置一致,测试组分别为:

MariaDB 和 GreatSQL 均关闭binlog,sync_binlog 设置为0;

MariaDB 和 GreatSQL 均开启binlog,sync_binlog 设置为1。

MariaDB开启binlog,并设置sync_binlog=1(反向操作注释掉相应内容即可)

配置文件加入

[mysqld]
log_bin=on
binlog_format=ROW
sync_binlog=1 
GreatSQL关闭binlog,并设置为sync_binlog=0

在配置文件中加入,并注释掉相关binlog参数

[mysqld]
skip-log-bin
sync_binlog=0

测试结果

由于文章篇幅原因这里附上测试结果,sysbench安装测试请参考:

https://greatsql.cn/docs/8.0.32-26/10-optimze/3-1-benchmark-sysbench.html

10张表每张表1千万数据,8线程,测试结果均取第四次的结果。测试命令样例:

$ sysbench  ./oltp_read_only.lua --mysql-db=database --mysql-host=ip --mysql-port=port --mysql-user=root --mysql-password=password --tables=10 --table_size=1000000 --report-interval=2 --threads=8 --db-driver=mysql --skip-trx=off --db-ps-mode=disable --create-secondary=off --time=60 --simple-ranges=0 --sum-ranges=0 --order-ranges=0 --distinct-ranges=0 --mysql-ignore-errors=9001,9002,9000,1062 run
MariaDB和GreatSQL均关闭binlog,sync_binlog 设置为0

file

file

MariaDB和GreatSQL均开启binlog,sync_binlog 设置为1

file

file

ps:在MariaDB和GreatSQL均开启binlog,sync_binlog 设置为1的测试场景下,只读还存在少量的性能差异。因为测试机器为虚拟机性能有限,磁盘I/O等并不稳定,无法排除硬件的影响,有兴趣的朋友可以自行测试得到更为精确的性能报告

问题一小结

实际生产环境出于对数据安全的考虑,建议开启binlog,sync_binlog设置为1。

开启binlog和sync_binlog=1的情况下,MariaDB和GreatSQL大多数场景下性能相当,只有在只读场景下MariaDB 略优于GreatSQL

关闭binlog和sync_binlog=0的情况下,在update_index和delete场景下GreatSQL略优于MariaDB,而只读场景下MariaDB略优于GreatSQL,其余场景下二者性能相当

问题二:GreatSQL插入大事务hang住,MariaDB不会

某天某客户反馈GreatSQL插入大事务会hang住,而MariaDB不会。在论坛帖子求助也无果

原贴链接https://GreatSQL.cn/forum.php?mod=viewthread&tid=827&extra=&highlight=MariaDB&page=2

信息收集:

可看原贴

show processlsit显示

update的线程State整齐卡在waiting for handler commit

hang住的时候,错误日志打印Warning信息:

[Warning] [MY-013865] [InnoDB] Redo log writer is waiting for a new redo log file. Consider increasing innodb_redo_log_capacity.
[Warning] [MY-013865] [InnoDB] Redo log writer is waiting for a new redo log file. Consider increasing innodb_redo_log_capacity.
[Warning] [MY-013865] [InnoDB] Redo log writer is waiting for a new redo log file. Consider increasing innodb_redo_log_capacity.
[Warning] [MY-013865] [InnoDB] Redo log writer is waiting for a new redo log file. Consider increasing innodb_redo_log_capacity.
[Warning] [MY-013865] [InnoDB] Redo log writer is waiting for a new redo log file. Consider increasing innodb_redo_log_capacity.

问题定位及分析:

1.其配置文件中

"innodb_io_capacity"设置为200过小,可以调整为2000或根据物理I/O适当调整。写负载越高的系统建议设置更高值,但不建议使用高于20000的值。

"innodb_redo_log_capacity"设置为100M过小,可调整到1G~8G之间,在写负载高场景中,可以调整的更大。

2.GreatSQL中的宽表插入大量二进制数据(疑似图片或文件附件二进制内容),易造成更多的page页分裂,造成redo膨胀,redo的写入加剧,消耗更多innodb的I/O,redo的总容量过小,InnoDB在受到重做日志容量压力的情况下被迫把脏页刷新到磁盘,同样需要更多innodb的I/O,innodb的I/O瓶颈导致正常提交的事务hang住。

参数详解:

innodb_io_capacity:

控制innodb可用的总I/O容量

The innodb_io_capacity variable defines the overall I/O capacity available to InnoDB. It should be set to approximately the number of I/O operations that the system can perform per second (IOPS). When innodb_io_capacity is set, InnoDB estimates the I/O bandwidth available for background tasks based on the set value.

You can set innodb_io_capacity to a value of 100 or greater. The default value is 200.

译文

innodb_io_cacapacity变量定义了innodb可用的总I/O容量。它应该设置为大约系统每秒可以执行的I/O操作数(IOPS)。当设置innodb_io_capacity时,innodb会根据设置值估计后台任务可用的I/O带宽。

您可以将innodb_io_capacity设置为100或更大的值。默认值为200。

innodb_redo_log_capacity:

redo日志文件的总容量。

The Innodb_redo_log_capacity_resized server status variable indicates the total redo log capacity for all redo log files.

If innodb_redo_log_capacity is not defined, and if innodb_log_file_size and/or innodb_log_files_in_group is defined, then the InnoDB redo log capacity is calculated as (innodb_log_files_in_group * innodb_log_file_size). This calculation does not modify the unused innodb_redo_log_capacity setting's value.

译文

Innodb_redo_log_capacity_resized服务器状态变量表示所有重做日志文件的总重做日志容量。

如果未定义innodb_redo_log_capacity,并且定义了innodb_log_file_size和/或innodb_log.files_in_group,则innodb重做日志容量计算为(innodb_log-files_in_group*innodb_log_file_size)。此计算不会修改未使用的innodb_redo_log_capacity设置的值。

验证

客户把对应的参数调大,hang住的情况消失,业务能正常使用,达到预期。

问题二小结

该次问题貌似是简单的参数调整,其实其中关联到了以下内容,有兴趣的可以去了解

1.开发规范,是否允许往库宽表插入大量二进制数据,查询怎么办?

2.了解redo是什么,innodb master线程有什么作用(脏页回收线程也合并到master中了)

3.innodb的IO由哪些参数控制,调整为多大是合理值?

4.redo的容量规格由哪些参数控制,调整为多大是合理值?

全文总结

无论是问题一中的100倍性能背后还是插入hang住,其实背后都是对产品的不了解,MariaDB 10.3.39其实对应的是5.7的产品,而且其本身的默认参数调整有作弊嫌疑,默认关闭binlog ,sync_binlog设置为0,checkpoint阈值降低,提高checkpoint的频率等设置,面向测试环境数据是很好看的,但是增加了生产环境的风险和硬件成本。

应知其然,知其不然。

诸君共勉

Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

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

相关推荐

GreatSQL安装篇

操作系统:CentOS7 CPU:X86_64架构 数据库:GreatSQL-8.0.32-26-Linux-glibc2.17-x86_64.tar.xz。

BUTCHER 1123

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

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

地球空间 3193

GreatSQL数据库8.0快速安装部署

本文介绍了GreatSQL数据库在Linux系统上的安装配置流程。主要内容包括:1)系统兼容性检查和环境准备;2)关闭SELinux和防火墙;3)安装依赖包;4)创建安装目录并上传安装包;5)解压和安装RPM包;6)配置数据目录权限;7)初始化数据库并获取临时密码;8)修改配置文件;9)启动服务并修改密码;10)创建远程访问用户。最后还说明了如何使用Navicat客户端连接数据库。整个流程详细说明了从安装到配置的完整步骤。

m0_61389590的博客 707

技术干货 | 图文结合带你搞懂GreatSQL体系架构

所有的数据,数据库、表的定义,表的每一行的内容,索引,都是存在 文件系统上,以文件的方式存在的,并完成与存储引擎的交互。服务层是GreatSQL Server的核心,主要包含连接器、分析器、优化器、执行器等,涵盖 GreatSQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。GreatSQL数据库区别于其他数据库的一个特点就是其可插拔的表存储引擎,特别需要注意的是,存储引擎是基于表的,而不是数据库。

GreatDB的博客 437

单细胞测序中pseudo bulk差异分析的实战指南与审稿人应对策略

本文提供了单细胞测序中pseudo bulk差异分析的完整实战指南,旨在应对审稿人对样本量统计效力的质疑。文章详细解析了从数据聚合、使用DESeq2进行差异分析,到与单细胞水平结果进行交叉验证的全流程,并给出了应对常见问题与撰写回复的策略,帮助研究者提升结论的稳健性与说服力。

weixin_29214199的博客 820

vCenter Server出现no healthy upstream的解决方法

可以通过"VMware vCenter Server Management(服务)"来排查问题,在网页里面找到“服务”模块,会发现有很多服务没有启动起来,而且手动启动也无法启动。7.0 地址后,页面出现“no healthy upstream”,无法正常登录vCenter,重启后依旧如此,该故障的前提是没有对vCenter做过任何配置,如下图所示。于是用命令查询是否有证书过期,发现真有多个服务依赖的证书在当天早上过期。使用如下命令尝试打开服务发现不分服务可以打开,不分服务无法打开。

1万+

CentOS7安装GreatSQL

GreatSQL 数据库是一款 开源免费 数据库,可在普通硬件上满足金融级应用场景,具有 高可用、高性能、高兼容、高安全 等特性,可作为 MySQL 或 Percona Server for MySQL 的理想可选替换。

落的博客 1701

基于stm32开发的红外循迹小车

2.L298N电机驱动模块:分别是5V,12V,GND,可以通过外加电源给驱动模块供电,IN1,IN2,IN3,IN4,EN1,EN2,通过给IN口不同的电平,可以达到控制电机正反转,EN口为使能口,可以通过给EN口不同的PWM波,来达到控制小车速度,1.红外循迹模块:检测黑线的原理是向外发射红外线,当没有遇到黑线的时候,返回回来,之后返回高电平,当遇到黑线的时候,红外被吸收,返回高电平,读取相应IO口的电平就可以知道小车此时的大致位置;模块有四个输入接口,分别连接四个TT马达,驱动小车运动;

2301_81374681的博客 1万+

探索卓越性能:GreatSQL - 高效数据库解决方案

探索卓越性能:GreatSQL - 高效数据库解决方案 项目简介 是一个开源的、高性能的关系型数据库管理系统,它源自 MySQL 的 Percona Server for MySQL 分支,并在此基础上进行了一系列优化和增强,旨在提供更优秀的事务处理能力、更高的并发性能以及更好的大数据处理能力。 技术分析 性能提升 GreatSQL 在 MySQL 的基础上,针对 InnoDB 存储引擎进行了深度...

gitblog_00021的博客 645

V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)

这是一个V-rep机器人仿真实验,较为简单,适合初学者在入门图像识别、机器学习、机器人学的内容时进行学习与训练。 实验涉及的内容有:V-rep机器人仿真,YOLOV3图像识别,强化学习DDPG,UR5机械臂及RG2机械手,Kinect摄像头。 使用环境:Win10,Pytorch0.4,V-rep 整个实验一共由多篇文章组成,本文是第四部分。 第四部分:YOLOV3图像识别 文章目录第四部分:YO...

weixin_42158966的博客 5837

C/C++ 静态代码检查工具cppCheck

Cppcheck是一个用于C/C++代码的静态分析工具,它可以帮助开发者检测代码中的错误;Cppcheck可以检测出许多类型的错误,包括语法错误、未使用的函数、内存泄漏、未初始化的变量等;Cppcheck还支持用户自定义规则,这使得开发者可以根据自己的需求定制Cppcheck的行为;使用--suppress如果你想要忽略某些警告,可以在命令行中使用 --suppress 选项。

贝勒里恩的博客 4950

GreatSQL体系架构的了解

通过学习《图文结合带你搞懂GreatSQL体系架构》,能对GreatSQL的基本底层原理有所了解。一张经典的体系架构图,图1_GreatSQL5.7 版本体系架构图由此可以发现,GreatSQL5.7由以下几部分组成,连接池组件系统管理和控制工具SQL接口组件查询解析器查询优化器缓存组件可插拔存储引擎系统和日志文件GreatSQL数据库区别于其他数据库的一个特点就是其可插拔的表存储引擎,特别需要注...

bisal的专栏 409

vue - 网站接入微信扫码登录功能详细教程,完整详细流程及完整功能示例源代码(附常见问题的解决方案与二维码样式修改方案)

vue.js项目植入微信登录,vue网页项目怎么做微信扫码登录,VUE项目中的微信扫码登录,VUE中最简单的js调用微信扫一扫功能,vue:如何设计网页的微信扫码登录功能,微信扫码功能官方文档,通过vue方式实现二维码扫码功能,vue调用微信扫码,vue H5 调用微信扫描二维码,Vue前端实现微信扫码登录,vue-wxlogin 微信授权登录组件,网站引入的微信登录框如何修改宽高或其他样式,wxlogin 组件插件怎么改变宽高,vue-wxlogin组件怎么自定义样式,微信网页授权,vue调用微信JSDK

✅ 精选推荐文章 6365

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

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

一火的专栏 842

【AutoSAR CAN】04 - 如何使用Davinci Configurator Pro工具配置CAN的波特率

改参数为Tx Arbitration start delay value ,可用于延迟仲裁过程的起始点,用来补偿CAN收发器及线路的传输延迟,以优化传输性能。有关详细信息,请参阅硬件手册。该参数指定采样点模式,即选择多少个采样点的数量,如果选择了每比特三个样本选项,则该点标记第三个样本的位置;我们要配置CAN的波特率,其实就是要弄明白 CAN 控制器的位时序即可,具体的理论部分和EB的配置部门可参考文章《该参数表示传播延迟有多少个时间单位Tq,即上文中的Propagation delay/PROGSEG。.

2601

直驱风机并网系统次同步振荡机理与振荡源定位方法研究

摘要: 本文针对直驱风机并网系统次同步振荡问题,研究了其产生机理与振荡源定位方法。通过建立系统小信号模型,采用特征值分析法揭示了次同步振荡的产生机制,并分析了电网强度、控制器参数对振荡特性的影响。基于暂态能量流理论,提出了通过计算各元件耗散能量来定位振荡源的方法。在MATLAB/Simulink平台搭建仿真系统验证了所提方法的有效性,为直驱风电场次同步振荡的分析与抑制提供了理论依据。 关键词:直驱风机;次同步振荡;小信号模型;暂态能量;振荡源定位

huanghm88的专栏 100

图文解读MySQL/GreatSQL体系架构

*GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。往期系列回顾图文结合系列之带你搞懂MySQL日志系列很多小伙伴使用了GreatSQL,但是对GreatSQL的底层原理还不是很了解,今天就带大家一起揭开GreatSQL体系架构的神秘面纱!首先来回顾一张经典的体系架构图:图1_GreatSQL5.7 版本体系架构图由此可以发现,GreatSQL5.7 由以下几部分组成连...

老叶茶馆 520

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

关于GreatSQL字符集的总结

最近的SQL优化工作中经常遇到因字符集或校验规则不一致导致索引使用不了的问题,修改表的字符集或校验规则相当于把表重构,表中数据量大时,处理起来费时费力,希望应用开发者在设计之初时注意到此问题,让后期接手运维的小伙伴少一些负担。GreatSQL的字符集和校验规则种类繁多,提供灵活性的同时,也带来使用混乱的烦恼。本文对字符集做一个总结,让读者对GreatSQL的字符集有一个全面的了解。

GreatSQL2021的博客 1142

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

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

老叶茶馆 510

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

GreatSQL单机环境安装

《国产数据库之-GreatSQL》介绍了万里的GreatSQL数据库,在这篇文章中,我们尝试搭建一个单机版的环境。GreatSQL是源于Percona Server的分支版本,因此从整体安装的流程上,和MySQL基本一致。1. 下载安装文件可以从这个链接,下载对应平台的安装文件,如果是CentOS,可以选择GreatSQL-8.0.25-15-Linux-glibc2.1...

bisal的专栏 2843

快速上手 GreatSQL 8.0.32-25 with openEuler 24.03 LTS

GreatSQL 针对MGR进行了大量改进和提升工作,新增支持地理标签、仲裁节点、读写节点可绑定动态IP、快速单主模式、智能选主,并针对流控算法、事务认证队列清理算法、节点加入&退出机制、recovery机制等多项MGR底层工作机制算法进行深度优化,进一步提升优化了MGR的高可用保障及性能稳定性。GreatSQL 数据库是一款开源免费数据库,可在普通硬件上满足金融级应用场景,具有高可用、高性能、高兼容、高安全等特性。查看一些基础信息,如操作系统的版本,内核版本,语言设定等。

少安事务所 1792

GreatSQL 深度解析:金融级开源数据库全攻略

GreatSQL 是国内开源数据库生态中的一颗明珠。价值说明高可用不再是痛点MGR 深度优化 + greatdb_ha VIP 自动漂移,搭建企业级高可用集群门槛大幅降低HTAP 一体化Rapid + Turbo 双引擎,让同一套数据库同时支撑交易和分析,无需额外维护 OLAP 系统Oracle 迁移利器广泛的 Oracle 语法兼容,让存量 Oracle 应用向开源迁移有了可行路径安全合规开箱即用国密 SM4、审计、脱敏、备份加密,满足金融、政务等行业的合规要求零迁移成本。

qyq88888的专栏 788

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

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

GreatSQL2021的博客 957

GreatSQL 8.0.25-16初体验

*GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。1. 准备工作1.1 下载RPM包1.2 准备YUM源2. 初始化安装2.1 各节点安装RPM包2.2 初始化Primary节点2.3 初始化Secondary 和 Arbitrator 节点3、搭建MGR集群体验GreatSQL 8.0.25-16各个新特性。在刚刚发布的GreatSQL 8.0.25-16中,主打以...

老叶茶馆 751

GreatSQL源码架构解析:从SQL解析到存储引擎的执行之旅

当你向 GreatSQL 发送一条简单的 SQL 语句,比如 `SELECT * FROM orders WHERE user_id = 10086`,它究竟经历了怎样的旅程?GreatSQL 源码架构解析,带你深入这条从客户端连接、SQL 解析、查询优化,到存储引擎落盘执行的完整链路。GreatSQL 作为一款开源免费、可在普通硬件上满足金融级应用场景的数据库,其源码基于 MySQL 8.4 深

gitblog_00775的博客 275

再见,MySQL!性能被 MariaDB 吊打…

Java技术栈www.javastack.cn关注阅读更多优质文章MySQL的发展史MySQL的历史可以追溯到1979年,它的创始人叫作Michael Widenius,他在开发一个报表工...

Java技术栈,分享最主流的Java技术 1838
上一篇: GreatSQL 在SQL中使用 HINT 语法修改会话变量
下一篇: 如何限制用户修改long_query_time
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值