Polardb 如何替换MYSQL 之 IMCI 列式(1)建立一个列式引擎

2023-10-11 10:10

本文主要是介绍Polardb 如何替换MYSQL 之 IMCI 列式(1)建立一个列式引擎,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

7b79e700209c97372fa00c3f421332ec.png

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群。

讲了那么多期,都是在力量上进行论述,本期开始进入到正式的POALRDB 的内部操作中,POLARDB 与MYSQL 在登录中最大的不同是,你可以通过代理来连接到数据库中,这里的一个重点是,POLARDB 是支持多节点的,通过代理来控制多个节点,这里分为三种节点,最大POLARDB 支持 7 个总节点

1 主节点

2  行式从节点

3  列式从节点

cb75c5a787bcf738bfb650b95f1c6f4f.png

而这样的方式在进行底层的操作出现了一些问题,因为我们无法直接连接到读节点中的确认的某个节点的直连,所以每次登录需要制定你操作的语句的定位的位置,举例如你想登录到列节点,则在登录到 POLARDB FOR MYSQL的时候,需要加入 -c 的,在我们mysql 根本不适用的登录参数,登录POALRDB 则需要挂载 -c

在挂载后,才能使用POALRDB 的HINT 节点的模式,否则敲入的命令是对全部的节点生效的。下面的force 命令才能生效,进入的才是POLARDB 的列存节点。

f59ac315f9e2954566772959dd16ae60.png

create table imic_test (id int primary key,name varchar(200)) engine innodb comment 'columnar=1';

在建立一个支持列存的表,是需要特殊的命令来支持的,这里POLARDB 采用了在 comment 后面添加 'columnar=1' 的方式来进行,凡是在表最后的comment 中添加了 columnar =1 则说明这个表在POLARDB 中会增加类存,也就是在列存节点中是存在这张表的,否则列存是不会包含这个表的。

另外在操作一些MYSQL的语句,诸如 create table like 是可以在POALRDB 多节点运行的,因为机制和MYSQL不一样,所以单机可以运行的命令在POALRDB for MySQL 都是可以使用的,并且 create table like是可以在产生的新表中增加列索引的。

87b54d751c1f53ecdda0c2c841411714.png

这里还发现阿里云的文档的BUG 里面提及可以使用create  table select 语句,实际上是不可以的。(希望更新文档)

24d65fb8ff89b71c828edf9ca8fc032a.png

同时可以通过 show create table tablename  full 的方式来查看表中是否具有列式的索引,显然这个表是具有这个索引的。

835ea878f1d8686ee93815203f62f3e9.png

下面我们建立一个测试表,百万数据的量,并且将所有的列都加入到列存中。

66c7736501d988229c50ad882ff3c91b.png

下面的这个例子很说明问题,在使用了列存的百万表上进行 distinct 没有任何行索引的情况下,查询速度之快。

423d257b26db0b0dd21cc4194c72dd41.png

1d79031373a5a67c197196e6695f30e8.png

我们将列存撤出后,可以看到虽然我们用了索引的情况下,查询的速度还是列存无法进行比较。

7b2daf29024b93f510deb912f86a91e3.png

同时在操作中给我最大的冲击就是快,在一个100多万的表上加所有的列到列存,基本上没有延迟,直接就生效,查询的方式马上变为列的方式进行查询并开始动用更多的CPU 来进行处理。

给我的感觉用几个字可以形容,添加快,生效快,无延迟。以上是简单查询如count , distinct ,group by ,order by 等 我将一切在MYSQL 中都属于蹂躏数据库的查询,在POLARDB for mysql 加列的服务中,挨个试了一遍,完美,完美,完美。 

添加索引的状态也有展示。

e528135ebd1f65e2ffab5e6063b6952e.png

MYSQL you are dead on cloud .

当然任何解决方案都有自己的问题,我们也在找这个方案中的问题

1  不同的版本对于字段的支持类型有变化,基于POLARDB的版本,建议在8.01 的POALRDB 的小版本要到 8.0.1.1.30 支持了 blod text  ,分区表索引等。所以版本是你能用什么字段来进行列处理的关键。

2  DDL 操作中如果你是添加字段,那么和行存不一样的是,整体的列存会删除,重建。

3  列存的数据是逐步同步的,同步是异步的方式可以通过

select * from information_schema.imci_async_ddl_stats;表来进行相关列索引的查询。

009d2ae31f757c7c38ddee2b511e90c0.png

但是该吐槽的吐槽,目前的列式引擎在更新数据库版本的过程中,我们遇到了更新后,列的索引重建的问题,按照我们的理解,变动较大。但是这是测试是可以,但如果是生产的情况下,我们该如何办理呢。这也是POALRDB 在升级中一直忽略的一些问题,因为使用POALRDB 的客户,以后一部分,或者相当一部分是希望 POALRDB 将 MYSQL RDS 升级时的长时间不能在线工作的问题,解决,而如果列式的升级涉及了长时间的索引重建,业务无法进行正常工作,这个感受可不怎么美好。

8a3db6de077283091a6b6882643f0c79.png

c1b09004f50a86c05e32129e46898e85.png

这篇关于Polardb 如何替换MYSQL 之 IMCI 列式(1)建立一个列式引擎的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/187310

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Python3.6连接MySQL的详细步骤

《Python3.6连接MySQL的详细步骤》在现代Web开发和数据处理中,Python与数据库的交互是必不可少的一部分,MySQL作为最流行的开源关系型数据库管理系统之一,与Python的结合可以实... 目录环境准备安装python 3.6安装mysql安装pymysql库连接到MySQL建立连接执行S

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误