首页
学习
活动
专区
工具
TVP
发布

GreatSQL出品技术文章

专栏作者
243
文章
141902
阅读量
31
订阅数
Slave SQL线程与PXB FTWRL死锁问题分析
144 Coordinator线程分发relay log中事务时发现这个事务不能执行,要等待前面的事务完成提交,所以处于waiting for dependent transaction to commit的状态。145/146线程和备份线程162形成死锁,145线程等待162线程 global read lock 释放,162线程占有MDL::global read lock 全局读锁,申请全局commit lock的时候阻塞等待146线程,146线程占有MDL:: commit lock,因为从库设置slave_preserve_commit_order=1,保证从库binlog提交顺序,而146线程执行事务对应的binlog靠后面,所以等待145的事务提交。最终形成了145->162->146->145的死循环,形成死锁。 三个线程相互形成死锁,还是很少见的。 2.2 相关参数为何未生效 --ftwrl-wait-timeout=60 指的是执行FTWRL之前,如果检测到存在长SQL,先等待指定时间(秒),如果超时后还存在长SQL,则备份报错退出。默认为0则表示立即执行。 --ftwrl-wait-threshold=5 指的是执行FTWRL之前,检测长SQL的方法,如果在执行flush前存在已经运行了超过指定时间(秒)的SQL,则将该SQL定义为长SQL,默认60s。 --kill-long-queries_timeout=0 在执行FTWRL后,如果flush操作被阻塞了N秒,则kill掉阻塞它的线程,默认0的情况就是不kill任何阻塞flush的SQL,直到该SQL执行完成。 从上面各个参数的解释,不难看出,--ftwrl-wait-*参数是针对执行FTWRL之前的长SQL检测机制,对于已执行FTWRL时无济于事,--kill-long-*参数则是设置默认值0,不起任何作用。 3. 结论与建议
GreatSQL社区
2024-04-30
110
GreatSQL统计信息相关知识点
非持久化统计信息的缺点显而易见,数据库重启后如果大量表开始更新统计信息,会对实例造成很大影响,所以目前都会使用持久化统计信息。 2、持久化统计信息在以下情况会被自动更新:
GreatSQL社区
2024-04-25
720
Datax助力轻松迁移SQLServer数据至GreatSQL
2.1.4使用数据库 1.进入容器 $ docker exec -it sqlserver2017 bash 2.连接数据库 $ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "********" 3.查询数据库 1> select name from sys.Databases; 2> go 4.创建数据库 1> create database testdb; 2> go 5.创建表并插入数据 use testdb create table t1(id int) go Insert into t1 values(1),(2) go 2.2安装GreatSQL环境 使用Docker镜像进行安装,直接拉取GreatSQL镜像即可 $ docker pull greatsql/greatsql 并创建GreatSQL容器 $ docker run -d --name greatsql --hostname=greatsql -e MYSQL_ALLOW_EMPTY_PASSWORD=1 greatsql/greatsql 2.3安装datax DataX安装需要依赖的环境
GreatSQL社区
2024-04-25
560
GreatSQL 死锁案例分析
GreatSQL社区
2024-04-19
310
GreatSQL优化技巧:半连接(semijoin)优化
半连接是在GreatSQL内部采用的一种执行子查询的方式,semi join不是语法关键字,不能像使用inner join、left join、right join这种语法关键字一样提供给用户来编写SQL语句。
GreatSQL社区
2024-04-18
610
主从延迟调优思路
* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 1、什么是主从延迟? 本质是从库的回放跟不上主库,回放阶段的延迟
GreatSQL社区
2024-04-18
930
从库延迟案例分析
持续观察了一阵show slave status的变化,发现pos点位信息在不停的变化,Seconds_Behind_master也是不停的变化的,总体趋势还在不停的变大。 资源使用 观察了服务器资源使用情况,可以看到占用非常低
GreatSQL社区
2024-04-12
750
5.7打补丁—编译和官方一致的Linux_Generic包
MySQL 5.7.21二进制包下载地址:(https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz) MySQL 5.7.21源码仓库github地址:(https://github.com/mysql/mysql-server/tree/mysql-5.7.21) MySQL 5.7的手册中"根据源码安装MySQL:(https://dev.mysql.com/doc/refman/5.7/en/source-installation.html)"章节中有如下内容,可参考"docs/INFO_BIN"文件中的内容获取官方编译时的环境信息: If you are interested in building MySQL from a source distribution using build options the same as or similar to those use by Oracle to produce binary distributions on your platform, obtain a binary distribution, unpack it, and look in the docs/INFO_BIN file, which contains information about how that MySQL distribution was configured and compiled. 解压安装包查看"docs/INFO_BIN"文件,可看到一系列的编译相关信息,其中kernel和cmake版本信息如下: Build was done on Linux-3.8.13-16.2.1.el6uek.x86_64 using x86_64 Build was done using cmake 2.8.12 根据kernel命名,可确定MySQL官方用的是Oracle Linux操作系统,对应的版本是6.5。镜像及下载地址如下: (https://mirrors.kernel.org/oracle/OL6/U5/x86_64/OracleLinux-R6-U5-Server-x86_64-dvd.iso) 在virt-manager(基于kvm的虚拟化)创建的虚拟机上安装操作系统,安装期间提示hardwarre不受支持。忽略错误强制安装操作系统后,启动失败。
GreatSQL社区
2024-04-11
650
MySQL的多层SP中Cursor的m_max_cursor_index相关BUG分析
GreatSQL社区
2024-04-11
640
GreatSQL 优化技巧:将 MINUS 改写为标量子查询
GreatSQL社区
2024-04-11
750
为什么SHOW TABLE STATUS显示Rows少了40%
* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
GreatSQL社区
2024-04-11
520
探究网络延迟对事务的影响
GreatSQL社区
2024-04-11
770
工具分享丨分析GreatSQL Binglog神器
在GreatSQL中,Binlog可以说是 GreatSQL 中比较重要的日志了,在日常开发及运维过程中经常会遇到。Binlog即Binary Log,二进制日志文件,也叫作变更日志(Update Log)。 详细Binglog日志介绍:https://greatsql.cn/docs/8032-25/user-manual/2-about-greatsql/4-3-greatsql-binary-log.html Binglog主要应用于数据恢复和数据复制,但是在Binlog中也含有非常多有价值的信息,比如说:
GreatSQL社区
2024-03-26
790
源码解析丨一次慢SQL排查
* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 当long_query_time=1时(表info的id为主键),出现下面的慢日志,可能会让你吃惊 # Time: 2024-01-28T22:52:24.500491+08:00 # User@Host: root[root] @ [127.0.0.1] Id: 8 # Query_time: 7.760787 Lock_time: 7.757456 Rows_sent: 0 Rows_examined: 0 use apple; SET timestamp=; delete from info where id < ;
GreatSQL社区
2024-03-25
580
故障解析丨一次死锁问题的解决
事务T1T2操作insert into info values (50,11)insert into info values (60,8)关联的对象表apple.info的唯一索引 uk_name表apple.info的唯一索引 uk_name持有的锁lock mode S waitingheap no 7 11,40(十六进制为8,28)lock_mode X locks rec but not gapheap no 7 11,40(十六进制为8,28)等待的锁lock mode S waitingheap no 7 11,40(十六进制为8,28)lock_mode X locks gap before rec insert intention waitingheap no 7 11,40(十六进制为8,28)
GreatSQL社区
2024-03-25
1030
NOT IN子查询中出现NULL值对结果的影响你注意到了吗
* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 前言 开发人员写的SQL语句中经常会用到in,exists,not in,not exists 这类子查询,通常,含in、exists的子查询称为半连接(semijoin),含not in、 not exists的子查询被称之为反连接,经常会有技术人员来评论in 与exists 效率孰高孰低的问题,我在SQL优化工作中也经常对这类子查询做优化改写,比如半连接改为内连接,反连接改为外连接等,哪个效率高是要根据执行计划做出判断的,本文不是为了讨论效率问题,是要提醒一点:not in子查询的结果集含NULL值时,会导致整个语句结果集返回空,这可能造成与SQL语句书写初衷不符。
GreatSQL社区
2024-03-25
590
编译GreatSQL with RocksDB引擎
RocksDB 是基于Facebook 开源的一种支持事务的、高度可压缩、高性能的MyRocks存储引擎,特别适用于高度压缩和大容量的数据。以下是一些关键特点:
GreatSQL社区
2024-03-13
590
MySQL 8.0.26版本升级32版本查询数据为空的跟踪
某业务系统将MySQL 8.0.26升级为 GreatSQL 8.0.32-24 后,某些特定的SQL语句不能查询到数据。经测试 MySQL 8.0.32也存在相同的问题
GreatSQL社区
2024-03-13
1060
INSERT...SELECT语句对查询的表加锁吗
insert into t2 select * from t1; 这条语句会对查询表 t1 加锁吗?不要轻易下结论。对GreatSQL的锁进行研究之前,首先要确认一下事务的隔离级别,不同的事务隔离级别,锁的表现是不一样的。
GreatSQL社区
2024-03-13
480
GreatSQL TPC-H 性能测试报告正式发布!
完整性能测试报告:https://greatsql.cn/docs/8032-25/user-manual/10-optimze/3-3-benchmark-greatsql-tpch-report.html
GreatSQL社区
2024-03-05
1040
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档