Jast blog Jast blog
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

Jast-zsh

如果你知道你要去哪里,全世界都会给你让路。
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • 安装Clickhouse集群
  • Clickhouse基础知识
  • Clickhouse-SQL操作
  • Clickhouse-副本
  • Clickhouse-分片集群
  • TODO-Clickhouse-Explain查看执行计划
  • Clickhouse-建表优化
  • Clickhouse-语法优化规则
  • Clickhouse-查询优化
  • Clickhouse-数据一致性
  • Clickhouse-物化视图
  • Clickhouse-使用Kafka表引擎
  • users xml配置文件详解
  • ClickHouse如何实现数据更新-ReplicatedReplacingMergeTree
  • ClickHouse-SQL使用
    • 使用ClickHouseSink写入数据
    • Mutations操作-数据的删除和修改
    • Clickhouse-每批次写入跨多个分区设置
    • 《ClickHouse教程》笔记
    Jast-zsh
    2023-03-10
    目录

    ClickHouse-SQL使用

    # ClickHouse SQL命令

    [toc]

    # 创建集群数据库

    CREATE DATABASE IF NOT EXISTS ${数据库名称} ON CLUSTER ${集群名称} ENGINE=Atomic;
    CREATE DATABASE IF NOT EXISTS db_cluster ON CLUSTER default_cluster ENGINE=Atomic;
    
    1
    2

    集群名称查看方法:

    查看ClickHouse配置文件metrika.xml, default_cluster就是集群名称

    <clickhouse_remote_servers>
         <default_cluster>
             <shard>
                 <internal_replication>true</internal_replication>
                 <replica>
                     <host>9.0.16.8</host>
                     <port>9000</port>
                 </replica><replica>
                     <host>9.0.16.13</host>
                     <port>9000</port>
                 </replica>
             </shard>
         </default_cluster>
     </clickhouse_remote_servers>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    # 删除集群数据库

    drop database ${需要删除的数据库} on CLUSTER ${集群名称}
    drop database db1 on CLUSTER clickhouse_cluster
    
    1
    2

    # 创建表 TODO

    # 删除集群表

    DROP table ${表名称} ON CLUSTER ${集群名称};
    DROP table ads_user_profile ON CLUSTER default_cluster;
    
    1
    2

    清空表数据

    ALTER TABLE msdp_main.ads_user_profile_d DELETE WHERE one_id != '1';
    
    1

    # 查看所有数据库

    select * from system.databases
    
    1

    # 创建视图表

    CREATE TABLE IF NOT EXISTS ${数据库}.${视图表名称} ON CLUSTER ${集群名称}
    AS ${数据库}.${集群表名称}
    ENGINE = Distributed(${集群名称},${数据库},${集群表名称});
    
    CREATE TABLE IF NOT EXISTS msdp_main.ads_user_profile ON CLUSTER default_cluster
    AS msdp_main.ads_user_profile_d
    ENGINE = Distributed(default_cluster,msdp_main,ads_user_profile_d);
    
    1
    2
    3
    4
    5
    6
    7

    # 根据JSON key查询

    select * from msdp_main.ads_user_profile aup where visitParamHas(labels, 'T01')
    
    1

    # TODO 查看磁盘使用状态

    在客户端查询

    SELECT
      hostname() AS hostname,
      database AS database,
      table AS ` Table name `,
      count(*) AS parts,
      count(DISTINCT partition) AS distinct_partitions,
      sum(rows) AS Rows,
      formatReadableSize(sum(data_uncompressed_bytes)) AS uncomp,
      formatReadableSize(sum(data_compressed_bytes)) AS comp,
      sum(bytes_on_disk) AS total_bytes,
      formatReadableSize(sum(bytes_on_disk)) AS total_on_disk,
      round(
        (
          sum(data_compressed_bytes) / sum(data_uncompressed_bytes)
        ) * 100,
        0
      ) AS ratio
    FROM
      clusterAllReplicas('default_cluster', system.parts) 
    WHERE
      rows != 0
    GROUP BY
      hostname,
      database,
      table WITH ROLLUP
    ORDER BY
      total_bytes DESC;
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27

    查询结果

    image-20220524104817817

    # TODO 只查看当前节点磁盘分布

    SELECT database, table, partition, name part_name, active, bytes_on_disk
    FROM system.parts ORDER BY database, table, partition, name;
    SELECT database, sum(bytes_on_disk)
    FROM system.parts
    GROUP BY database;
    
    1
    2
    3
    4
    5

    # 删除30天以前日志数据

    ALTER TABLE system.query_log ON CLUSTER default_cluster MODIFY TTL event_date + INTERVAL 30 DAY DELETE;
    
    ALTER TABLE system.trace_log ON CLUSTER default_cluster MODIFY TTL event_date + INTERVAL 30 DAY DELETE;
    
    ALTER TABLE system.query_thread_log ON CLUSTER default_cluster MODIFY TTL event_date + INTERVAL 30 DAY DELETE;
    
    1
    2
    3
    4
    5

    # 直接删除日志数据

    ALTER table `system`.trace_log DROP PARTITION 2021xx;
    
    ALTER table `system`.query_log DROP PARTITION 2021xx;
    
    ALTER table `system`.query_thread_log DROP PARTITION 2021xx; 
    
    ALTER table `system`.trace_log  on cluster default_cluster DROP PARTITION 202205;
    
    1
    2
    3
    4
    5
    6
    7

    # 异常:分区太大无法删除

    可能的报错,分区太大了不让删除

    9.0.16.13	9000	359	Code: 359, e.displayText() = DB::Exception: Table or Partition in system.query_thread_log was not dropped.\nReason:\n1. Size (129.61 GB) is greater than max_[table/partition]_size_to_drop (50.00 GB)\n2. File \'/data/clickhouse/clickhouse-server/flags/force_drop_table\' intended to force DROP doesn\'t exist\nHow to fix this:\n1. Either increase (or set to zero) max_[table/partition]_size_to_drop in server config\n2. Either create forcing file /data/clickhouse/clickhouse-server/flags/force_drop_table and make sure that ClickHouse has write permission for it.\nExample:\nsudo touch \'/data/clickhouse/clickhouse-server/flags/force_drop_table\' && sudo chmod 666 \'/data/clickhouse/clickhouse-server/flags/force_drop_table\' (version 21.8.12.1)	1	0
    9.0.16.8	9000	359	Code: 359, e.displayText() = DB::Exception: Table or Partition in system.query_thread_log was not dropped.\nReason:\n1. Size (130.02 GB) is greater than max_[table/partition]_size_to_drop (50.00 GB)\n2. File \'/data/clickhouse/clickhouse-server/flags/force_drop_table\' intended to force DROP doesn\'t exist\nHow to fix this:\n1. Either increase (or set to zero) max_[table/partition]_size_to_drop in server config\n2. Either create forcing file /data/clickhouse/clickhouse-server/flags/force_drop_table and make sure that ClickHouse has write permission for it.\nExample:\nsudo touch \'/data/clickhouse/clickhouse-server/flags/force_drop_table\' && sudo chmod 666 \'/data/clickhouse/clickhouse-server/flags/force_drop_table\' (version 21.8.12.1)	0	0
    Code: 359, e.displayText() = DB::Exception: There was an error on [9.0.16.13:9000]: Code: 359, e.displayText() = DB::Exception: Table or Partition in system.query_thread_log was not dropped.
    Reason:
    1. Size (129.61 GB) is greater than max_[table/partition]_size_to_drop (50.00 GB)
    2. File '/data/clickhouse/clickhouse-server/flags/force_drop_table' intended to force DROP doesn't exist
    How to fix this:
    1. Either increase (or set to zero) max_[table/partition]_size_to_drop in server config
    2. Either create forcing file /data/clickhouse/clickhouse-server/flags/force_drop_table and make sure that ClickHouse has write permission for it.
    Example:
    sudo touch '/data/clickhouse/clickhouse-server/flags/force_drop_table' && sudo chmod 666 '/data/clickhouse/clickhouse-server/flags/force_drop_table' (version 21.8.12.1) (version 21.8.12.1)
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    解决方法:

    此报错原因是ck的保护机制,表/分区大小超过50G,默认不允删除 解决办法: config.xml 配置后重启集群生效 <max_table_size_to_drop>0 </max_table_size_to_drop> <max_partition_size_to_drop>0 </max_partition_size_to_drop>

    # 查看表的所有partition

    select partition,name,database,table from system.parts where database='system' and table ='query_thread_log';
    
    1

    # 查看当前正在执行的SQL

    SELECT query_id,query FROM system.processes 
    
    1

    # 根据执行时间排序查看正在执行的语句

    select * from system.processes order by elapsed desc limit 10;
    
    1

    # 查看正在执行的mutations语句

    select * from system.mutations where is_done = 0;
    
    1

    # 杀掉卡住的mutation操作,id填上面查询到的

    KILL mutation where mutation_id = '';
    KILL MUTATION WHERE database = 'default' AND table = 'table'; 
    
    1
    2
    上次更新: 2023/03/10, 17:30:33
    ClickHouse如何实现数据更新-ReplicatedReplacingMergeTree
    使用ClickHouseSink写入数据

    ← ClickHouse如何实现数据更新-ReplicatedReplacingMergeTree 使用ClickHouseSink写入数据→

    最近更新
    01
    Linux可视化监控
    02-26
    02
    Maven私服搭建
    02-26
    03
    当ElasticSearch时间字段设置多个格式到底是用的哪个?
    01-19
    更多文章>
    Theme by Vdoing | Copyright © 2016-2025 Jast-zsh | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式