[1180]clickhouse查看数据库和表的容量大小

news2024/11/18 23:26:15

文章目录

    • 1.查看数据库容量、行数、压缩率
    • 2.查看数据表容量、行数、压缩率
    • 3.查看数据表分区信息
    • 4.查看数据表字段的信息
    • 5. 查看表的各个指标
    • 6.跟踪分区
    • 7.检查数据大小

在mysql中information_schema这个数据库中保存了mysql服务器所有数据库的信息,
而在clickhouse,我们可以通过system.parts查看clickhouse数据库和表的容量大小、行数、压缩率以及分区信息。

在此通过测试数据库来说明。

1.查看数据库容量、行数、压缩率

SELECT 
    sum(rows) AS `总行数`,
    formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
FROM system.parts

┌────总行数─┬─原始大小──┬─压缩大小─┬─压缩率─┐
│ 326819026 │ 77.15 GiB │ 5.75 GiB │      7 │
└───────────┴───────────┴──────────┴────────┘

1 rows in set. Elapsed: 0.047 sec. Processed 1.04 thousand rows, 520.93 KB (21.95 thousand rows/s., 
11.02 MB/s.) 

2.查看数据表容量、行数、压缩率

--在此查询一张临时表的信息
SELECT 
    table AS `表名`,
    sum(rows) AS `总行数`,
    formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
FROM system.parts
WHERE table IN ('temp_1')
GROUP BY table

┌─表名───┬──总行数─┬─原始大小───┬─压缩大小──┬─压缩率─┐
│ temp_1 │ 3127523 │ 838.21 MiB │ 60.04 MiB │      7 │
└────────┴─────────┴────────────┴───────────┴────────┘

1 rows in set. Elapsed: 0.008 sec.

3.查看数据表分区信息

--查看测试表在19年12月的分区信息
SELECT 
    partition AS `分区`,
    sum(rows) AS `总行数`,
    formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
FROM system.parts
WHERE (database IN ('default')) AND (table IN ('temp_1')) AND (partition LIKE '2019-12-%')
GROUP BY partition
ORDER BY partition ASC

┌─分区───────┬─总行数─┬─原始大小──┬─压缩大小───┬─压缩率─┐
│ 2019-12-01 │     24 │ 6.17 KiB  │ 2.51 KiB   │     41 │
│ 2019-12-02 │   9215 │ 2.45 MiB  │ 209.74 KiB │      8 │
│ 2019-12-03 │  17265 │ 4.46 MiB  │ 453.78 KiB │     10 │
│ 2019-12-04 │  27741 │ 7.34 MiB  │ 677.25 KiB │      9 │
│ 2019-12-05 │  31500 │ 8.98 MiB  │ 469.30 KiB │      5 │
│ 2019-12-06 │    157 │ 37.50 KiB │ 4.95 KiB   │     13 │
│ 2019-12-07 │    110 │ 32.75 KiB │ 3.86 KiB   │     12 │
└────────────┴────────┴───────────┴────────────┴────────┘

7 rows in set. Elapsed: 0.005 sec. 

4.查看数据表字段的信息

SELECT 
    column AS `字段名`,
    any(type) AS `类型`,
    formatReadableSize(sum(column_data_uncompressed_bytes)) AS `原始大小`,
    formatReadableSize(sum(column_data_compressed_bytes)) AS `压缩大小`,
    sum(rows) AS `行数`
FROM system.parts_columns
WHERE (database = 'default') AND (table = 'temp_1')
GROUP BY column
ORDER BY column ASC

┌─字段名───────────┬─类型─────┬─原始大小───┬─压缩大小───┬────行数─┐
│ a                │ String   │ 23.83 MiB  │ 134.13 KiB │ 3127523 │
│ b                │ String   │ 19.02 MiB  │ 127.72 KiB │ 3127523 │
│ c                │ String   │ 5.97 MiB   │ 49.09 KiB  │ 3127523 │
│ d        		   │ String   │ 3.95 MiB   │ 532.86 KiB │ 3127523 │
│ e                │ String   │ 5.17 MiB   │ 49.47 KiB  │ 3127523 │
│ totalDate        │ DateTime │ 11.93 MiB  │ 1.26 MiB   │ 3127523 │
└──────────────────┴──────────┴────────────┴────────────┴─────────┘
————————————————

5. 查看表的各个指标

select database,
       table,
       sum(bytes) as size,
       sum(rows) as rows,
       min(min_date) as min_date,
       max(max_date) as max_date,
       sum(bytes_on_disk) as bytes_on_disk,
       sum(data_uncompressed_bytes) as data_uncompressed_bytes,
       sum(data_compressed_bytes) as data_compressed_bytes,
       (data_compressed_bytes / data_uncompressed_bytes) * 100 as compress_rate,
       max_date - min_date as days,
       size / (max_date - min_date) as avgDaySize
  from system.parts
 where active
   and database = 'database'
   and table = 'tablename'
 group by database, table

结果为:这种结果显示的大小size是字节,我们如何转换为常见的MB和GB呢?

select
    database,
    table,
    formatReadableSize(size) as size,
    formatReadableSize(bytes_on_disk) as bytes_on_disk,
    formatReadableSize(data_uncompressed_bytes) as data_uncompressed_bytes,
    formatReadableSize(data_compressed_bytes) as data_compressed_bytes,
    compress_rate,
    rows,
    days,
    formatReadableSize(avgDaySize) as avgDaySize
from
(
    select
        database,
        table,
        sum(bytes) as size,
        sum(rows) as rows,
        min(min_date) as min_date,
        max(max_date) as max_date,
        sum(bytes_on_disk) as bytes_on_disk,
        sum(data_uncompressed_bytes) as data_uncompressed_bytes,
        sum(data_compressed_bytes) as data_compressed_bytes,
        (data_compressed_bytes / data_uncompressed_bytes) * 100 as compress_rate,
        max_date - min_date as days,
        size / (max_date - min_date) as avgDaySize
    from system.parts
    where active 
     and database = 'database'
     and table = 'tablename'
    group by
        database,
        table
)

结果:这就转换为常见的单位了。

上面过程可以看到,最终都用表进行了聚合,为什么会这样呢?

以一个简单的例子来看,我们最常见的是查看表分区,下面来看下不进行聚合的结果:

select partition
  from system.parts
 where active
   and database = 'database'
   and table = 'tablename'

结果为:这是因为在CH中,和我们hive表不一样,hive表一个分区只会有一条记录,但CH不是,每个分区分为了不同的marks

image.png
因此,我们要实现和hive一样查分区的功能时,要对表进行聚合查看。

6.跟踪分区

SELECT database,
       table,
       count() AS parts,
       uniq(partition) AS partitions,
       sum(marks) AS marks,
       sum(rows) AS rows,
       formatReadableSize(sum(data_compressed_bytes)) AS compressed,
       formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed,
       round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100.,2) AS percentage
  FROM system.parts
 WHERE active
   and database = 'database'
   and table = 'tablename'
 GROUP BY database, table

7.检查数据大小

SELECT table,
       formatReadableSize(sum(data_compressed_bytes)) AS tc,
       formatReadableSize(sum(data_uncompressed_bytes)) AS tu,
       round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100,2) AS ratio
  FROM system.columns
 WHERE database = 'database'
   and table = 'table'
 GROUP BY table
 ORDER BY sum(data_compressed_bytes) ASC

参考:https://blog.csdn.net/weixin_39025362/article/details/109051723
https://blog.csdn.net/qq_21383435/article/details/115679147

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计SSM基于健身房管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Java 变量作用域、构造方法官方教程

一、变量作用域 Java 中的变量有3种: 📖 ① 全局变量:被定义在类中(成员变量) 📖 ② 局部变量:被定义在成员方法、代码块、静态代码块中定义的变量 📖 ③ 参数:方法声明中的变量 T…

1.Spring简介

1.概念 Spring是一个免费开源框架,为了简化企业级项目开发,提供全面的开发部署解决方案。 2.体系结构 Data Access/Integeration是Spring对数据持久层的支持,SpringDataJpa就是其中的一种。Web是Spring对表现层处理的支持,Spir…

Springboot多环境开发

文章目录一. 前言二. 单文件版多环境配置三. 多文件版多环境配置四. 多环境开发配置技巧五. 多环境配置分组管理一. 前言 在日常开发中我们使用的环境可能会不一样,比如开发环境,测试环境,生产环境,那么这些环境对应的配置也会不…

【计算机视觉】数据获取、数据标注、数据增强的概念简介

觉得有帮助麻烦点赞关注收藏~~~ 基于深度学习的视频分析算法是依赖于数据训练的,数据是深度学习的主要原料,对于算法性能的提升是非常重要的。本章将重点介绍数据的获取、标注、增强及处理方法。 一、数据获取 训练数据的来源主要包括网上公开数据库和…

Redis实现短信登录

文章目录一、基于Session实现登录二、基于Redis实现共享Session实现登录一、基于Session实现登录 ---------------------------------------------------Controller PostMapping("code") public Result sendCode(RequestParam("phone") String phone, Http…

JavaScript进阶教程——面向对象、原型对象、this关键字、bind appl call方法

文章目录面向对象ES2015的面向对象语法:ES5的面向对象语法:原型对象原型链Object对象的原型this关键字**指向调用方法的对象:****构造函数:**触发事件指向全局对象:箭头函数总结bind appl call方法call的用法参数apply…

【计算机图形学入门】笔记4:变换(模型、视图、投影)

目录04变换(模型、视图、投影)1.使用齐次坐标表示的三维变换2.view/Camera 视图变换3.Projection 投影变换1.Orthographic projection 正交投影2.Perspective projection 透视投影 ——更适合人眼成像(近大远小,鸽子为什么这么大&…

AlphaControls 读取存贮数据VCL OnChange事件的处理

AlphaControls 读取存贮数据VCL OnChange事件的处理 AlphaControls控件,窗口时显示,对于VCL控件的处理,需要通过调用皮肤模板重新画出来。因此,在窗口的显示过程中,对VCL控件的数据装载(变更&#x…

从获评毕马威中国领先地产科技50强 看贝壳的长期主义

11月9日,在上海进博会现场,毕马威发布了2022年度(第二届)“毕马威中国领先地产科技企业50”报告,并正式发布了年度毕马威中国领先地产科技企业50榜及地产科技新锐企业榜。作为国内居住产业数字服务平台的贝壳上榜。 众…

前辈给的 Spring Cloud 与 Docker 微服务实战,挽救了要被辞退的我

前言 还记得那天天气阴冷,整个人心都是拔凉拔凉的;原因是因为领导找我聊了一下,委婉地说觉得我的技术不太行,能力不突出;要么自己做出改变,要么选择离开。 说实话,我是有点难过的,…

Lambda完整学习指南

什么是Lambda表达式 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。 Java La…

大学生HTML作业篮球网页 HTML作业篮球网页期末作业 HTML+CSS篮球网页 HTML学生作业体育篮球网页

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

ARS系列毫米波雷达技术一览

近年来,自动驾驶成为了当下最热门的话题。随着自动驾驶技术的发展,作为其关键传感器之一的毫米波雷达,也得到了广泛关注。但就目前来看,海外巨头公司主导着全球毫米波雷达产业的发展,其中,大陆ARS540更以九…

吊打面试官,聊聊:Java中String对象的大小?(史上最全)

下面是一个常见的Java 面试题: 聊聊:Java中String对象的大小? 首先,看看空String占用的空间 当前内存大小是在默认开启压缩指针的条件下 对象头 12char[]数组引用 4int 类型 hash数据大小 4loss due to the next object alignm…

MacOS好用的系统清理工具CleanMyMac有哪些特点功能?

怎么样为Mac选择一款专业靠谱的清理工具?需要满足那些功能呢?对于大多数的新手用户可能并不知道如何来清理Mac系统,当然也不知道在众多清理工具中如何选择。选择一款清理工具最重要的是它的性能如何,能不能有效的帮助用户清理系统…

[附源码]JAVA毕业设计小说阅读网站(系统+LW)

[附源码]JAVA毕业设计小说阅读网站(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

听说你还不了解二叉树?赶紧进来轻松解决

✨个人主页: Yohifo 🎉所属专栏: 数据结构 | C语言 🎊每篇一句: 图片来源 Only by self-respect will you compel others to respect you. 只有自尊才能迫使他人尊敬你。 文章目录📘前言📘正文…

java的vo实体类字段和返回前端接收的字段大小写不一致

java的vo实体类字段和返回前端接收的字段不一致 后台的vo字段和前端接收到的出现大小写一直的情况 例如: 后台字段 /** a_lwa */private String aLwa;前端实际接收到的 这是由于使用lombok插件导致的 解决办法 实体类添加注解强制绑定 /** a_lwa */JsonProperty("aLwa&…

【JavaWeb开发-Servlet】day07-学生成绩管理系统-实现登录注册功能

目录 一、登录功能 1、实现登录页面 ①新建一张登录表:login ②插入一条测试数据 ③新建一个login.jsp登录界面 ④此表的实体Teacher类: ⑤ 然后在写一个dao方法,需要根据用户名查询登录表中的用户信息 ⑥业务层中我们直接调用dao层方法 ⑦在…