Mysql
文章平均质量分 53
渔夫数据库笔记
微信公众号:渔夫数据库笔记,欢迎关注。
展开
-
Buffer Pool Size of Total RAM No data
通过prometheus监控mysql实例和服务器,使用grafana做可视化展示,grafana 中添加 7362 号dashboard 作为mysql看板,添加11074 号dashboard 作为主机看板。但是添加后查看 MySQL Overview 看板发现 Buffer Pool Size of Total RAM 这个panel 显示 No data原创 2022-11-08 17:52:41 · 1323 阅读 · 1 评论 -
events_statements_summary_by_digest 未正常记录分类sql
events_statements_summary_by_digest 表未记录正常执行的sql分类的原因分析,及问题解决方案原创 2022-11-08 17:13:14 · 1604 阅读 · 0 评论 -
MySQL 字符串截取操作
本文介绍MySQL 中如何进行字符串截取相关操作,以及相关截取函数的使用,比如 left(), right(), substring(), substring_index()、 mid(), substr()原创 2022-10-27 16:52:35 · 8503 阅读 · 0 评论 -
MySQL 通过 jemalloc 管理内存
jemalloc 强调了碎片避免和可扩展的并发支持。jemalloc于2005年首次作为FreeBSD libc分配器使用,从那以后它已经进入许多依赖于其可预测行为的应用程序。jemalloc适合多线程下内存分配管理,jemalloc从各方评测的结果可见与google tcmalloc都不相伯仲,皆为内存管理器领域最高水平。有时候,我们想采用Jemalloc来替代glibc库的malloc内存管理方式,或者如果想启用TokuDB引擎,则就必须启用Jemalloc才行了。原创 2022-10-24 14:19:33 · 3202 阅读 · 0 评论 -
binlog2sql 恢复工具使用
binlog2sql是由国内MySQL大佬danfengcao使用python开发的开源的MySQL Binlog解析工具,能够将Binlog解析为原始的SQL,也支持将Binlog解析为回滚的SQL,去除主键的INSERT SQL。目前测试Python 2.7, 3.4+ MySQL 5.6, 5.7, 8.0 环境都能正常使用项目地址为:https://github.com/danfengcao/binlog2sql原创 2022-10-24 13:46:36 · 814 阅读 · 0 评论 -
MySQL 通过Tcmalloc管理内存
有时候,我们想用 tcmalloc 来替代glibc库的malloc内存管理方式。本博客详细介绍了如何安装 tcmalloc 以及如何加载tcmalloc。原创 2022-10-24 11:37:02 · 776 阅读 · 1 评论 -
MySQL 级联从库延迟
MySQL 主从延迟 Seconds_Behind_Master 值具体计算方式分析原创 2022-09-13 17:14:04 · 461 阅读 · 0 评论 -
reset masert; reset slave; reset slave all;
本文详细介绍了 reset master; reset slave; reset slave all; 等几个参数背后到底做了哪些操作原创 2022-09-07 15:39:11 · 2275 阅读 · 0 评论 -
pt-archiver 归档慢问题分析
pt-archiver 归档慢问题分析处理原创 2022-05-18 18:06:29 · 899 阅读 · 0 评论 -
淘宝数据库内核月报搜索工具
一:工具作用该工具可以根据指定关键字搜索淘宝内核月报的标题,正文及代码三个部分,只要其中一个部分有关键字匹配,就会输出该篇月报的标题及url。二:工具使用方法双击 "内核月报搜索.exe" 执行该工具,执行后首先提示输入关键字,提示信息如下:请输入关键字,最多支持3个关键字,多个关键字间用逗号分隔:NOTE1:最多支持输入三个关键字,指定多个关键字时以逗号分隔关键字(注意如果不使用逗号而使用空格会被认为是一个关键字)。NOTE2:如果指定多于一个关键字,则必须同时指定关键字间的关系原创 2022-04-20 22:17:25 · 3152 阅读 · 0 评论 -
内核月报搜索普通版 代码
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2022/4/11 17:58# @Author : shaofei# @Email : shaochenshuo@126.com# @File : 内核月报搜索.py# @Software: PyCharm"""该程序通过指定(-k)关键字搜索淘宝内核月报的标题,正文,代码等部分,只要有其中某个部分命中就输出该月报标题及链接"""#pip3 install be.原创 2022-04-20 17:08:47 · 591 阅读 · 0 评论 -
内核月报搜索exe版 代码
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2022/4/15 12:06# @Author : shaofei# @Email : shaochenshuo@126.com# @File : 内核月报搜索exe版.py# @Software: PyCharm#pip3 install beautifulsoup4#pip3 install lxml#pip install requests#import u.原创 2022-04-20 17:06:57 · 544 阅读 · 0 评论 -
一个奇怪的执行计划,关联查询中一个表未跟其他任何表关联
1.数据库版本:8.0.132.问题发现 监控发现一个并发查询导致数据库cpu使用率过高,我找到该sql看看有没有优化的余地,但是看了执行计划后,发现这个执行计划就很奇怪,下面发给大家看一下。 我们发现执行计划显示先访问了g表,然后紧接着访问了a表,问题是g 表和a 在sql中并没有关联字段,执行计划普通版:mysql> explain SELECT any_value(b.id) AS id, b.sub_order_no, any_value(b.or...原创 2022-02-15 18:26:23 · 464 阅读 · 0 评论 -
MySQL 字符集/collate 不同导致无法使用索引过滤
对于因为字符集不同导致两表关联时无法使用索引的问题我们可能经常遇到,但是你知道吗,就算字符集相同,你的编码规则(collate)不同也可能导致两表关联时无法使用索引的一:实验1 字符集不同可能会导致两表关联时无法使用索引结论:两个表字符集不同,关联查询时就一定会导致无法使用字符类型字段上的索引无法使用吗? 不一定,看下面的例子两个测试表一个字符集为utf8,一个为utf8mb4,如果使用utf8字符集的表做驱动表,通过他的字符列去关联utf8mb4字符集的表(utf8mb4 表上的字符类型关联字原创 2022-01-28 10:00:59 · 1806 阅读 · 0 评论 -
Innodb Read IO 相关参数源代码解析
最近在阅读Innodb IO相关部分的源代码。在阅读之前一直有个疑问,show global status 中有两个指标innodb_data_reads 和innodb_data_read。两个计数器仅差一个字母,他们之间的含义到底有何差别呢?本文将通过解析这两个参数的含义,分析Innodb对于磁盘IO相关的一些知识转载 2022-01-14 15:31:37 · 988 阅读 · 0 评论 -
MySQL 资源限制
一:MySQL 自带限流功能1.MySQL 限流相关参数1) MAX_QUERIES_PER_HOUR某用户每小时可以执行的查询次数2) MAX_UPDATES_PER_HOUR某用户每小时可以执行的修改语句次数3) MAX_CONNECTIONS_PER_HOUR某用户每小时最多可以连接多少次4) MAX_USER_CONNECTIONS某用户可同时连接到数据库的会话数量2.如何启用某用户限流功能alter user 'user_limit'@'%' with MAX_Q原创 2022-01-12 15:31:18 · 1475 阅读 · 0 评论 -
数据库请求来源统计
数据库请求来源统计原创 2022-01-07 11:05:49 · 816 阅读 · 0 评论 -
MySQL 大事务导致其他dml阻塞
1.版本信息MySQL 8.0.132.问题描述通过阿里云的 sql 洞察监控到某些时间点,数据库的部分dml操作耗时异常,截图如下:#从截图中我们看到在差不多的时间点,有的dml语句执行时间异常,有些又正常。3.问题分析#先说结论:大事务在刷binlog cache时候阻塞了其他事务刷binlog cache的动作3.1 根据问题时间点查看活跃事务监控信息发现一个可以的 update 操作,这个update 是活跃连接中执行时间最长的一个。当时存在的一些原创 2021-12-17 18:19:31 · 3958 阅读 · 0 评论 -
mysql RC 隔离级别下为什么需要 next key lock 来保证唯一索引有效性
我们知道在RC隔离级别中几乎不会出现 Gap Lock,但是官方文档中列出了如下两个例外情况(在外键约束和唯一性约束时还是会使用Gap Lock,即使在RC隔离级别下)原创 2021-12-01 16:55:13 · 1731 阅读 · 0 评论 -
MySQL 数据库响应延迟问题分析一例(例1)
1.版本数据版本:阿里云 PolarDB(目前使用的版本是基于 MySQL 8.0.13 研发)2.问题描述业务侧报告说某个时间点有一个表(只有这一个表有问题,其他表的insert在那个时间点都是正常的)的insert 耗时达到将近1分钟。业务侧日志如下截图:#从截图中我们可以看到 2021-10-29 16:33:09.836 执行的 insert into t_order_guest(插入一行记录)耗时将近1分钟。而在2021-10-29 16:33:09.853 执行.原创 2021-11-03 16:47:53 · 281 阅读 · 0 评论 -
MySQL 数据库响应延迟问题分析一例(例3)
例2分支例2中业务侧给出的数据库响应延迟问题,有些情况如例2中描述,是sql因为等待,导致执行时间成,所以业务侧响应延迟。但是有些sql执行时间缺没有问题业务日志截图binlog日志截图该binlog统计结果如下:grep -i "exec_time" mysql-bin.026571.txt|grep -i "211102 9:11:41"#看到从2021-11-02 09:11:41.xxx 某个时间点之后,数据库所有记录binlog的操作都被阻塞5s钟才...原创 2021-11-03 16:47:37 · 367 阅读 · 0 评论 -
MySQL 数据库响应延迟问题分析一例(例2)
1.版本数据版本:阿里云 PolarDB(目前使用的版本是基于 MySQL 8.0.13 研发)2.问题描述业务侧报告说,每天早上他们有个表insert操作都会有响应时间异常的现象(响应时间能达到3s)。3.问题分析3.1 业务侧/binlog 日志分析业务侧日志如下截图:#上图中2021-11-02 09:18:36:725 是业务侧收到数据库响应的时间# 上图是业务侧对应的insert sql 在binlog中解析出来的记录。我们看到该sql确实执行.原创 2021-11-03 11:22:47 · 464 阅读 · 0 评论 -
一种快速取得binlog开始时间的方法
##最近在写mysqlbinlog解析工具,看到一个快速获取binlog开始时间的方法,转载分享给大家(MySQL 5.7.23/MySQL 8.0.13 已验证)我们想知道一个binlog的开始时间和结束时间,往往是通过binlog文件的上一个文件的文件时间作为当前binlog的开始时间,当前binlog的文件时间作为结束时间,例如:[root@VM_0_6_centos binlog]# ll -lhrttotal 163M-rw-r----- 1 mysql mysql 2.9K Ma转载 2021-09-29 15:23:20 · 796 阅读 · 0 评论 -
关于 MySQL index dives 详细解读
文章未完工,码字中......1. 关于index dives MySQL 官方文档中给出的解释Equality Range Optimization of Many-Valued ComparisonsConsider these expressions, where col_name is an indexed column:col_name IN(val1, ..., valN)col_name = val1 OR ... OR col_name = valNEach e..原创 2021-09-18 17:02:14 · 628 阅读 · 0 评论 -
mysql --initialize 初始化后没有在error log 中生成临时密码
1.版本1)操作系统版本cat /proc/versionLinux version 3.10.0-957.1.3.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 29 14:49:43 UTC 20182)数据库版本mysql --versionmysql Ver 8.0.13 for linux-.原创 2021-09-07 17:09:04 · 3896 阅读 · 0 评论 -
一文彻底掌握时间复杂度和大O表示法(整理)
预备知识:计算机基础知识高中数学知识时间复杂度用来干嘛时间复杂度是衡量算法好坏的一个重要指标,另一个重要指标是空间复杂度。算法我们先来了解一下算法,对于一个计算机程序,其算法就是其内部执行的各种逻辑的执行步骤。算法既然是计算机上的程序的逻辑执行步骤,那他运行的过程中,必须是需要占用计算机的cpu和存储空间。其中使用cpu计算的总次数的数量级,就以时间复杂度来标识(因为往往运算的次数和时间是成正比的,次数多,使用的时间就多),符号为大写O。时间复杂度的定义一般情况下,算法中基本操作重原创 2021-07-08 14:14:19 · 1663 阅读 · 0 评论 -
取消执行的语句被记录 slowlog
1.版本1)操作系统#cat /proc/versionLinux version 4.14.76-1.el7.rx.x86_64 (root@8dfc8db5e7914181ad0cf0484d9be73a) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)) #1 SMP Thu Oct 18 09:52:06 +06 20182)mysql数据库版本[root@127.0.0.1][(none)]> select vers原创 2021-03-17 14:58:38 · 228 阅读 · 3 评论 -
where 中使用 case when 无法使用索引
1.版本1)操作系统#cat /proc/versionLinux version 4.14.76-1.el7.rx.x86_64 (root@8dfc8db5e7914181ad0cf0484d9be73a) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)) #1 SMP Thu Oct 18 09:52:06 +06 20182)mysql数据库版本> select version();+-----------+| ve原创 2021-04-13 11:29:36 · 3521 阅读 · 0 评论 -
MySQL 线程一直处理 killed 状态
1.版本1)操作系统cat /proc/versionLinux version 3.10.0-1127.18.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Sun Jul 26 15:27:06 UTC 20202)mysql数据库版本mysql> select version();+----------原创 2021-03-09 22:29:07 · 6098 阅读 · 0 评论 -
mysql 8.0.22/23 客户端无法处理中文问
1.版本1)操作系统#cat /proc/versionLinux version 4.14.76-1.el7.rx.x86_64 (root@8dfc8db5e7914181ad0cf0484d9be73a) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)) #1 SMP Thu Oct 18 09:52:06 +06 20182)mysql数据库版本select version();+-----------+| versio原创 2021-03-09 10:16:08 · 382 阅读 · 2 评论 -
order by limit 造成优化器选择索引错误
1.order by limit 选错索引示例在日常工作中,经常发现一些简单的查询语句因为加了 order by limit 造成优化器选择索引错误。例如如下sql(此处就不造数据了,只是列出一个sql示例)select * from test_table where name='xxxxx' order by id limit 1;#id 列为表的主键,name列有索引。有可能该查询最高效的路径应该是使用 name 索引访问,但是优化器最后却选择通过主键id进行扫描。这样就可能导致查询...原创 2021-02-01 16:40:03 · 3882 阅读 · 3 评论 -
reconsidering_access_paths_for_index_ordering 疑问一例
1.版本信息1)系统版本cat /proc/versionLinux version 3.10.0-1127.8.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) )2)数据库版本mysql> select version();+-----------+| version() |+-----------+| 8.0.19原创 2021-02-01 15:24:26 · 483 阅读 · 0 评论 -
index dive 导致同类sql执行计划不一致
1.版本1)操作系统cat /proc/versionLinux version 3.10.0-1127.18.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) )2)mysql数据库版本mysql> select version();+-----------+| version() |+-----------+| 8.原创 2021-01-15 11:37:23 · 477 阅读 · 0 评论 -
sys.memory_global_total 值不准
1.版本1)操作系统cat /proc/versionLinux version 3.10.0-1127.13.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) )2)mysql数据库版本mysql> select version();+-----------+| version() |+-----------+| 8.0原创 2021-01-12 17:51:36 · 932 阅读 · 0 评论 -
innodb_thread_concurrency & innodb_concurrency_tickets
1.innodb_thread_concurrencyCommand-Line Format --innodb-thread-concurrency=# System Variable innodb_thread_concurrency Scope Global Dynamic Yes SET_VARHint Applies No Type Integer Default Value 0 Minimum Value ...原创 2020-12-04 17:25:28 · 992 阅读 · 0 评论 -
给用户赋予 information_schema 数据库对象权限失败
1.数据库版本Mysql 所有版本2.问题描述2.1 问题发现在对用户赋予 information_schema 权限的时候发如下错误:[root@127.0.0.1][test_chen]> grant select on information_schema.innodb_sys_tables to 'test_user'@'%';ERROR 1044 (42000): Access denied for user 'root'@'127.0.0.1' to data.原创 2020-11-27 16:14:25 · 6500 阅读 · 0 评论 -
如何读懂 MySQL rw-lock 锁的统计信息
1. 什么是 rw-lock? 关于 rw-lock 官方文档中给出了如下说明:rw-lockThe low-level object thatInnoDBuses to represent and enforce shared-accesslocksto internal in-memory data structures following certain rules. Contrast withmutexes, whichInnoDBuses to represent a...原创 2020-11-06 18:08:45 · 2226 阅读 · 0 评论 -
Mysql 两个范围权限不一致,导致表访问异常
1. 数据库版本目前测试了 Mysql 8.0.19 ,Mysql 8.0.20,Mysql 5.7.22 都存在该问题(5.7和8.0版本应该都有该问题)2. 问题描述同事工作中发现了如下奇怪问题(直接上图)问题现象:我们发现我们给用户赋予全局的 delete,create,index,alter权限,同时给用户赋予某张表的 select,insert,update,delete权限。然后对这张表进行 delete 操作时,居然报没有这张表的读权限。# 注意这里是全局权限.原创 2020-10-14 14:35:02 · 323 阅读 · 0 评论 -
MySQL使用可重复读作为默认隔离级别的原因之一
一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle、SQLServer等,而MySQL却使用可重复读(Read-Repeatable,RR)。要知道,越高的隔离级别,能解决的数据一致性问题越多,理论上性能损耗更大,可并发性越低。隔离级别依次为SERIALIZABLE>RR>RC>Read-Uncommited在SQL标准中,前三种隔离级别分别解决了幻象读、不可重复读和脏读的问题。那么,为什么MySQL使用可重复读...转载 2020-10-10 17:01:24 · 835 阅读 · 0 评论 -
pt-query-digest 慢日志分析结构最强解析
1. pt-query-digest 版本3.0.92. pt-query-digest 输出结果分析##第一部分总体信息# 25.3s user time, 1.7s system time, 127.93M rss, 330.44M vsz#本次日志分析消耗的系统资源情况,包括 消耗的cpu用户时间及cpu系统时间,占用的系统物理内存大小及系统虚拟内存大小。# Current date: Tue Aug 27 09:20:51 2019#本次分析开始时间# Hostname.原创 2020-09-17 10:02:00 · 1206 阅读 · 0 评论