欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

clickhouse系統(tǒng)表日志清理方式詳解

 更新時(shí)間:2023年02月15日 09:01:11   作者:愛吃紅薯粉  
這篇文章主要為大家介紹了clickhouse系統(tǒng)表日志清理方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

簡介

clickhouse會(huì)將查詢?nèi)罩?,度量日志和堆棧采集日志記錄下來,存?chǔ)到自身數(shù)據(jù)庫的system庫中, 分別是query_log,query_thread_log,trace_log,metric_log等5個(gè)表,如果長時(shí)間不清查,該表數(shù)據(jù)會(huì)一直累積。

清理

清理方式

清理這些日志表有多種方式

第1種是設(shè)置表的TTL,clickhouse是支持設(shè)置表的TTL,不管是系統(tǒng)表還是業(yè)務(wù)表。

第2種是使用DDL語句+DML語句刪除指定范圍內(nèi)數(shù)據(jù)

第3種配置文件設(shè)置,在config.xml中提供了日志表的配置

字段釋義:

  • database – 數(shù)據(jù)庫名
  • table – 日志存放的系統(tǒng)表名
  • partition_by — 系統(tǒng)表分區(qū)鍵,如果定義了 engine 則不能使用
  • engine -系統(tǒng)表 表引擎,如果定義了 partition_by 則不能使用
  • flush_interval_milliseconds – 將數(shù)據(jù)從內(nèi)存的緩沖區(qū)刷新到表的時(shí)間間隔。
  • ttl 保存時(shí)間

圖中沒有ttl的配置,可以自行添加, event_date是表中的時(shí)間字段,格式是: 2020-01-01

<!--
            Table TTL specification: https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree/#mergetree-table-ttl
            Example:
                event_date + INTERVAL 1 WEEK
                event_date + INTERVAL 7 DAY DELETE
                event_date + INTERVAL 2 WEEK TO DISK 'bbb'
-->
        <ttl>event_date + INTERVAL 7 DAY DELETE</ttl>

實(shí)際操作

方案選擇

第3種改配置文件方案適合在集群搭建的時(shí)候,后期再改就需要重啟服務(wù),因服務(wù)不能隨意重啟,需要配置維護(hù)期間操作,所以不具靈活性,排除掉了。

第1種設(shè)置TTL的方案也是可以的,但是現(xiàn)在不合適,因?yàn)橐呀?jīng)累積了很長時(shí)間的數(shù)據(jù),數(shù)據(jù)量比較大,直接設(shè)置會(huì)消耗比較多的資源

所以會(huì)使用第2種+第1種組合方案,先分批刪除歷史的日志,然后再使用第1種方案設(shè)置TTL。這樣后期就不需要維護(hù)了

刪除數(shù)據(jù)

使用DDL+DML語句刪除指定日期內(nèi)的數(shù)據(jù)

先用小一點(diǎn)的表操作一下,通常trace_log比較小,query_log表比較大

use system;
#統(tǒng)計(jì)一下2020年有多少條數(shù)據(jù)
select count(*) from trace_log where event_date >= '2020-01-01' and  event_date <= '2020-12-31';
#根據(jù)統(tǒng)計(jì),只有幾十萬或者幾百萬的話,可以執(zhí)行刪除
alter table trace_log delete where event_date >= '2020-01-01' and  event_date <= '2020-12-31';

clickhouse的delete,update等操作是異步的,當(dāng)sql語句一提交,就會(huì)有反饋,這個(gè)時(shí)候是將任務(wù)提交到排隊(duì)執(zhí)行了

如果表非常小,不想選定時(shí)間范圍。也可以一次性清完

ALTER table `system`.trace_log DELETE where event_date is not null;

查看任務(wù)執(zhí)行情況

隊(duì)列數(shù)據(jù)在mutations表中

#統(tǒng)計(jì)歷史次數(shù)
select count(*) from mutations;
#排序,查看最新10條
select database,table,command,create_time,is_done from mutations order by create_time desc limit 10;

表信息顯示了命令發(fā)現(xiàn)的在system庫,表名已經(jīng)執(zhí)行命令的時(shí)間,判斷sql是正在排還是已經(jīng)執(zhí)行完成的是is_done字段。1表示執(zhí)行完成,0表示正在排隊(duì)

單機(jī)操作

clickhouse是支持創(chuàng)建集群庫,集群表的,但是system庫屬于系統(tǒng)自帶的,需要查看庫和表的創(chuàng)建信息

show create database system;
show create table trace_log;

因?yàn)閟ystem屬于系統(tǒng)自帶的庫,集群建好時(shí)已存在,但是創(chuàng)建該庫的sql文件確沒有,所以報(bào)錯(cuò)。

但是查看clickhouse元數(shù)據(jù)文件時(shí)發(fā)現(xiàn) data/system/trace_log文件在變小,說明本節(jié)點(diǎn)刪除成功了,如果換個(gè)節(jié)點(diǎn)執(zhí)行sql語句又能查出來。

所以需要在每個(gè)節(jié)點(diǎn)上執(zhí)行刪除數(shù)據(jù)語句

在元數(shù)據(jù)存儲(chǔ)的目錄可以看到有個(gè)mutations_xxxx.log的文件,是刪除語句的記錄日志 data/system/trace_log

元數(shù)據(jù)的配置

<!-- Path to data directory, with trailing slash. -->
<path>xxxxx/clickhouse/data/</path>

設(shè)置TTL

大部分?jǐn)?shù)據(jù)刪除完成之后,就可以設(shè)置TTL了

#系統(tǒng)表
ALTER table `system`.trace_log MODIFY TTL event_date + toIntervalDay(30);
#業(yè)條表
ALTER TABLE `test`.app_version MODIFY TTL time_stamp + toIntervalYear(30);

總結(jié)

通過刪除表數(shù)據(jù)+設(shè)置TTL的方式,后期就可以0維護(hù)了

系統(tǒng)表日志處理是日常數(shù)據(jù)維護(hù)的一種,業(yè)務(wù)數(shù)據(jù)的清理也可以參考這些方案

以上就是clickhouse系統(tǒng)表日志清理方式詳解的詳細(xì)內(nèi)容,更多關(guān)于clickhouse系統(tǒng)表日志清理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 關(guān)于數(shù)據(jù)庫系統(tǒng)的概述

    關(guān)于數(shù)據(jù)庫系統(tǒng)的概述

    大家好,本篇文章主要講的是關(guān)于數(shù)據(jù)庫系統(tǒng)的概述,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • ssdb簡單介紹

    ssdb簡單介紹

    SSDB是一套基于LevelDB存儲(chǔ)引擎的非關(guān)系型數(shù)據(jù)庫(NOSQL),可用于取代Redis,更適合海量數(shù)據(jù)的存儲(chǔ),這篇文章主要介紹了ssdb簡單介紹,需要的朋友可以參考下
    2023-08-08
  • 詳解SQLite中的查詢規(guī)劃器

    詳解SQLite中的查詢規(guī)劃器

    這篇文章主要介紹了詳解SQLite中的查詢規(guī)劃器,SQLite是一個(gè)開源的嵌入式數(shù)據(jù)庫,需要的朋友可以參考下
    2015-07-07
  • 解決navicat遠(yuǎn)程連接mysql報(bào)錯(cuò)10038的問題

    解決navicat遠(yuǎn)程連接mysql報(bào)錯(cuò)10038的問題

    這篇文章主要介紹了解決navicat遠(yuǎn)程連接mysql報(bào)錯(cuò)10038的問題,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SQL Prompt--絕好的SQL語法提示工具

    SQL Prompt--絕好的SQL語法提示工具

    SQL Prompt--絕好的SQL語法提示工具...
    2007-03-03
  • node-mysql中防止SQL注入的方法總結(jié)

    node-mysql中防止SQL注入的方法總結(jié)

    大家都知道SQL注入對(duì)于網(wǎng)站或者服務(wù)器來講都是一個(gè)非常危險(xiǎn)的問題,如果這一方面沒處理好的話網(wǎng)站可能隨時(shí)給注入了,所以這篇文章就給大家總結(jié)了node-mysql中防止SQL注入的幾種常用做法,有需要的朋友們可以參考借鑒。
    2016-10-10
  • SQL數(shù)據(jù)庫與oracle數(shù)據(jù)庫鏡像有什么不同對(duì)比

    SQL數(shù)據(jù)庫與oracle數(shù)據(jù)庫鏡像有什么不同對(duì)比

    數(shù)據(jù)庫鏡像是將數(shù)據(jù)庫事務(wù)處理從一個(gè)數(shù)據(jù)庫移動(dòng)到不同環(huán)境中的另一個(gè)數(shù)據(jù)庫中。鏡像的拷貝是一個(gè)備用的拷貝,不能直接訪問,它只用在錯(cuò)誤恢復(fù)的情況下。
    2010-03-03
  • PostgreSQL8.3.3安裝方法

    PostgreSQL8.3.3安裝方法

    非安裝版的PostgreSQL8.3.3的首次使用經(jīng)歷第一次用Postgre,已經(jīng)是好多年以前了,隱約記得是在linux下邊,build半天,然后手動(dòng)配置庫文件之類。
    2008-09-09
  • 交互分布式系統(tǒng)下如何生成唯一序列

    交互分布式系統(tǒng)下如何生成唯一序列

    在分布式系統(tǒng)中,由于涉及到多個(gè)不同業(yè)務(wù)module的交互,以及高并發(fā)的場景。我們需要系統(tǒng)能夠生成一個(gè)跨業(yè)務(wù)module的全網(wǎng)唯一序列號(hào),來保證我們業(yè)務(wù)操作的獨(dú)立性和唯一性
    2022-01-01
  • SQL中游標(biāo)(cursor)的基本使用實(shí)例

    SQL中游標(biāo)(cursor)的基本使用實(shí)例

    當(dāng)你檢索的數(shù)據(jù)只是一條記錄時(shí),你所編寫的事務(wù)語句代碼往往使用SELECT INSERT語句,但如果從某一結(jié)果集中逐一地讀取一條記錄呢?游標(biāo)為我們提供了一種極為優(yōu)秀的解決方案,這篇文章主要給大家介紹了關(guān)于SQL中游標(biāo)(cursor)基本使用的相關(guān)資料,需要的朋友可以參考下
    2021-11-11

最新評(píng)論