1.异常崩溃GreatSQL合并PerconaServer8.0.30的Beta版测试中,QA报了一个crash的bug:buglistbenchmarksql加载1000仓数据时,数据库实例发生coredump。core堆栈信息如下:00x00007f51315a39d1inpthreadkill()fromlib64libpthread.so.010x00000000013258cdinhandlefatalsignal()atsrcsqlsignalhandler.cc:2282<signalhandlercalled>30x0000000001339244inmemrootdeque<Item>::pushback()atsrcincludememrootdeque.h:18240x0000000...
2023-02-24 15:00:07 2877浏览 0点赞 0回复 0收藏
UOS二进制安装数据库和其他Linux基本一样,网上命令行安装的教程很多。考虑到UOS自带图形化界面,为了降低一点安装门槛,本文尽量使用图形化界面安装。纯命令行安装可以参考:https:greatsql.cndocsusermanual3quickstart32quickstartwithtarball.html本文直接把GreatSQL安装在了用户目录(非root),用普通用户的权限运行,没有新创建专门给数据库用的用户和组。系统环境系统版本:统信UOS家庭版22.0下载地址:htt...
2023-02-24 14:48:21 3369浏览 0点赞 0回复 0收藏
一、问题:MySQL5.7.38主从架构,主节点唯一索引上(唯一索引不是主键)有重复值,全部从节点报1062,SQL线程状态异常,根据SQL线程报的binlog位置点,insert数据时有重复值,插入失败二、原因:uniquechecks0时导致,在bug(106121)列表中官方解释的原因:该参数关闭,维护唯一索引时,不会进行物理读,只会进行内存读,来确保唯一索引的唯一性,即如果内存中有冲突数据就报1062,如果内存中没有冲突数据插入成功,不会进行io来...
2023-02-24 14:46:41 4053浏览 0点赞 0回复 0收藏
Part10叶子节点分裂我们BTree只有一个节点,这看起来不太像一棵标准的tree。为了解决这个问题,需要一些代码来实现分裂叶子节点。在那之后,需要创建一个内部节点,使其成为两个新的叶子节点的父节点。基本上,我们这个系列的文章的目标是从这里开始的:onenodebtree到这样:twolevelbtree首先中的首先,先把处理节点写满错误移除掉:voidleafnodeinsert(Cursorcursor,uint32tkey,Rowvalue){voidnodegetpage(cursor>table>pager...
2023-02-24 14:45:49 3606浏览 0点赞 0回复 0收藏
1.概述MySQL的分区表没有禁止NULL值作为分区表达式的值,无论它是列值还是用户提供的表达式的值,需要记住NULL值不是数字。MySQL的分区实现中将NULL视为小于任何非NULL值,与orderby类似。2.range分区表处理NULL1.创建range分区表CREATETABLEtrange(c1INT,c2VARCHAR(20))PARTITIONBYRANGE(c1)(PARTITIONp0VALUESLESSTHAN(0),PARTITIONp1VALUESLESSTHAN(10),PARTITIONp2VALUESLESSTHANMAXVALUE);2.插入2条分区列为null值的数据in...
2023-01-18 11:23:29 3805浏览 0点赞 0回复 0收藏
JDK1.7下测试ConnectorJ连接MySQL8.0客户的一些应用系统使用的JDK1.7版本,在将数据库迁移到MySQL8.0的过程中,发现有些MySQLconnectorJ的版本无法连接到MySQL8.0。本文描述了在LinuxJDK1.7环境下,测试不同版本ConnectorJ的方法,也可用于为MySQL接口的国产数据库产品选择ConnectorJ版本。MySQLConnectorJ说明MySQL通过MySQLConnectorJ为用Java语言开发的客户端应用程序提供连接,MySQLConnectorJ是一个实现Java数据库连接(JDB...
2023-01-18 11:22:45 4442浏览 0点赞 0回复 0收藏
前情提要当前读快照读什么是MVCC三个隐藏字段UndoLog回滚日志MVCC版本链ReadView读视图不同隔离级别下MVCC分析READCOMMITTED隔离级别REPEATABLEREAD隔离级别前情提要事务有四大特性ACID分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)其中隔离性是通过数据库的锁加上MVCC(多版本并发控制)来保证的。在介绍...
2023-01-18 11:22:13 3152浏览 0点赞 0回复 0收藏
导读前言请读者注意:本文基于GreatSQL8.0.25&MySQL5.7.7RC版本,在MySQL8.0.30Redo发生变化,详情见:MySQL8.0.30动态redolog初探前面聊了MySQL中的UndoLog日志和InnoDB中的MVCC,今天一起来学习下RedoLog日志。事务有4种特性:原子性、一致性、隔离性和持久性(ACID)。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由锁机制实现。而事务的原子性、一致性和持久性由事务的Redo日志和Undo日志来保证。...
2023-01-18 11:21:48 9471浏览 0点赞 0回复 0收藏
Part8BTree叶子节点格式我们准备把表的格式从非排序的数组格式行(rows)改成BTree。这是一个相当大变化,需要多个篇幅才能实现。在本文结束时,我们将定义叶子节点的布局,支持插入键值对儿到单节点的BTree。但是首先,来回顾一下把数据结构(从数组array)切换到BTree的原因。替换表格式根据现在的格式(数组组织的行数据格式),每个page存储的只有行数据(没有元数据),所以空间使用上很有效率,非常节省空间。插入操作也...
2023-01-18 11:20:07 2773浏览 0点赞 0回复 0收藏
想法从何而来获得雨果奖的科幻小说《三体》中出现了一个流行词汇:降维打击。更高维度文明对较低维度文明的打击不费吹灰之力。这里的“维度”一词,提醒了我看待事物时更换一个维度,也许会有更好的理解。在研究MySQL数据库的数据文件时,把数据页平铺,是不是可以有不同的发现。这里的降维,就是把维度放到数据页的维度,而不是内存或者程序角度。数据页平铺,肯定不是把页内所有内容平铺,可以选择一些内容着重分析,例如:LS...
2023-01-18 11:19:22 3064浏览 0点赞 0回复 0收藏
本文是在假定读者了解了直方图是什么,直方图如何进行添加维护的前提下,围绕直方图与索引的对比、何时应该添加直方图,及直方图如何帮助优化器选择更优的执行计划这几个方面来介绍直方图。对直方图不太了解的小伙伴可参考GreatSQL社区的另一篇文章4.直方图介绍和使用MySQL索引学习直方图的作用直方图用于描述数据表中列上的数据分布,这些关于数据分布的内容,可以帮助优化器更准确地估计给定的where子句或联接条件...
2023-01-18 11:18:51 2696浏览 0点赞 0回复 0收藏
译注:cstsck在github维护了一个简单的、类似SQLite的数据库实现,通过这个简单的项目,可以很好的理解数据库是如何运行的。本文是第五篇,主要是实现数据持久化Part5持久化到磁盘“Nothingintheworldcantaketheplaceofpersistence.”–CalvinCoolidge(美国第30任总统)我们数据库能让你插入数据并读取出来,但是只能在程序一直运行的时候才可以。如果你kill掉程序后再次重启以后,你所有的数据就丢失了。我们期望的行为是这样的...
2023-01-18 11:18:08 2896浏览 0点赞 0回复 0收藏
什么是UndoLog?如何理解UndoLogUndoLog的功能UndoLog的存储结构UndoLog的工作原理UndoLog的类型UndoLog的生命周期UndoLog的配置参数参考文章文章导读:什么是UndoLog?Undo:意为撤销或取消,以撤销操作为目的,返回某个状态的操作。UndoLog:数据库事务开始之前,会将要修改的记录放到Undo日志里,当事务回滚时或者数据库崩溃时,可以利用UndoLog撤销未提交事务对数据库产生的影响。UndoLog是事务原子性的保证...
2023-01-18 11:17:33 4986浏览 0点赞 0回复 0收藏
1.参数选项设置2.MGR相关约束3.MGR使用建议参考资料、文档免责声明加入团队本文介绍MGR最佳实践参考以及使用MGR的约束限制。1.参数选项设置下面是几个MGR相关参数选项设置建议:建议只用单主模式loosegroupreplicationsingleprimarymodeON不要启用引导模式loosegroupreplicationbootstrapgroupOFF默认值150MB,但建议调低在20MB以内,不要使用大事务loosegroupreplicationtransactionsizelimit10M大消息分片处理,每个分片10M,...
2023-01-18 11:17:13 3380浏览 0点赞 0回复 0收藏
cgroups是Linux内核提供的可以限制进程所使用资源的机制,可以对cpu,内存等资源实现精细化的控制。什么是cgroups控制族群(cgroup)关联一组task和一组subsystem的配置参数。一个task对应一个进程,cgroup是资源分片的最小单位。子系统(subsystem)资源管理器,一个subsystem对应一项资源的管理,如cpu,cpuset,memory等。cpu子系统,主要限制cpu使用率。cpuacct子系统,可以统计cgroups中的进程的cpu使用报告。cpu...
2022-12-30 17:17:10 3902浏览 0点赞 0回复 0收藏
1.MySQL中执行一条SQL的总体流程2.SQL函数执行过程1.MySQL中执行一条SQL的总体流程一条包含函数的SQL语句,在MySQL中会经过:客户端发送,服务器连接,语法解析,语句执行的过程。调试源码,分析函数的具体执行过程,在客户端,执行selecttochar(‘test’)fromdual。跟踪堆栈:pthreadstart→handleoneconnection→dohandleoneconnect→docomm...
2022-12-30 17:16:13 3737浏览 0点赞 0回复 0收藏
事件起因:在测试一个数据迁移工具时,源端oracle19c数据迁移到目标端MySQL8.0,提示迁移目标端Unknowndatabase'SBTEST',报错如下:2022072910:08:19,155ERRORcom.greatsync.connector.jdbc.internal.ComplexJdbcOutputFormat[]JDBCexecuteBatcherror,retrytimes0java.sql.BatchUpdateException:Unknowndatabase'SBTEST'atsun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeMethod)[:1.8.0312]atsun.reflect.Nati...
2022-12-30 17:15:37 6026浏览 2点赞 0回复 0收藏
一、前言在编码过程中,常常需要写打印日志语句,我们期望的是同一个业务的日志都在一块,在出问题的时候好根据日志来排查问题。而现实是在应用运行中,日志的输出常常来自不同线程,甚至是在不同微服务中,各种日志记录往往彼此穿插,很难串起来。所以往往在日志中手动增加一些关键字,来对接口的调用链路来进行跟踪。但这种手动增加关键字或唯一标识的做法在微服务场景下,很难在上下游应用的开发人员的编码风格形成统一的规...
2022-12-30 17:14:56 3433浏览 0点赞 0回复 0收藏
1.什么是WonderShaperWonderShaper是用来对特定网卡进行快速限速的工具,它实际是对Linux的tc命令进行封装后的shell脚本,所以使用成本比tc更低,更容易上手,以下配合测速工具speedtest一起使用2.如何安装WonderShaper直接拉取wondershaper,开箱即用gitclonehttps:github.commagnific0wondershaper.gitroot5491:homesoftwondershaper.wondershapervVersion1.4.1root5491:homesoftwondershaper网速测试工具speedtest安装(Ubunt...
2022-12-30 17:13:59 3793浏览 0点赞 0回复 0收藏
1.MGR事务一致性对于MGR这样的"分布式"系统而言,需要在多个节点间保障事务的一致性,无论各个节点状态正常,或者个别节点处于故障修复状态,都要能保证各个节点的事务数据最终一致。所谓的最终一致性是指当所有写事务请求都停止后,各个节点上的事务数据是一致的。与MGR数据一致性相关的因素有这几种:节点发生变化,添加或删除。节点故障修复。Primary节点发生切换。通过选项groupreplicationconsistency可以设置节点...
2022-12-30 17:12:25 2764浏览 0点赞 0回复 0收藏