• clickhouse 19.14.m.n简单测试


      ClickHouse is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP). 是Yandex开发的。ClickHouse的优势是使用了面向列的DBMS,比MySQL等面向行的数据库有查询优势,同时又比同样属于面向列DBMS的更有效的节省空间(不适用固定大小存储数据),使用数据压缩后,可以传输更多,延迟小等。https://clickhouse.yandex/

      安装比较简单,可以使用yum安装,也可以下载rpm,然后离线安装(LZ使用的是离线安装),在线安装可以参考https://www.jianshu.com/p/5253f800d5cb“”。

    导入mysql中的表定义和数据

    CREATE TABLE TA_TSHARECURRENTS_INNODB ENGINE = MergeTree order by c_cserialno AS
    SELECT * FROM mysql('192.168.XX.XX:3306', 'ta_cs', 'TA_TSHARECURRENTS_INNODB', 'root', '123456');
    其中该表有300多万条记录。速度还是很快的。
    c_cserialno必须在mysql那边定义为not null,而不管数据是否本身有为null,否则执行时会报"DB::Exception: Sorting key cannot contain nullable columns"。

    clickhouse远程访问

    clickhouse安装之后,默认没有用户名、密码,为了允许远程登录,需要修改/etc/clickhouse-server/config.xml配置,如下:
        <!-- Listen specified host. use :: (wildcard IPv6 address), if you want to accept connections both with IPv4 and IPv6 from everywhere. -->
        <!--<listen_host>::</listen_host>       -->
        <!-- Same for hosts with disabled ipv6: -->
        <!-- <listen_host>0.0.0.0</listen_host> -->
    
        <!-- Default values - try listen localhost on ipv4 and ipv6: -->
        <!--
        <listen_host>::1</listen_host>
        <listen_host>127.0.0.1</listen_host>
        -->
        <!-- Don't exit if ipv6 or ipv4 unavailable, but listen_host with this protocol specified -->
        <!-- <listen_try>0</listen_try> -->

    把注释掉的<listen_host>::</listen_host>取消注释,然后重启服务:

    service clickhouse-server restart

    这样就可以通过IDEA访问clickhouse了。

    数据类型

    clickhouse支持的数据类型和一般的RDBMS以及列式数据库不同,这个比较坑爹。

    UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64
    Float32, Float64
    Boolean(不存在,使用 UInt8的0和1代替)
    String(任意长度,代替VARCHAR, BLOB, CLOB,或者其他DBMS来的字符数据类型)
    FixedString(N) (N bytes长度的字符串)
    Date (日期,例如:1970-01-01 )
    DateTime (日期时间,例如:1970-01-01 00:00:00)
    Enum8, Enum16 (Enum8、Enum16 定义为键值对 ‘String’ = Int8 和 ‘String’ = Int16,例如:x Enum8(‘hello’ = 1, ‘world’ = 2))
    Array(T) (数组,复合数据类型,例如:select [1, 2] AS x, toTypeName(x) ;)
    Tuple(T1, T2, …) (元组,复合数据类型,例如:SELECT tuple(1,’a’) AS x, toTypeName(x) ;)
    Nullable(TypeName) (没有值的时候填充null,TypeName不可复合数据类型,例如:CREATE TABLE t_null(x Int8,y Nullable(Int8)))

    SQL语法以及内置函数

    除此之外,clickhouse很多的内置函数也都不同于主流的RDBMS,sql语法差异也比较大,在LZ测试的比较复杂的SQL中,mariadb columnstore/greenplum稍微调整下就能支持,到了clickhouse,半天没改出来,报错信息也各种迷糊,虽然文档比较全了,但是感觉到真正广泛使用还是友好性太差。

    clickhouse的优势

    分页查询很快,这是其相比其它列式数据库如columnstore/greenplum最大的优势。

    -- 500毫秒
    select * from TA_TCUSTOMERINFO_INNODB x order by x.c_fundacco limit 100;
    -- 1秒内
    select * from TA_TCUSTOMERINFO_INNODB x order by x.c_fundacco limit 100000,100;
    --- 7.5秒
    select * from TA_TCUSTOMERINFO_INNODB x order by x.c_fundacco limit 2000000,100;

    3.3 常见FAQ

    Q1:无法在本地连接ClickHouse,报错:Connecton reject。 A1:clickhouse默认不放开远程访问,可以通过修改配置文件的方式放开。
    修改服务器的配置文件/etc/clickhouse-server/config.xml,第65行,放开注释即可。
    修改之后,重启服务:
    service clickhouse-server stop
    service clickhouse-server start

    Q2:修改metrika.xml里面的shard或者replica参数之后,数据库无法启动;
    A2:如果之前已经建了Replica表,那么必须在修改上述两个参数之前把已经创建好的Replica表删掉,才能去修改,否则会无法启动。报错日志放在/var/log/clickhouse-server/下。 

     clickhouse postgresql_fdw的性能测试如下:

    https://www.percona.com/blog/2019/05/09/improving-olap-workload-performance-for-postgresql-with-clickhouse-database/

    https://www.percona.com/blog/2019/05/01/benchmark-clickhouse-database-and-clickhousedb_fdw/

  • 相关阅读:
    效率较高的排序算法
    django进阶
    django报错TypeError: __init__() missing 1 required positional argument: 'on_delete'
    DjangoORM基本增删改查
    C++中关键字static的作用
    Sqlite的安装和使用 (windows,C#)
    sqlserver查询时对于字符串类型的数据是否区分大小写
    C#自己无聊写的2048小游戏
    C#自己无聊写的俄罗斯方块游戏
    C#实现非枚举类型的在属性控件中可下拉选择(二)
  • 原文地址:https://www.cnblogs.com/zhjh256/p/11615827.html
Copyright © 2020-2023  润新知