操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    頭條創(chuàng)作挑戰(zhàn)賽#

    多種安裝方式


    Clickhouse官網(wǎng)為:https://clickhouse.tech/


    在官網(wǎng)中可以看到ClickHouse可以基于多種方式安裝,rpm安裝、tgz安裝包安裝、docker鏡像安裝、源碼編譯安裝等。這里我們使用rpm安裝包安裝。目前Clickhouse僅支持Linux系統(tǒng)且cpu必須支持SSE4.2指令集,可以通過以下命令查詢Linux是否支持:


    grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"



    如果服務(wù)器不支持SSE4.2指令集,則不能下載預(yù)編譯安裝包,需要通過源碼編譯特定版本進(jìn)行安裝。


    一、rpm安裝包下載


    ClickHouse rpm安裝包查詢地址為:https://packagecloud.io/Altinity/clickhouse
    這里需要在linux中使用wget命令下載對(duì)應(yīng)的clickHouse版本。選擇一臺(tái)服務(wù)器創(chuàng)建/software目錄并進(jìn)入此目錄,在當(dāng)前目錄下執(zhí)行如下命令下載ClickHouse需要的rpm安裝包,這里只需要下載以下四個(gè)rpm安裝包即可。


    wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm/download.rpm
    wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm/download.rpm
    wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-20.8.3.18-1.el7.x86_64.rpm/download.rpm
    wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-20.8.3.18-1.el7.x86_64.rpm/download.rpm



    二、??????單節(jié)點(diǎn)安裝


    選擇一臺(tái)服務(wù)器,將下載好的clickHouse安裝包直接安裝即可,安裝順序如下:


    rpm -ivh clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm
    rpm -ivh clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm
    rpm -ivh clickhouse-server-20.8.3.18-1.el7.x86_64.rpm
    rpm -ivh clickhouse-client-20.8.3.18-1.el7.x86_64.rpm



    這里也可以在當(dāng)前節(jié)點(diǎn)直接執(zhí)行如下命令,也可以按照依賴關(guān)系安裝各個(gè)rpm包:


    rpm -ivh ./clickhouse-*.rpm



    Preparing... ################################# [100%]

    Updating / installing...

    1:clickhouse-server-common-20.8.3.1################################# [ 25%]

    2:clickhouse-common-static-20.8.3.1################################# [ 50%]

    3:clickhouse-server-20.8.3.18-1.el7################################# [ 75%]

    Create user clickhouse.clickhouse with datadir /var/lib/clickhouse

    4:clickhouse-client-20.8.3.18-1.el7################################# [100%]

    Create user clickhouse.clickhouse with datadir /var/lib/clickhouse


    1、目錄介紹


    安裝完成之后會(huì)生成如下對(duì)應(yīng)的目錄,每個(gè)目錄的介紹如下:


    • /etc/clickhouse-server : 服務(wù)端的配置文件目錄,包括全局配置config.xml 和用戶配置users.xml。
    • /var/lib/clickhouse : 默認(rèn)的數(shù)據(jù)存儲(chǔ)目錄,通常會(huì)修改,將數(shù)據(jù)保存到大容量磁盤路徑中。
    • /var/log/cilckhouse-server : 默認(rèn)保存日志的目錄,通常會(huì)修改,將數(shù)據(jù)保存到大容量磁盤路徑中。
    • 在/usr/bin下會(huì)有可執(zhí)行文件:


    clickhouse:主程序可執(zhí)行文件


    clickhouse-server:一個(gè)指向clickhouse可執(zhí)行文件的軟連接,供服務(wù)端啟動(dòng)使用。


    clickhouse-client:一個(gè)指向clickhouse可執(zhí)行文件的軟連接,供客戶端啟動(dòng)使用。


    2、啟動(dòng)&停止服務(wù)


    啟動(dòng)clickhouse-server服務(wù):


    service clickhouse-server start



    啟動(dòng)clickhouse服務(wù)后可以使用命令行客戶端連接到服務(wù):


    # client客戶端連接到ch服務(wù)
    clickhouse-client 
    # 或者使用命令:
    clickhouse-client --host localhost --port 9000



    ClickHouse client version 20.8.3.18.
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 20.8.3 revision 54438.

    node1 :)


    #查看9000 端口占用情況
    [root@node5 bin]# yum install net-tools
    [root@node5 bin]# netstat -tunlp |grep 9000
    
    #查看當(dāng)前所有數(shù)據(jù)庫
    show databases;



    ┌─name───────────────────────────┐
    
    │ _temporary_and_external_tables │
    
    │ default                        │
    
    │ system                         │
    
    └────────────────────────────────┘



    ???????????


    #查看當(dāng)前使用的數(shù)據(jù)庫
    select database();



    ┌─database()─┐
    │ default    │
    └────────────┘



    #退出客戶端
    quit;



    關(guān)閉ClickHouse服務(wù):


    service clickhouse-server stop



    三、分布式安裝


    1、clickhouse分布式安裝


    Clickhouse支持分布式搭建,搭建步驟如下:


    1.1、選擇三臺(tái)clickhouse節(jié)點(diǎn),在每臺(tái)節(jié)點(diǎn)上安裝clickhouse需要的安裝包


    這里選擇node1、node2,node3三臺(tái)節(jié)點(diǎn),分別按照clickhouse單節(jié)點(diǎn)安裝方式在每臺(tái)節(jié)點(diǎn)上安裝clickhouse。


    1.2、安裝zookeeper集群并啟動(dòng)


    搭建Clickhouse集群時(shí),需要使用Zookeeper去實(shí)現(xiàn)集群副本之間的同步,所以這里需要zookeeper集群,zookeeper集群安裝后可忽略此步驟。


    1.3、配置外網(wǎng)可訪問


    在每臺(tái)clickhouse節(jié)點(diǎn)中配置/etc/clickhouse-server/config.xml文件第114行<listen_host>,如下:


    <listen_host>::</listen_host>



    1.4、在每臺(tái)節(jié)點(diǎn)/etc/目錄下創(chuàng)建metrika.xml文件,寫入以下內(nèi)容


    在node1、node2、node3節(jié)點(diǎn)上/etc/下配置metrika.xml文件:


    vim /etc/metrika.xml



    <yandex>
        <clickhouse_remote_servers>
            <clickhouse_cluster_3shards_1replicas>
                <shard>
                    <internal_replication>true</internal_replication>
                    <replica>
                        <host>node1</host>
                        <port>9000</port>
                    </replica>
                </shard>
                <shard>
                    <replica>
                        <internal_replication>true</internal_replication>
                        <host>node2</host>
                        <port>9000</port>
                    </replica>
                </shard>
                <shard>
                    <internal_replication>true</internal_replication>
                    <replica>
                        <host>node3</host>
                        <port>9000</port>
                    </replica>
                </shard>
            </clickhouse_cluster_3shards_1replicas>
        </clickhouse_remote_servers>
         
        <zookeeper-servers>
            <node index="1">
                <host>node3</host>
                <port>2181</port>
            </node>
            <node index="2">
                <host>node4</host>
                <port>2181</port>
            </node>
            <node index="3">
                <host>node5</host>
                <port>2181</port>
            </node>
        </zookeeper-servers>
        <macros>
            <replica>01</replica>
        </macros>
        <networks>
            <ip>::/0</ip>
        </networks>
        <clickhouse_compression>
            <case>
                <min_part_size>10000000000</min_part_size>
                <min_part_size_ratio>0.01</min_part_size_ratio>
                <method>lz4</method>
            </case>
        </clickhouse_compression>
    </yandex>



    對(duì)以上配置文件中配置項(xiàng)的解釋如下:


    • clickhouse_remote_servers:


    clickhouse集群配置標(biāo)簽,固定寫法。


    • clickhouse_cluster_3shards_1replicas:


    配置clickhouse的集群名稱,可自由定義名稱,注意集群名稱中不能包含點(diǎn)號(hào)。這里代表集群中有3個(gè)分片,每個(gè)分片有1個(gè)副本。


    分片是指包含部分?jǐn)?shù)據(jù)的服務(wù)器,要讀取所有的數(shù)據(jù),必須訪問所有的分片。


    副本是指存儲(chǔ)分片備份數(shù)據(jù)的服務(wù)器,要讀取所有的數(shù)據(jù),訪問任意副本上的數(shù)據(jù)即可。


    • shard:


    分片,一個(gè)clickhouse集群可以分多個(gè)分片,每個(gè)分片可以存儲(chǔ)數(shù)據(jù),這里分片可以理解為clickhouse機(jī)器中的每個(gè)節(jié)點(diǎn)。這里可以配置一個(gè)或者任意多個(gè)分片,在每個(gè)分片中可以配置一個(gè)或任意多個(gè)副本,不同分片可配置不同數(shù)量的副本。如果只是配置一個(gè)分片,這種情況下查詢操作應(yīng)該稱為遠(yuǎn)程查詢,而不是分布式查詢。


    • replica:


    每個(gè)分片的副本,默認(rèn)每個(gè)分片配置了一個(gè)副本。也可以配置多個(gè)。如果配置了副本,讀取操作可以從每個(gè)分片里選擇一個(gè)可用的副本。如果副本不可用,會(huì)依次選擇下個(gè)副本進(jìn)行連接。該機(jī)制利于系統(tǒng)的可用性。


    • internal_replication:


    默認(rèn)為false,寫數(shù)據(jù)操作會(huì)將數(shù)據(jù)寫入所有的副本,設(shè)置為true,寫操作只會(huì)選擇一個(gè)正常的副本寫入數(shù)據(jù),數(shù)據(jù)的同步在后臺(tái)自動(dòng)進(jìn)行。


    • zookeeper-servers:


    配置的zookeeper集群


    • macros:


    區(qū)分每臺(tái)clickhouse節(jié)點(diǎn)的宏配置,每臺(tái)clickhouse需要配置不同名稱。


    • networks:


    這里配置ip為“::/0”代表任意IP可以訪問,包含IPv4和IPv6。


    注意:允許外網(wǎng)訪問還需配置/etc/clickhouse-server/config.xml 參照第三步驟。


    • clickhouse_compression:


    MergeTree引擎表的數(shù)據(jù)壓縮設(shè)置,min_part_size:代表數(shù)據(jù)部分最小大小。min_part_size_ratio:數(shù)據(jù)部分大小與表大小的比率。method:數(shù)據(jù)壓縮格式。


    注意:需要在每臺(tái)clickhouse節(jié)點(diǎn)上配置metrika.xml文件,并且修改每個(gè)節(jié)點(diǎn)的 macros配置名稱。


    1.5、在每臺(tái)節(jié)點(diǎn)上啟動(dòng)clickhouse服務(wù)


    首先啟動(dòng)zookeeper集群,然后分別在node1、node2、node3節(jié)點(diǎn)上啟動(dòng)clickhouse服務(wù),這里每臺(tái)節(jié)點(diǎn)和單節(jié)點(diǎn)啟動(dòng)一樣。啟動(dòng)之后,clickhouse集群配置完成。


    service clickhouse-server start



    1.6、檢查集群配置是否完成


    在node1、node2、node3任意一臺(tái)節(jié)點(diǎn)進(jìn)入clickhouse客戶端,查詢集群配置:


    #選擇三臺(tái)clickhouse任意一臺(tái)節(jié)點(diǎn),進(jìn)入客戶端
    clickhouse-client 
    #查詢集群信息,看到下圖所示即代表集群配置成功。
    node1 :) select * from system.clusters;





    四、??????????????rpm其他方式安裝問題


    以上介紹clickhouse安裝方式是下載好rpm包之后進(jìn)行安裝,我們也可以自己配置clickhouse的yum源,直接使用yum命令進(jìn)行安裝,不過這個(gè)過程是從外網(wǎng)直接下載clickhouse安裝包之后自動(dòng)進(jìn)行安裝。配置如下:


    1、??????????????添加官方存儲(chǔ)庫


    選擇需要安裝clickhouse的節(jié)點(diǎn)執(zhí)行如下命令,添加clickhouse的官方y(tǒng)um源:


    [root@node1 ~]# yum -y install yum-utils
    [root@node1 ~]# rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPG
    [root@node1 ~]# yum-config-manager --add-repo https://repo.yandex.ru/clickhouse/rpm/stable/x86_64



    Loaded plugins: fastestmirror

    adding repo from: https://repo.yandex.ru/clickhouse/rpm/stable/x86_64

    [repo.yandex.ru_clickhouse_rpm_stable_x86_64]

    name=added from: https://repo.yandex.ru/clickhouse/rpm/stable/x86_64

    baseurl=https://repo.yandex.ru/clickhouse/rpm/stable/x86_64

    enabled=1


    2、??????????????安裝clickhouse server和client


    yum -y install clickhouse-server clickhouse-client



    經(jīng)過以上兩個(gè)步驟即可完成安裝,這里安裝單機(jī)和安裝集群都可以使用以上這種模式。


    注意:在Centos7 中采用配置yum 源方式安裝ClickHouse啟動(dòng)時(shí)使用命令:systemctl start clickhouse-server

    ClickHouse簡(jiǎn)介

    ClickHouse是一個(gè)高性能且開源的數(shù)據(jù)庫管理系統(tǒng),主要用于在線分析處理(OLAP)業(yè)務(wù)。它采用列式存儲(chǔ)結(jié)構(gòu),可使用SQL語句實(shí)時(shí)生成數(shù)據(jù)分析報(bào)告,另外它還支持索引,分布式查詢以及近似計(jì)算等特性,憑借其優(yōu)異的表現(xiàn),ClickHouse在各大互聯(lián)網(wǎng)公司均有廣泛地應(yīng)用。

    ClickHouse 是俄羅斯的 Yandex 于 2016 年開源的用于在線分析處理查詢(OLAP :Online Analytical Processing)MPP架構(gòu)的列式存儲(chǔ)數(shù)據(jù)庫(DBMS:Database Management System),能夠使用 SQL 查詢實(shí)時(shí)生成分析數(shù)據(jù)報(bào)告。ClickHouse的全稱是Click Stream,Data WareHouse。

    • ClickHouse可以做用戶行為分析,流批一體
    • 線性擴(kuò)展和可靠性保障能夠原生支持 shard + replication
    • ClickHouse沒有走h(yuǎn)adoop生態(tài),采用 Local attached storage 作為存儲(chǔ)

    官網(wǎng):https://clickhouse.com/

    中文官網(wǎng):https://clickhouse.com/docs/zh

    一、ClickHouse特性

    相比于其它的列式數(shù)據(jù)庫,ClickHouse的以下特性決定了它更適用于OLAP業(yè)務(wù)場(chǎng)景

    • 數(shù)據(jù)壓縮:ClickHouse會(huì)自動(dòng)對(duì)插入的數(shù)據(jù)進(jìn)行壓縮,這對(duì)于性能的提升起到了至關(guān)重要的作用
    • 磁盤存儲(chǔ):ClickHouse被設(shè)計(jì)為工作在傳統(tǒng)磁盤上,這意味著數(shù)據(jù)存儲(chǔ)的成本較低
    • 多核心并行處理:ClickHouse會(huì)利用服務(wù)器的一切必要資源,以并行化處理大規(guī)模查詢
    • 分布式查詢:在ClickHouse中,數(shù)據(jù)可以保存在不同的分片(shard)上,查詢可以在所有分片上并行處理
    • 支持SQL:ClickHouse的查詢語言大部分情況下是與SQL標(biāo)準(zhǔn)兼容的
    • 向量引擎:ClickHouse采用了列向量引擎技術(shù),可以更為高效地使用CPU資源
    • 實(shí)時(shí)數(shù)據(jù)更新:ClickHouse使用MergeTree引擎對(duì)數(shù)據(jù)進(jìn)行增量排序,數(shù)據(jù)可以持續(xù)不斷地寫入到表中并進(jìn)行合并,而且在整個(gè)過程中不會(huì)存在任何加鎖行為
    • 支持索引:ClickHouse按照排序鍵對(duì)數(shù)據(jù)進(jìn)行排序并支持主鍵索引,可以使其在幾十毫秒內(nèi)完成對(duì)特定值或特定范圍的查找
    • 支持近似計(jì)算:ClickHouse提供了許多在允許犧牲數(shù)據(jù)精度的情況下對(duì)查詢進(jìn)行加速的方法 。對(duì)于大多數(shù)查詢而言,ClickHouse的響應(yīng)速度更快,這也是選擇ClickHouse作為OLAP數(shù)據(jù)處理的主要原因

    上面只列舉了一些最具代表性的功能,但這已然足以表明為什么 ClickHouse 稱得上是 DBMS 了。

    但是注意,ClickHouse 雖然很優(yōu)秀,但它畢竟是一款面向 OLAP 的數(shù)據(jù)庫,我們不能把它用于任何 OLTP 事務(wù)性操作的場(chǎng)景,因?yàn)樗幸韵聨c(diǎn)不足:

    • 不支持事務(wù)
    • 不擅長根據(jù)主鍵按行粒度進(jìn)行查詢(雖然支持),所以不應(yīng)該把 ClickHouse 當(dāng)做鍵值對(duì)數(shù)據(jù)庫使用
    • 不擅長按行刪除數(shù)據(jù)(雖然支持)

    不過這些不足并不能算是 ClickHouse 的缺點(diǎn),事實(shí)上其它的同類高性能面向 OLAP 的數(shù)據(jù)庫一樣不擅長上面這些。因?yàn)閷?duì)于 OLAP 數(shù)據(jù)庫而言,上述這些能力不是重點(diǎn),只能說這是為了極致的查詢性能所做的權(quán)衡

    二、安裝

    1.Docker安裝

    下載地址:docker-toolbox-mac-docker-for-mac安裝包下載_開源鏡像站-阿里云

    Mac最新Docker.dmg下載地址

    https://mirrors.aliyun.com/docker-toolbox/

    https://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/stable/

    2.ClickHouse安裝

    ClickHouse只能在linux安裝 所以在Mac下 我是通過Docker安裝的

    clickhouse-server 安裝

    a123456@luludeMBP-2 ~ % docker pull yandex/clickhouse-server
    Using default tag: latest
    latest: Pulling from yandex/clickhouse-server
    ea362f368469: Pull complete
    38ba82a23e2b: Pull complete
    9b17d04b6c62: Pull complete
    5658714e4e8b: Pull complete
    6bde977a0bf8: Pull complete
    39053b27290b: Pull complete
    762d3d237065: Pull complete
    Digest: sha256:1cbf75aabe1e2cc9f62d1d9929c318a59ae552e2700e201db985b92a9bcabc6e
    Status: Downloaded newer image for yandex/clickhouse-server:latest
    docker.io/yandex/clickhouse-server:latest

    clickhouse-client 安裝

    a123456@luludeMBP-2 ~ % docker pull yandex/clickhouse-client
    Using default tag: latest
    latest: Pulling from yandex/clickhouse-client
    2f94e549220a: Pull complete
    a72d8599d7c2: Pull complete
    e9232762ed9d: Downloading [============================> ] 134.5MB/235MB
    29c8f4b1e77e: Download complete
    e9232762ed9d: Pull complete
    29c8f4b1e77e: Pull complete
    Digest: sha256:9ae2ee421c9c9f00406a39a1174276aa23abb7fceac13b40578b18eeaa9bc4d1
    Status: Downloaded newer image for yandex/clickhouse-client:latest
    docker.io/yandex/clickhouse-client:latest

    啟動(dòng)server端

    yangyanpingdeMacBook-Air:~ yangyanping$
    docker run -d --name ch-server --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 -p 9009:9009 yandex/clickhouse-server
    9a8fd6ba268fb6567af1f5a92d9a93467d89411ebae195a5ccc1e88a7cbbcca7

    啟動(dòng) clickhouse-client

    a123456@luludeMBP-2 ~ % docker run -it --rm --link ch-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
    ClickHouse client version 22.1.3.7 (official build).
    Connecting to clickhouse-server:9000 as user default.
    Connected to ClickHouse server version 22.1.3 revision 54455.

    三、常用操作

    SHOW DATABASES

    打印所有的數(shù)據(jù)庫列表,該查詢等同于

    SELECT name FROM system.databases [INTO OUTFILE filename] [FORMAT format]

    SHOW DATABASES [INTO OUTFILE filename] [FORMAT format]

    3f070c2bb470 :) show databases;

    SHOW DATABASES

    Query id: 2aee3be7-688e-4cdb-8663-56baf78d3804

    ┌─name───────────────┐

    │ INFORMATION_SCHEMA │

    │ default │

    │ information_schema │

    │ system │

    └────────────────────┘

    4 rows in set. Elapsed: 0.005 sec.

    創(chuàng)建數(shù)據(jù)庫CREATE DATABASE

    CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]

    條件

    IF NOT EXISTS

    如果db_name數(shù)據(jù)庫已經(jīng)存在,則ClickHouse不會(huì)創(chuàng)建新數(shù)據(jù)庫并且:

    如果指定了子句,則不會(huì)引發(fā)異常。

    如果未指定子句,則拋出異常。

    3f070c2bb470 :) create database test;
    CREATE DATABASE test
    Query id: 1e43891b-62f3-452c-9662-ca96dac074fd
    Ok.
    0 rows in set. Elapsed: 0.005 sec.

    查詢表ENGINE

    3f070c2bb470 :) show create database test;
    SHOW CREATE DATABASE test
    Query id: fd1214aa-f3fd-4817-b818-f73a3bd7a2ec
    ┌─statement───────────────────────────┐
    │ CREATE DATABASE test
    ENGINE = Atomic │
    └─────────────────────────────────────┘
    1 rows in set. Elapsed: 0.003 sec.

    切換數(shù)據(jù)庫

    3f070c2bb470 :) use test;
    USE test
    Query id: 338d285e-be47-48b9-878f-187b5094f0e4
    Ok.
    0 rows in set. Elapsed: 0.002 sec.

    創(chuàng)建表

    3f070c2bb470 :) CREATE TABLE user
    (
    `id` Int8,
    `name` String,
    `age`Int8
    ) ENGINE = Memory ;
    
    CREATE TABLE user
    (
    `id` Int8,
    `name` String,
    `age` Int8
    )
    ENGINE = Memory
    Query id: 832ec5c8-9b3a-48a4-ba70-91b5f21ad68a
    Ok.
    0 rows in set. Elapsed: 0.013 sec.

    查看表結(jié)構(gòu)

    3f070c2bb470 :) desc user;
    DESCRIBE TABLE user
    Query id: aacff6e6-e06f-4753-b299-a1f2212d763e
    ┌─name─┬─type───┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
    │ id │ Int8 │ │ │ │ │ │
    │ name │ String │ │ │ │ │ │
    │ age │ Int8 │ │ │ │ │ │
    └──────┴────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
    3 rows in set. Elapsed: 0.004 sec.

    表CRUD操作

    3f070c2bb470 :) insert into user(`id`,`name`,`age`) values(1,'yyp',18);
    INSERT INTO user (id, name, age) FORMAT Values
    Query id: 97bf74fd-b79a-4ad3-a4de-afa6f0c8a3bf
    Ok.
    1 rows in set. Elapsed: 0.018 sec.
    3f070c2bb470 :) select * from user;
    SELECT *
    FROM user
    Query id: 5df46115-378b-4e85-a484-d87937dd4f07
    ┌─id─┬─name─┬─age─┐
    │ 1 │ yyp │ 18 │
    └────┴──────┴─────┘
    1 rows in set. Elapsed: 0.003 sec.
    3f070c2bb470 :) alter table user update age=20 where id =1;
    ALTER TABLE user
    UPDATE age = 20 WHERE id = 1
    Query id: 7cb0f153-ab4b-4003-af97-f8277d09a3c5
    Ok.
    0 rows in set. Elapsed: 0.008 sec.
    3f070c2bb470 :) alter table user delete where id =1;
    ALTER TABLE user
    DELETE WHERE id = 1
    Query id: 66bd95b2-6953-4f44-b95d-9cf63b2caf84
    Ok.
    0 rows in set. Elapsed: 0.005 sec.

    四、表引擎

    ClickHouse 并不是直接就一蹴而就的,Metrica 產(chǎn)品的最初架構(gòu)是基于MySQL實(shí)現(xiàn)的,所以在 ClickHouse 的設(shè)計(jì)中,能夠察覺到一些 MySQL 的影子,表引擎的設(shè)計(jì)就是其中之一。與 MySQL 類似,ClickHouse 也將存儲(chǔ)部分進(jìn)行了抽象,把存儲(chǔ)引擎作為一層獨(dú)立的接口,并且擁有合并樹、內(nèi)存、文件、接口等 20 多種引擎。其中每一種引擎都有著各自的特點(diǎn),用戶可以根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景的需求,選擇合適的引擎。

    下面是幾種常用的表引擎:

    TinyLog

    最簡(jiǎn)單的表引擎,用于將數(shù)據(jù)存儲(chǔ)在磁盤上。每列都存儲(chǔ)在單獨(dú)的壓縮文件中。寫入時(shí),數(shù)據(jù)將附加到文件末尾。

    并發(fā)數(shù)據(jù)訪問不受任何限制:

    如果同時(shí)從表中讀取并在不同的查詢中寫入,則讀取操作將拋出異常

    如果同時(shí)寫入多個(gè)查詢中的表,則數(shù)據(jù)將被破壞。

    這種表引擎的典型用法是 write-once:首先只寫入一次數(shù)據(jù),然后根據(jù)需要多次讀取。查詢?cè)趩蝹€(gè)流中執(zhí)行。換句話說,此引擎適用于相對(duì)較小的表(建議最多1,000,000行)。如果您有許多小表,則使用此表引擎是適合的,因?yàn)樗萀og引擎更簡(jiǎn)單(需要打開的文件更少)。當(dāng)您擁有大量小表時(shí),可能會(huì)導(dǎo)致性能低下,但在可能已經(jīng)在其它 DBMS 時(shí)使用過,則您可能會(huì)發(fā)現(xiàn)切換使用 TinyLog 類型的表更容易。不支持索引。

    在 Yandex.Metrica 中,TinyLog 表用于小批量處理的中間數(shù)據(jù)。

    以列文件的形式保存在磁盤上,不支持索引,沒有并發(fā)控制。一般保存少量數(shù)據(jù)的小表,生產(chǎn)環(huán)境上作用有限。可以用于平時(shí)練習(xí)測(cè)試使用。

    Memory

    Memory 引擎以未壓縮的形式將數(shù)據(jù)存儲(chǔ)在 RAM 中。數(shù)據(jù)完全以讀取時(shí)獲得的形式存儲(chǔ)。換句話說,從這張表中讀取是很輕松的。并發(fā)數(shù)據(jù)訪問是同步的。鎖范圍小:讀寫操作不會(huì)相互阻塞。不支持索引。查詢是并行化的。在簡(jiǎn)單查詢上達(dá)到最大速率(超過10 GB /秒),因?yàn)闆]有磁盤讀取,不需要解壓縮或反序列化數(shù)據(jù)。(值得注意的是,在許多情況下,與 MergeTree 引擎的性能幾乎一樣高)。重新啟動(dòng)服務(wù)器時(shí),表中的數(shù)據(jù)消失,表將變?yōu)榭铡Mǔ#褂么吮硪媸遣缓侠淼摹5牵捎糜跍y(cè)試,以及在相對(duì)較少的行(最多約100,000,000)上需要最高性能的查詢。

    內(nèi)存引擎,數(shù)據(jù)以未壓縮的原始形式直接保存在內(nèi)存當(dāng)中,服務(wù)器重啟數(shù)據(jù)就會(huì)消失。讀寫操作不會(huì)相互阻塞,不支持索引。簡(jiǎn)單查詢下有非常非常高的性能表現(xiàn)。一般用到它的地方不多,除了用來測(cè)試,就是在需要非常高的性能,同時(shí)數(shù)據(jù)量又不太大的場(chǎng)景

    MergeTree

    Clickhouse 中最強(qiáng)大的表引擎當(dāng)屬 MergeTree (合并樹)引擎及該系列(*MergeTree)中的其他引擎。

    MergeTree 系列的引擎被設(shè)計(jì)用于插入極大量的數(shù)據(jù)到一張表當(dāng)中。數(shù)據(jù)可以以數(shù)據(jù)片段的形式一個(gè)接著一個(gè)的快速寫入,數(shù)據(jù)片段在后臺(tái)按照一定的規(guī)則進(jìn)行合并。相比在插入時(shí)不斷修改(重寫)已存儲(chǔ)的數(shù)據(jù),這種策略會(huì)高效很多。

    主要特點(diǎn):

    存儲(chǔ)的數(shù)據(jù)按主鍵排序。

    這使得您能夠創(chuàng)建一個(gè)小型的稀疏索引來加快數(shù)據(jù)檢索。

    如果指定了 分區(qū)鍵 的話,可以使用分區(qū)。

    在相同數(shù)據(jù)集和相同結(jié)果集的情況下 ClickHouse 中某些帶分區(qū)的操作會(huì)比普通操作更快。查詢中指定了分區(qū)鍵時(shí) ClickHouse 會(huì)自動(dòng)截取分區(qū)數(shù)據(jù)。這也有效增加了查詢性能。

    支持?jǐn)?shù)據(jù)副本。

    ReplicatedMergeTree 系列的表提供了數(shù)據(jù)副本功能。更多信息,請(qǐng)參閱 數(shù)據(jù)副本 一節(jié)。

    支持?jǐn)?shù)據(jù)采樣。

    需要的話,您可以給表設(shè)置一個(gè)采樣方法。

    ClickHouse中最強(qiáng)大的表引擎當(dāng)屬M(fèi)ergeTree引擎及該系列中的其他引擎,支持索引和分區(qū),地位可以相當(dāng)于innodb之于Mysql。而且基于MergeTree,還衍生除了很多小弟,也是非常有特色的引擎。

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有