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

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

MySQL CTE (Common Table Expressions)示例全解析

《MySQLCTE(CommonTableExpressions)示例全解析》MySQL8.0引入CTE,支持递归查询,可创建临时命名结果集,提升复杂查询的可读性与维护性,适用于层次结构数据处... 目录基本语法CTE 主要特点非递归 CTE简单 CTE 示例多 CTE 示例递归 CTE基本递归 CTE 结