背景介绍StoneDB是一款兼容MySQL的开源HTAP数据库。StoneDB的整体架构分为三层,分别是应用层、服务层和存储引擎层。应用层主要负责客户端的连接管理和权限验证;服务层提供了SQL接口、查询缓存、解析器、优化器、执行器等组件;Tianmu引擎所在的存储引擎层是StoneDB的核心,数据的组织和压缩、以及基于知识网格的查询优化均是在Tianmu引擎实现。本文主要为大家介绍StoneDB的读操作、写操作执行过程,方便大家了解引擎架构、内部逻辑和各个功能模块。一、Tianmu引擎架构1Tianmu存储引擎在Server组件中的位置2Tianmu引擎架构图3Tianmu引擎各个模块介绍Ti
背景介绍StoneDB是一款兼容MySQL的开源HTAP数据库。StoneDB的整体架构分为三层,分别是应用层、服务层和存储引擎层。应用层主要负责客户端的连接管理和权限验证;服务层提供了SQL接口、查询缓存、解析器、优化器、执行器等组件;Tianmu引擎所在的存储引擎层是StoneDB的核心,数据的组织和压缩、以及基于知识网格的查询优化均是在Tianmu引擎实现。本文主要为大家介绍StoneDB的读操作、写操作执行过程,方便大家了解引擎架构、内部逻辑和各个功能模块。一、Tianmu引擎架构1Tianmu存储引擎在Server组件中的位置2Tianmu引擎架构图3Tianmu引擎各个模块介绍Ti
1、问题现象createdatabasesyw_mtr;usesyw_mtr;CREATETABLEt1(f1VARCHAR(255)CHARACTERSETutf8)engine=tianmu;CREATETABLEt2ASSELECTLEFT(f1,171)ASf2FROMt1UNIONSELECTLEFT(f1,171)ASf2FROMt1;ERROR2013(HY000):LostconnectiontoMySQLserverduringquery问题issue:https://github.com/stoneatom/stonedb/issues/2262、问题原因bug代码行Que
1、问题现象createdatabasesyw_mtr;usesyw_mtr;CREATETABLEt1(f1VARCHAR(255)CHARACTERSETutf8)engine=tianmu;CREATETABLEt2ASSELECTLEFT(f1,171)ASf2FROMt1UNIONSELECTLEFT(f1,171)ASf2FROMt1;ERROR2013(HY000):LostconnectiontoMySQLserverduringquery问题issue:https://github.com/stoneatom/stonedb/issues/2262、问题原因bug代码行Que
在StoneDB中,数据包分为以下几类:不相关的数据包:不满足查询条件的数据包。相关的数据包:满足查询条件的数据包。可疑的数据包:数据包中的数据部分满足查询条件,需要进一步解压缩数据包才能得到满足条件的数据行。通过对数据包的划分,知识网格技术过滤掉不相关的数据包,读取相关的数据包和可疑的数据包。其中相关的数据包不需要解压缩,只读取元数据,不会发生IO,可疑的数据包需要解压缩,会发生IO。1)创建表t_userCREATETABLEt_user(idINTNOTNULLAUTO_INCREMENT,first_nameVARCHAR(10)NOTNULL,last_nameVARCHAR(10)
在StoneDB中,数据包分为以下几类:不相关的数据包:不满足查询条件的数据包。相关的数据包:满足查询条件的数据包。可疑的数据包:数据包中的数据部分满足查询条件,需要进一步解压缩数据包才能得到满足条件的数据行。通过对数据包的划分,知识网格技术过滤掉不相关的数据包,读取相关的数据包和可疑的数据包。其中相关的数据包不需要解压缩,只读取元数据,不会发生IO,可疑的数据包需要解压缩,会发生IO。1)创建表t_userCREATETABLEt_user(idINTNOTNULLAUTO_INCREMENT,first_nameVARCHAR(10)NOTNULL,last_nameVARCHAR(10)
MySQL删除数据的方式以MySQL5.7为例,数据库删除数据的方式一共有以下三种:deletetruncatedrop以上三种方式都可以删除数据,但是使用场景是不同的。对于整个表进行删除的执行速度来说:drop>truncate>>deleteMySQL删除数据的方式-deletedelete是属于数据库的DML操作语言,一般是根据条件逐行进行删除。使用delete删除数据时,数据库只能删除数据不能删除表的结构,并且会触发数据库的事务机制。delete执行时,会先将所删除数据缓存到rollbacksegment中,事务commit之后生效;在InnoDB中,使用delete其实并不会真正的把
MySQL删除数据的方式以MySQL5.7为例,数据库删除数据的方式一共有以下三种:deletetruncatedrop以上三种方式都可以删除数据,但是使用场景是不同的。对于整个表进行删除的执行速度来说:drop>truncate>>deleteMySQL删除数据的方式-deletedelete是属于数据库的DML操作语言,一般是根据条件逐行进行删除。使用delete删除数据时,数据库只能删除数据不能删除表的结构,并且会触发数据库的事务机制。delete执行时,会先将所删除数据缓存到rollbacksegment中,事务commit之后生效;在InnoDB中,使用delete其实并不会真正的把
(以下情况仅针对StoneDB1.0版本不支持的部分DML和DDL操作,StoneDB2.0及以上版本将无需此类操作)主从复制中,主库的任何更新都会同步到从库,如果从库不想重做主库的某个更新动作,可以使用以下两种方法进行规避。当然,最终带来的影响是主从环境数据不一致的问题。以下的测试环境中,主库是InnoDB,从库是StoneDB,在主库做从库不支持的DML或者DDL。从库执行GTID的空事务###主库mysql>showcreatetablettt\G***************************1.row***************************Table:tttCre
(以下情况仅针对StoneDB1.0版本不支持的部分DML和DDL操作,StoneDB2.0及以上版本将无需此类操作)主从复制中,主库的任何更新都会同步到从库,如果从库不想重做主库的某个更新动作,可以使用以下两种方法进行规避。当然,最终带来的影响是主从环境数据不一致的问题。以下的测试环境中,主库是InnoDB,从库是StoneDB,在主库做从库不支持的DML或者DDL。从库执行GTID的空事务###主库mysql>showcreatetablettt\G***************************1.row***************************Table:tttCre