自定义博客皮肤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

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

转载 好用的数据校验&修复工具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 802

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

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

2023-02-28 07:00:07 216

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

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

2023-02-23 07:00:36 361

原创 从零开始学习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 456

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

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

2023-02-19 07:00:42 392

转载 MySQL客户端的进阶操作

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

2023-02-16 07:00:28 213

转载 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 148

转载 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 229

转载 用 LSN 画个 PAGE MAP

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

2023-02-10 07:00:13 136

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

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

2023-02-07 07:00:24 374

原创 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 397

原创 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 620

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

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

2023-01-31 07:30:08 222

原创 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 2572

转载 图文结合带你搞懂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 249

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

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

2022-12-29 07:00:59 428

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

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

2022-12-27 07:00:23 683

转载 MySQL Hash Join前世今生

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

2022-12-20 09:09:45 208

转载 Debezium的增量快照

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

2022-12-18 07:00:07 462

转载 有趣的statement stack

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

2022-12-15 07:00:40 84

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

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

2022-12-13 07:00:31 397

转载 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 210

转载 浅谈 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 3411

转载 简明binlog event解析

用一个简明、清晰的步骤来解析一下DML操作产生的binlog event。主要是 TABLE_MAP_EVENT 和 UPDATE_ROWS_EVENT 类型的event。使用语法简单易上手的Golang来编码。数据库使用的是MySQL 5.7.34版本, Golang 1.15版本。获取binlog event获取binlog一般是模拟成从库封装通讯 package 向主库发送binlog du...

2022-12-06 07:00:03 736

原创 现在还可以买基金吗,非软文哦

0. 背景说明1. 投资逻辑的变化宏观方面微观方面2. 关于基金投资推导过程投资基金要点好的基金3. 关于股票投资4. 推荐书籍和最后的提醒0. 背景说明因为我一直业余时间搞搞股票的投资,所以最近有若干DBA问我,目前这种情况下,有好的基金推荐吗?刚好我最近有点空闲时间,所以从个人的角度试图回答一下这个问题。我去年在叶老师的公众号上写过一篇文章 一位资深DBA的投资之道,里面详细说了一下基金投资的...

2022-12-04 07:00:02 115

转载 图文结合带你搞懂InnoDB MVCC

前情提要当前读快照读什么是MVCC三个隐藏字段Undo Log回滚日志MVCC版本链ReadView读视图不同隔离级别下MVCC分析READ-COMMITTED隔离级别REPEATABLE-READ隔离级别前情提要事务有四大特性ACID分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)其中隔离性是通过数据库的锁加上M...

2022-12-03 07:00:22 192

转载 自定义变量的一个有趣案例

老叶:大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子今天在群里看到一个有趣的案例直接上案例root@mysql3306.sock>[test]>create table t4(a bigint) ;Query OK, 0 rows affected (0.17 sec)root@mysql3306.sock>[test]>insert into t4 va...

2022-12-01 07:00:17 241

转载 立即注册 | 甲骨文云技术嘉年华重磅开启,全球云大会精彩再现!

随着冬月时节的到来,相信您的御寒装备已备齐。而在全球市场经济寒流正盛的当下,借助数字技术加速创新,正是企业抵御寒冬的优选。2022年10月在拉斯维加斯举办的2022 甲骨文全球云大会(Oracle CloudWorld),带来了划时代的技术创新,1200+场主题演讲与动手实验室大咖汇聚 思想碰撞数据库、云技术、开发等领域的领军人物重磅发布前瞻性技术成果行业翘楚 实践分享众多企业客户、合作伙伴的高管...

2022-11-29 07:00:48 192

原创 MySQL中WHERE后跟着N多个OR条件会怎样。。。

可能会执行非常慢,线上生产环境千万别写出这种SQL ...背景交代用 tpcc-mysql 工具生成50个仓库 的测试数据,表order_line 共有 37970973 条记录。某工具在运行过程中,会产生下面的SQL进行查询,WHERE后跟了N多个条件:mysql>select*fromorder_linewhere(ol_w_id='1'andol_d_i...

2022-11-28 07:00:24 1025

原创 跑步10年回望

回顾跑步这10年有点遗憾,最终还是决定放弃参加2022年厦马,因为要求更早到厦门,也担心回福州后影响小朋友上课,权衡之下还是决定申请退赛。本想在这次活动上实现全马破4的目标,却只能晒个退赛截图。。。今年是厦马20年,也是我跑步10年,同时也是我回到福建的10年。除去MySQL,能让我坚持这么多年的也就跑步了。长期坚持一件事本身并不容易,跑步这么枯燥乏味的事能坚持10年,就更难了。学习和锻炼都是反人...

2022-11-26 14:47:25 238

转载 JDK1.7下测试Connector_J连接MySQL8.0

JDK1.7下测试Connector/J连接MySQL8.0客户的一些应用系统使用的JDK1.7版本,在将数据库迁移到MySQL8.0的过程中,发现有些MySQL connector/J的版本无法连接到MySQL8.0。本文描述了在Linux JDK1.7环境下,测试不同版本Connector/J的方法,也可用于为MySQL接口的国产数据库产品选择Connector/J版本。MySQL Conne...

2022-11-25 07:00:48 535

转载 图文解读MySQL InnoDB Undo log

什么是Undo Log?如何理解Undo LogUndo Log的功能Undo Log的存储结构Undo Log的工作原理Undo Log的类型Undo Log的生命周期Undo Log的配置参数参考文章文章导读:什么是Undo Log?Undo:意为撤销或取消,以撤销操作为目的,返回某个状态的操作。Undo Log:数据库事务开始之前,会将要修改的记录放到Undo日志里,当事务回滚时或者数据库崩...

2022-11-24 07:00:51 328

转载 "--"注释在Oracle和MySQL下的区别

服务端Oracle 中语句注释符 -- 之后的所有语句内容都会被当作注释。SQL>SELECT1,2--1,314FROMDUAL;11--------------------11SQL>SELECT1,2--1,314F...

2022-11-23 07:00:43 136

转载 MySQL中dd::columns表结构转table过程以及应用

一、MySQL的dd表介绍二、代码跟踪三、知识应用四、总结一、MySQL的dd表介绍MySQL的dd表是用来存放表结构和各种建表信息的,客户端建的表都存在mysql.table和mysql.columns表里,还有一个表mysql.column_type_elements比较特殊,用来存放SET和ENUM类型的字段集合值信息。看一下下面这张表的mysql.columns表和mysql.column...

2022-11-22 07:00:23 171

转载 从join的实现窥探MySQL迭代器

以如下left join查询语句为范例:select*fromt1leftjoint2ont1.c=t2.a;以下初始化数据:1DROPTABLEIFEXISTS`t1`;2CREATETABLE`t1`(3`a`intDEFAULTNULL,4`b`varchar(20)DEFAULTNULL5)6...

2022-11-21 07:00:36 145

转载 如何干涉MySQL优化器使用hash join?

前言实验总结前言数据库的优化器相当于人类的大脑,大部分时候都能做出正确的决策,制定正确的执行计划,走出一条高效的路,但是它毕竟是基于某些固定的规则、算法来做的判断,有时候并没有我们人脑思维灵活,当我们确定优化器选择执行计划错误时该怎么办呢,语句上加hint,提示它选择哪条路是一种常见的优化方法。我们知道Oracle提供了比较灵活的hint提示来指示优化器在多表连接时选择哪种表连接方式,比如use_...

2022-11-20 07:00:43 180

转载 破解LIMIT和OFFSET分页性能瓶颈

前言LIMIT和OFFSET有什么问题初探LIMIT查询效率数据准备开始测试分析耗时的原因优化再优化总结前言之前的大多数人分页采用的都是这样:SELECT*FROMtableLIMIT20OFFSET50可能有的小伙伴还是不太清楚LIMIT和OFFSET的具体含义和用法,我介绍一下:LIMIT X 表示: 读取 X 条数据LIMIT X, Y 表示: 跳过 X 条数据,读取 Y 条数...

2022-11-19 07:00:36 230

转载 简析XDP的重定向机制

一. XDP Socket示例解析源码参见:https://github.com/xdp-project/xdp-tutorial/tree/master/advanced03-AF_XDP 该示例演示了如何通过BPF将网络数据包从XDP Hook点旁路到用户态的XDP Socket,解析过程中为突出重点,将只关注重点代码段,一些函数会被精简,比如:错误处理等二. BPF 程序 af_xdp_ke...

2022-11-18 07:00:38 835

转载 网卡限速工具之WonderShaper

‍什么是WonderShaper如何安装WonderShaperWonderShaper使用帮助WonderShaper使用示例查看网卡状态限制网卡速度(单位Kbps)取消限速WonderShaper在测试中的应用网速单位转换总结1.什么是WonderShaperWonderShaper是用来对特定网卡进行快速限速的工具,它实际是对Linux的tc命令进行封装后的shell脚本,所以使用成本比tc...

2022-11-17 07:00:51 761

原创 MySQL批量导入数据时,为何表空间膨胀了N倍

本文目录问题缘起排查思路问题发现问题缘起同事在客户现场利用DTS工具,从A实例将数据迁移到B实例过程中,发现几乎稍大点的表在迁移完成后,目标端表空间大小差不多都是源端的3倍,也就是说表空间膨胀了2倍。排查思路对这篇文章《叶问》第16期有印象的话,应该还能记得,数据迁移(导入导出)过程中,也包括主从复制场景,导致表空间膨胀的原因有几种:MySQL表默认是InnoDB引擎且目前索引只支持B+树索引...

2022-11-16 07:00:05 496

空空如也

空空如也

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

TA关注的人

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