自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

老叶茶馆

叶金荣,ORACLEMySQLACE,专注MySQL十余年,分享MySQL技术及工作心得.个人站点:http://imysql.com

  • 博客(1143)
  • 收藏
  • 关注

转载 重现一条简单SQL的优化过程

背景接到客户诉求说一条SQL长时间运行不出结果,让给看看怎么回事,SQL不复杂,优化措施也不复杂,但是要想SQL达到最优状态,也是需要经过一番考量并做出选择的。下面借实验还原一下此SQL优化过程。实验:数据库环境:MySQL5.7.39测试表结构如下:mysql>showcreatetablet_1\G***************************1.row*****...

2023-05-30 07:00:22 19

转载 一文简单了解并构建Dockerfile

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。那么今天要介绍的Dockerfile是什么呢?简单来说Dockerfile用来描述Docker镜像的文件,而且是类似源码的描述。假设现有一台机器,docker容器中有镜像如下:[root@localhost~]#dockerimagesRE...

2023-05-25 07:04:32 23

转载 MySQL kill会话不起作用?

背景在一次日常测试中发现,kill 一个会话后,SQL语句依然在运行并没终止;被kill的会话重新连接并继续执行原来的SQL语句。测试本次测试基于MySQL 8.0.271.创建测试表create table t1 (id int, name varchar(30)); insert into t1 values (1,'a'),(2,'b');2.开启3个会话session1sessio...

2023-05-23 10:25:15 29

转载 MySQL optimizer_trace cost量化分析

前言:我们在日常维护数据库的时候,经常会遇到查询慢的语句,这时候一般会通过执行EXPLAIN去查看它的执行计划,但是执行计划往往只给我们带来了最基础的分析信息,比如是否有使用索引,还有一些其他供我们分析的信息,比如使用了临时表、排序等等,却无法展示为什么一些其他的执行计划未被选择,比如说明明有索引,或者好几个索引,但是为什么查询时未使用到期望的索引等explainselect*fromba...

2023-05-18 07:01:25 27

转载 Redis实现分布式锁的几种方案

1.前言对于Redis实现分布式锁的几种方案这个话题,展开之前我想先简单聊聊什么是分布式锁,分布式锁的使用场景,除了Redis外还有什么技术实现分布式锁等一系列内容。1.1分布式锁说大一点,就是在现在发展越来越迅速的大背景下,去中心化分布式系统越来越普及,在我们实际的生产开发当中,有一种不可避免的场景就是多个进程互斥的对其资源的使用,为了保证数据不重复,要求在同一时刻,同一任务只在一个节点上运行,...

2023-05-16 07:05:35 19

转载 有趣的 events_statements_current 表问题

什么是events_statements_current表在GreatSQL中,PFS下有一张内存表: events_statements_current,看到这个名称"xxx_current",小白如我可能会认为这张表中的数据就是当前系统的活跃(active)语句。该表的描述如下(有部分省略):mysql>descevents_statements_current;+--------...

2023-05-11 07:00:55 34

转载 在MySQL社区版中也用上审计插件

前言MariaDB Auditing Plugin的安装查看audit相关参数启用审计功能功能测试前言数据库审计功能主要将用户对数据库的各类操作行为记录审计日志,以便日后进行跟踪、查询、分析,以实现对用户操作的监控和审计。审计是一项非常重要的工作,也是企业数据安全体系的重要组成部分,等保测评中也要求有审计日志。对于 DBA 而言,数据库审计也极其重要,特别是发生人为事故后,审计日志便于进行责任追溯...

2023-05-09 07:01:40 38

转载 Percona 8.0.30中"show engine innodb status"导致coredump排查及分析

1. 异常崩溃GreatSQL合并Percona-Server 8.0.30的Beta版测试中,QA报了一个crash的bug:###########buglist##########benchmarksql加载1000仓数据时,数据库实例发生coredump。core堆栈信息如下:#00x00007f51315a39d1inpthread_kill()from/lib...

2023-05-05 09:06:34 28

转载 在统信UOS上可视化二进制安装 GreatSQL

UOS二进制安装数据库和其他 Linux 基本一样,网上命令行安装的教程很多。考虑到 UOS 自带图形化界面,为了降低一点安装门槛,本文尽量使用图形化界面安装。纯命令行安装可以参考:https://greatsql.cn/docs/user-manual/3-quick-start/3-2-quick-start-with-tarball.html本文直接把 GreatSQL 安装在了用户目录(非...

2023-04-27 09:02:29 84

转载 故障案例:MySQL唯一索引有重复值,官方却说This is not a bug

问题原因故障解决方案复现步骤参考文献一、问题:MySQL5.7.38主从架构,主节点唯一索引上(唯一索引不是主键)有重复值,全部从节点报1062,SQL线程状态异常,根据SQL线程报的binlog位置点,insert 数据时有重复值,插入失败二、原因:unique_checks=0时导致,在bug(106121)列表中官方解释的原因:该参数关闭,维护唯一索引时,不会进行物理读,只会进行内存读,来确...

2023-04-25 07:01:23 31

转载 一个值得关注的技术公众号「腾讯云开发者」

今天向大家推荐的是腾讯云技术社区的公众号,是腾讯官方推出的技术知识分享阵地,每周公开腾讯最新的技术工程方案(如微信、健康码、王者荣耀等知名业务的技术架构)、ChatGPT 等行业前沿热点解读、研发经验和工作方法等干货,欢迎粉丝朋友们扫描下方二维码关注????同时,也和腾讯联合为大家准备了专属福利,扫描二维码关注后回复关键词【腾云驾雾】,即可参加抽奖,索尼音响、蓝牙耳机、机械键盘、腾讯视频 VIP 年卡、...

2023-03-27 07:00:58 63

转载 MySQL中sp运行check表版本更新流程解析

一、MySQL的sp运行SQL语句两个步骤介绍二、代码跟踪三、知识应用四、总结一、MySQL的sp运行sql语句两个步骤介绍MySQL的sp运行SQL语句需要执行2个步骤:prepare和execute。第一次执行的时候先执行prepare,进行相关语句parse、itemize、fix_fields等操作,然后才开始进行execute操作。等第二次再执行该sp的时候就直接运行execute而不需...

2023-03-23 07:00:32 51

转载 gt-checksum 1.2.1发布,新增表结构校验及修复等超实用特性

*GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。重要的话先说,今晚(3月20日)19:30 gt-checksum新版本发布会,扫码(或点文末阅读原文)预约gt-checksum 1.2.0版本发布后,受到了广大社区用户的热烈响应。短短几天,便有几十个star,以及社区用户提交了十几条issue反馈问题,更有热心用户帮忙优化了Dockerfile,据说还有某大厂计划...

2023-03-20 12:00:20 68

转载 图文结合带你搞懂MySQL日志之General Query Log(通用查询日志)

往期回顾图文结合带你搞懂MySQL日志之relay log(中继日志)图文结合带你搞懂MySQL日志之Slow Query Log(慢查询日志)图文结合带你搞懂MySQL日志之Error Log(错误日志)图文结合带你搞懂MySQL日志之Redo Log(重做日志)图文结合带你搞懂InnoDB MVCC图文结合带你搞定MySQL日志之Undo log(回滚日志)什么是通用查询日志通用查询日志(Ge...

2023-03-19 07:00:30 35

转载 show engine inndob status执行流程简析

词法分析主要是通过DFA有限状态机进行词素分析,并且返回相关的token和token对应的值,供语法分析阶段使用。而语句里面实际上主要是这4个词素show/engine/innodb/statustoken(终结符包含)SHOW/ENGINE_SYM /STATUS_SYM,在符号表中包含:{SYM("SHOW", SHOW)},{SYM("ENGINE", ENGINE_SYM)},{SYM("...

2023-03-17 19:23:30 39

转载 GreatSQL 8.0.25-17今日发布

1.新增特性2.稳定性提升3.其他调整4.bug修复5. GreatSQL VS MySQL社区版6. GreatSQL Release NotesChanges in GreatSQL 8.0.25-17(2023-3-13)GreatSQL 8.0.25-17 是一个微小改进版本,主要是修复GreatSQL中InnoDB并行查询可能导致查询hang住,甚至crash的问题,其他方面和Great...

2023-03-13 12:43:57 40

转载 SELinux 权限问题导致 GreatSQL 运行不了的坑

系统版本:Linux version 4.18.0-348.el8.x86_64前言SELinux 是什么安全增强型 Linux(SELinux)是一种采用安全架构的 Linux® 系统,它能够让管理员更好地管控哪些人可以访问系统。它最初是作为 Linux 内核的一系列补丁,由美国国家安全局(NSA)利用 Linux 安全模块(LSM)开发而成。SELinux 工作原理SELinux 定义了每个人...

2023-03-12 07:00:56 43

转载 好用的数据校验&修复工具gt-checksum开源啦

*GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。1. 背景介绍2. 功能特性3. gt-checksum使用3.1 标准使用案例3.2 直接在命令行模式下使用3.3 使用极简配置文件案例4. 项目信息5. 开源发布会不用说,看名字也知道,gt-checksum工具是数据校验工具。没错,gt-checksum 是GreatSQL社区新增的成员,它是 一款静态数据库校验...

2023-03-06 12:00:50 141

转载 NL连接一定是小表驱动大表效率高吗

前言两表使用nest loop(以下简称NL)方式进行连接,小表驱动大表效率高,这似乎是大家的共识,但事实上这是有条件的,并不总是成立。这主要看大表扫描关联字段索引后返回多少数据量,是否需要回表,如果大表关联后返回大量数据,然后再回表,这个代价就会很高,大表处于被驱动表的位置可能就不是最佳选择了。实验举例使用benchmarksql压测的两个表bmsql_warehouse与bmsql_order...

2023-02-28 07:00:07 94

原创 从零开始学习MySQL调试跟踪(2)

1. 启用coredump2. 制造一个coredump场景3. 真实故障场景分析跟踪上一篇文档介绍了如何构建gdb跟踪调试环境,本文介绍如何根据错误日志信息,跟踪定位问题可能的原因,以及如何利用coredump文件查找问题线索。1. 启用coredump程序运行过程中可能会异常终止或崩溃,OS会把程序挂掉时的内存状态记录下来,写入core文件,这就叫 coredump,通过gdb结合core文件...

2023-02-23 07:00:36 129

原创 从零开始学习MySQL调试跟踪(1)

1. 编译GreatSQL2. 安装gdb3. 开始调试GreatSQL源码3.1 利用gdb设置断点3.2 使用 Trace 文件调试有时为了跟踪故障需要调试MySQL/GreatSQL源码,本文介绍如何在Linux下构建MySQL/GreatSQL源码调试环境。在这之前,我也是一名小白,一起从零开始探索吧。本文以CentOS 8.x环境下的GreatSQL 8.0.25-16版本为例。1. 编...

2023-02-21 07:00:18 136

转载 MySQL利用表空间透明传输快速恢复单表

使用方法1、首先创建一个测试表test1,并插入几条数据:mysql>createtabletest1(idintauto_incrementprimarykey,namevarchar(20));QueryOK,0rowsaffected(0.05sec)mysql>insertintotest1(name)values('张三'),(...

2023-02-19 07:00:42 86

转载 MySQL客户端的进阶操作

引言作为一个MySQL数据库从业者,我们最常用的工具就是mysql了,然而如何让它变的更好用,你了解吗?mysql Client Commands作为连接MySQL数据库的工具,mysql其实有很多非常有用的命令设置,有一些是我们日常使用的,比如\g、\G、\q,也有我们不太常用的\P、\T。今天分享一下我对这些设置的理解,希望能对大家在日常的工作中,有所帮助。支持哪些设置mysql提供了help...

2023-02-16 07:00:28 83

转载 MySQL8.0 show create view BUG解析

作者:崔弘晨诺亚财富数据库DBA 擅长数据库SQL优化,喜欢分享技术* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。背景 前段时间碰到一个比较古怪的MySQL Crash事件,当时打了general日志,发现是一条命令show create view造成的,经过反复实验以及查看源码,终于得以复现并找到原因。环境如下:OS:Centos7.8MySQL:8...

2023-02-14 08:54:49 62

转载 MySQL分区表对NULL值的处理

1.概述MySQL的分区表没有禁止NULL值作为分区表达式的值,无论它是列值还是用户提供的表达式的值,需要记住NULL值不是数字。MySQL的分区实现中将NULL视为小于任何非NULL值,与order by类似。2.range分区表处理NULL1.创建range分区表CREATETABLEt_range(c1INT,c2VARCHAR(20))PARTITIONBYRANGE...

2023-02-12 07:00:21 86

转载 用 LSN 画个 PAGE MAP

*GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。想法从何而来获得雨果奖的科幻小说《三体》中出现了一个流行词汇:降维打击。更高维度文明对较低维度文明的打击不费吹灰之力。这里的“维度”一词,提醒了我看待事物时更换一个维度,也许会有更好的理解。在研究 MySQL 数据库的数据文件时,把数据页平铺,是不是可以有不同的发现。这里的降维,就是把维度放到数据页的维度,而不是内存或...

2023-02-10 07:00:13 52

原创 MySQL好玩新特性:离线模式

继续吹MySQL 8.0~在以前,当需要对MySQL数据库进行维护操作时,通常需要先进行主从切换,然后修改设置并重启实例,关闭网络监听,只允许从本地socket方式登入,再进行相应的维护操作;有时候甚至还要修改相应的防火墙,或者干脆关闭前端业务服务,总体比较麻烦。从MySQL 5.7开始,支持设置为离线模式(offline_mode),再有维护操作需求就不用这么麻烦了。只需在线动态修改,可立即生效...

2023-02-07 07:00:24 133

原创 MySQL 8.0中InnoDB buffer pool size进度更透明

MySQL 8.0 up up up~从MySQL 5.7开始,支持在线动态调整 innodb buffer pool,并为此新增了一个状态变量 Innodb_buffer_pool_resize_status,可以通过观察它了解调整buffer pool过程中的一些状态,例如 Resizing also other hash tables. 或 Completed resizing buffer...

2023-02-05 07:00:24 197

原创 MySQL 8.0不再担心被垃圾SQL搞爆内存

MySQL 8.0.28引入的新功能MySQL 8.0.28开始,新增一个特性,支持监控统计并限制各个连接(会话)的内存消耗,避免大量用户连接因为执行垃圾SQL消耗过多内存,造成可能被OOM kill的风险。首先,需要先设置系统选项 global_connection_memory_tracking = 1,之后可以通过系统状态变量 Global_connection_memory 查看当前所有连...

2023-02-02 07:00:50 189

转载 深入聊聊MySQL直方图的应用

本文是在假定读者了解了直方图是什么,直方图如何进行添加维护的前提下,围绕直方图与索引的对比、何时应该添加直方图,及直方图如何帮助优化器选择更优的执行计划这几个方面来介绍直方图。对直方图不太了解的小伙伴可参考GreatSQL社区的另一篇文章4.直方图介绍和使用|MySQL索引学习直方图的作用直方图用于描述数据表中列上的数据分布,这些关于数据分布的内容,可以帮助优化器更准确地估计给定的where子句...

2023-01-31 07:30:08 78

原创 MySQL 8.0.32如期而至

MySQL 8.0版本计划MySQL 8.0开始采用快速迭代开发模式,基本上是每隔3个月就发布一个新的小版本。去年1月18日(2022.1.18)发布MySQL 8.0.28,今年1月17日发布MySQL 8.0.32,再看看其他几个版本的时间,还真是贼守时啊。版本发布时间上一年版本上一年发布时间8.0.322023.1.178.0.282022.1.188.0.312022.10.118.0.2...

2023-01-19 10:04:49 2240

转载 图文结合带你搞懂MySQL日志之Redo Log(重做日志)

往期文章:图文结合带你搞定MySQL日志之Undo log(回滚日志)图文结合带你搞懂InnoDB MVCC导读前言请读者注意:本文基于 GreatSQL 8.0.25 & MySQL 5.7.7-RC版本,在 MySQL8.0.30 Redo 发生变化,详情见:MySQL 8.0.30动态redo log初探前面聊了MySQL中的Undo Log日志和InnoDB中的MVCC,今天一起...

2023-01-03 07:00:54 129

转载 MySQL MTS下主从表空间相差很大原因解析

简单记录原因,最近我也遇到这样的问题,其实这种问题蛮多的,涉及的知识点也很多,我也仅仅是简单分析了一下,供参考。模拟版本8.0.28。一、问题说明和模拟方式就是主从一个表,主库大约600M,从库大约900M,当然主从的环境肯定是一致的,但是从库的并发比较高MTS使用了16个 worker线程,从并发来看基本都在使用。我模拟的方法也很简单,无非就是主库开启writeset,将参数binlog_tra...

2022-12-29 07:00:59 136

转载 MySQL信号量等待日志阅读

MySQL中偶尔会遇到Hang住问题,show engine innodb status 中会显示大量的如下信息:--Thread140477271320320haswaitedatibuf0ibuf.ccline3439for241.00secondsthesemaphore:S-lockonRW-latchat0x7fc5a5faa520createdin...

2022-12-27 07:00:23 240

转载 MySQL Hash Join前世今生

因工作需要,对MySQL Hash Join的内部实现做了一些探索和实践,对这个由8.0.18开始引入的连接算法有了一定的了解,写文总结与各位大佬分享,欢迎大家指教。因篇幅较长,这份总结分成若干部分,我们今天先一起来看一下MySQL Hash join的变迁史。爬了一下 MySQL worklog[1],并结合源码及各版本的实际使用,个人认为比较重要的 worklogs 为如下几个, 其它的变更一...

2022-12-20 09:09:45 85

转载 Debezium的增量快照

IntroductionCDC(Change-Data-Capture)正被广泛应用于数据缓存、更新查询索引、创建派生视图、异构数据同步等场景,Debezium(https://debezium.io/) 作为 CDC 的代表项目之一,它收集数据库中的事务日志(变化事件)并以统一的事件流格式输出(支持「Kafka Connect」及「内嵌到程序中」两种应用形式)。数据库的事务日志往往会进行定期清...

2022-12-18 07:00:07 158

转载 有趣的statement stack

引子在使用events_statements_current的过程中发现,同一线程在同一时刻,可能有多条记录,与直观感觉不太一样,于是跟踪了一下内部实现,有了本文。STATEMENT STACK的定义STATEMENT STACK 是events_statements_current表被后用于存储当前会话执行语句堆栈的数据结构。在MySQL8中,相关定义如下:/**Maxsizeofthe...

2022-12-15 07:00:40 46

转载 MySQL科学计数法展示解惑

一、问题引入二、代码跟踪三、总结一、问题引入今天遇到一个很奇怪的问题,在MySQL客户端输入,用不同科学计数法表示的数值,展示效果却截然不同:mysql>select1e+14,1e+15;+-----------------+-------+|1e+14|1e+15|+-----------------+-------+|1000000000000...

2022-12-13 07:00:31 230

转载 MySQL 聚合函数初探

MySQL 提供了许多聚合函数,常见的如sum,avg,count,min,max等。那这些聚合函数在MySQL 底层是怎么实现的?聚合函数(Aggregate Function)实现的大部分代码在item_sum.h和item_sum.cc。聚合函数在代码中具体的枚举如下:enumSumfunctype{COUNT_FUNC,//COUNTCOUN...

2022-12-10 07:00:59 74

转载 浅谈 MySQL 新的身份验证插件 caching_sha2_password

介绍从 MySQL 8.0.4 开始,MySQL 默认身份验证插件从 mysql_native_password 改为 caching_sha2_password 。相应地,libmysqlclient 也使用 caching_sha2_password 作为默认的身份验证机制。起因在这之前 MySQL 5.6/5.7 使用的默认密码插件是 mysql_native_password。mysql...

2022-12-08 07:00:32 2108

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除