mariadb columnstore的安装和特性,mariadbcolumnstore
集群所有机器字符集一致
localedef -i en_US -f UTF-8 en_US.UTF-8
配好主机名和ssd互信
系统参数调整
# increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# increase Linux autotuning TCP buffer limits
# min, default, and max number of bytes to use
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# don't cache ssthresh from previous connection
net.ipv4.tcp_no_metrics_save = 1
# recommended to increase this for 1000 BT or higher
net.core.netdev_max_backlog = 2500
# for 10 GigE, use this
net.core.netdev_max_backlog = 30000
将vm.vfs_cache_pressure设置为低于100的值,以尝试保留inode和目录结构的高速缓存。这有助于提高读取性能。建议值为10。
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
安装依赖包
yum -y install boost
yum -y install expect perl perl-DBI openssl zlib文件sudo libaio rsync snappy net-tools perl-DBD-MySQL
安装官网下载的mariadb的rpm包
安装完rpm后执行/usr/local/mariadb/columnstore/bin/postConfigure安装
执行. /etc/profile.d/columnstoreAlias.sh
mcsadmin进去startSystem
登录mariadb的控制台mcsmysql正常使用
也可以通过docker安装
docker run -d --name mcs mariadb/columnstore_singlenode
docker exec -it mcs bash
columnstore的存储架构特点
在MariaDB ColumnStore上创建表时,系统会在表中为每列创建至少一个逻辑extent的文件,写入ColumnStore表的数据存储在DB Roots中的Performance Modules中,它们位于/usr/local/mariadb/columnstore/datax中,table schema和非column store的表信息保存在/usr/local/mariadb/columnstore/mysql/db,每一列数据会存储在多个8百万行的extent文件中,1字节数据类型8M,2字节数据类型16M,4字节数据类型32M,8字节数据类型64M。extent是多个8k块组成的集合,每个块对应一个lbid逻辑区分。使用Extent Map,ColumnStore可以执行逻辑范围分区,只检索满足查询所需的块。这是通过范围消除来完成的,消除了从不满足给定连接的结果中消除范围的过程以及查询的过滤条件,这减少了整体I / O操作,例如每个extent自动算出最大最小值,查询时用来过滤extent不需全部扫描,同时支持实时压缩解压缩。