开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。
讲了那么多期,都是在力量上进行论述,本期开始进入到正式的POALRDB 的内部操作中,POLARDB 与MYSQL 在登录中最大的不同是,你可以通过代理来连接到数据库中,这里的一个重点是,POLARDB 是支持多节点的,通过代理来控制多个节点,这里分为三种节点,最大POLARDB 支持 7 个总节点
1 主节点
2 行式从节点
3 列式从节点
而这样的方式在进行底层的操作出现了一些问题,因为我们无法直接连接到读节点中的确认的某个节点的直连,所以每次登录需要制定你操作的语句的定位的位置,举例如你想登录到列节点,则在登录到 POLARDB FOR MYSQL的时候,需要加入 -c 的,在我们mysql 根本不适用的登录参数,登录POALRDB 则需要挂载 -c
在挂载后,才能使用POALRDB 的HINT 节点的模式,否则敲入的命令是对全部的节点生效的。下面的force 命令才能生效,进入的才是POLARDB 的列存节点。
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是可以在产生的新表中增加列索引的。
这里还发现阿里云的文档的BUG 里面提及可以使用create table select 语句,实际上是不可以的。(希望更新文档)
同时可以通过 show create table tablename full 的方式来查看表中是否具有列式的索引,显然这个表是具有这个索引的。
下面我们建立一个测试表,百万数据的量,并且将所有的列都加入到列存中。
下面的这个例子很说明问题,在使用了列存的百万表上进行 distinct 没有任何行索引的情况下,查询速度之快。
我们将列存撤出后,可以看到虽然我们用了索引的情况下,查询的速度还是列存无法进行比较。
同时在操作中给我最大的冲击就是快,在一个100多万的表上加所有的列到列存,基本上没有延迟,直接就生效,查询的方式马上变为列的方式进行查询并开始动用更多的CPU 来进行处理。
给我的感觉用几个字可以形容,添加快,生效快,无延迟。以上是简单查询如count , distinct ,group by ,order by 等 我将一切在MYSQL 中都属于蹂躏数据库的查询,在POLARDB for mysql 加列的服务中,挨个试了一遍,完美,完美,完美。
添加索引的状态也有展示。
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;表来进行相关列索引的查询。
但是该吐槽的吐槽,目前的列式引擎在更新数据库版本的过程中,我们遇到了更新后,列的索引重建的问题,按照我们的理解,变动较大。但是这是测试是可以,但如果是生产的情况下,我们该如何办理呢。这也是POALRDB 在升级中一直忽略的一些问题,因为使用POALRDB 的客户,以后一部分,或者相当一部分是希望 POALRDB 将 MYSQL RDS 升级时的长时间不能在线工作的问题,解决,而如果列式的升级涉及了长时间的索引重建,业务无法进行正常工作,这个感受可不怎么美好。
标签:列式,IMCI,节点,索引,MYSQL,POALRDB,POLARDB,列存 From: https://blog.51cto.com/u_14150796/6534545