clickhouse join內存溢出

clickhouse join 內存溢出

  • 前言
  • 排查步驟
    • 查看sql
    • 統計數據量
    • 統計大小
    • 優化索引
    • 優化字段
    • 增加內存
    • 最終優化

前言

在一個離線工作流中任務報錯

Code: 241. DB::Exception: Received from XXXXXX:9000. DB::Exception: Memory limit (for query) exceeded: would use 20.49 GiB (attempt to allocate chunk of 4413264 bytes), maximum: 20.49 GiB: (avg_value_size_hint = 43, avg_chars_size = 42, limit = 8192): (while reading column level_system_name): (while reading from part /data/clickhouse/clickhouse-server/store/eb1/eb151646-ab48-48e6-866b-f5bf913470a1/all_305_310_1/ from mark 432 with max_rows_to_read = 8192): While executing MergeTreeThread. (MEMORY_LIMIT_EXCEEDED)

接下來是排查步驟和處理方法

排查步驟

查看sql

SET max_memory_usage = 22000000000;
insert into  A(column........
) Selectcolumn......
From B Left Join C iOn C.id = B.id;

統計數據量

B 表大概9000w
C 表大概5000w

統計大小

SELECTtable,formatReadableSize(sum(data_compressed_bytes)) AS compressed_size,formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size,formatReadableSize(sum(bytes_on_disk)) AS size
FROM system.parts
WHERE table = 'A'
GROUP BY table;

最開始只統計了 bytes_on_disk 發現兩張表都不超過2G,就很納悶內存都已經給到22G 了還是不夠,后來才發現是壓縮之后的,壓縮前A 8G B 11G

優化索引

經過檢查 關聯條件都在索引,沒辦法優化了

優化字段

經過檢查select 的字段下游都有用到,也無法優化

增加內存

想修改max_memory_usage 參數,但是無限制的加內存也不是解決辦法

最終優化

修改了 join的算法

insert into  A(column........
) Selectcolumn......
From B Left Join C iOn C.id = B.idSettings join_algorithm='partial_merge';

下面是ChatGPT給出的join 算法解釋

在 ClickHouse 中,JoinAlgorithm 參數指定了執行 JOIN 操作時使用的算法。這些算法可以通過設置來優化查詢的性能和內存利用情況。以下是各個 JoinAlgorithm 的含義和作用:1. **prefer_partial_merge**- 這個選項表示 ClickHouse 首選使用部分合并(partial_merge)算法來執行 JOIN 操作。- 部分合并算法會盡量在不需要將整個數據集加載到內存中的情況下執行 JOIN,因此在處理大數據量時可以減少內存的使用。- 如果部分合并算法不適用或無法使用,ClickHouse 會嘗試使用其他適當的 JOIN 算法。2. **hash**- 使用哈希 JOIN 算法來執行 JOIN 操作。- 哈希 JOIN 是一種內存密集型算法,適合處理較小的數據集或者對性能要求較高的場景,因為它通常比其他 JOIN 算法更快速。- 這種算法會將數據加載到內存中,使用哈希表來快速查找匹配的行。3. **partial_merge**- 使用部分合并 JOIN 算法來執行 JOIN 操作。- 部分合并算法嘗試在不需要加載整個數據集到內存中的情況下執行 JOIN,這在處理大數據量時可以節省內存和提高性能。- 它適合處理無序數據或者在其中一個表的數據較大時,可以減少內存壓力。4. **auto**- ClickHouse 自動選擇適當的 JOIN 算法來執行操作。- 這是默認的選項,ClickHouse 會根據查詢的具體情況和表的大小自動選擇合適的 JOIN 算法,以達到最佳的性能和內存利用效果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36092.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36092.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36092.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第 12 課:基于隱語的VisionTransformer框架

基于之前MPC的基礎知識,本講主要內容是MPCViT基于SecretFlow的VisionTransformer框架,主要從神經網絡架構,隱私推理框架和實驗結果三方面介紹。 一、MPCViT:安全且高效的MPC友好型 Vision Transformer架構 MPCViT隱私推理總體框架…

QT中子工程的創建,以及如何在含有庫的子工程項目中引用主項目中的qt資源

1、背景 在qt中創建多項目類型,如下: CustomDll表示其中的一個動態庫子項目; CustomLib表示其中的一個靜態庫子項目; MyWidget表示主項目窗口(main函數所在項目); 2、qrc資源的共享 如何在CustomDll和CustomLib等子項目中也同樣使用 MyWidget項目中的qrc資源呢??? 直…

【AI應用探討】—決策樹應用場景

目錄 1 命名實體識別(NER) 2 信用評估 3 醫學診斷 4 垃圾郵件過濾 5 推薦系統 6 金融欺詐檢測 7 醫療領域的其他應用 8 網絡行為管理系統 1 命名實體識別(NER) 應用場景:在文本處理中,決策樹可以用…

【項目實訓】后端邏輯完善

經測試,我們決定前端可以同時選擇多個類型的崗位進行查詢,以顯示相應的公司崗位信息 于是,修改后端函數的邏輯: 后端 首先,因為要對checkList中的job_name進行模糊匹配查詢,于是使用以下代碼&#xff1a…

mybatis批量處理

批量修改 <update id"updateTaskDistributions" parameterType"java.util.List"><foreach collection"viewTaskDistributions" index"index" item"item" open"begin" close";end;" separa…

【科學計算與可視化】3. Matplotlib 繪圖基礎

安裝 pip install matplotlib 官方文檔 https://matplotlib.org/stable/api/pyplot_summary.html 主要介紹一些圖片繪制的簡要使用&#xff0c;更加詳細和進階需要可參考 以上官方文檔。 1 繪制基礎 方法名說明title()設置圖表的名稱xlabel()設置 x 軸名稱ylabel()設置 y 軸…

雙指針:比較含退格的字符串

題目鏈接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 代碼看起來繁瑣&#xff0c;但實際思想并不難。核心思路是&#xff1a;倒序遍歷&#xff0c;遇到#就記錄跳過次數&#xff0c;遇到字母就跳過記錄次數&#xff0c;最后比較不用跳過時的字母是否一樣。 class S…

負載組指南說明-負載柜

什么是負載組&#xff1f; 負載組是一種設備&#xff0c;旨在準確模擬電源在實際應用中看到的負載。這種負載組可以用電阻、電感或電容元件構建。它是一種電阻裝置&#xff0c;以熱量的形式消散一定量的能量&#xff0c;可以通過自然對流、強制空氣或水冷系統去除。 為什么要使…

江協科技51單片機學習- p11 Proteus安裝模擬51單片機

前言&#xff1a; 本文是根據嗶哩嗶哩網站上“江協科技51單片機”視頻的學習筆記&#xff0c;在這里會記錄下江協科技51單片機開發板的配套視頻教程所作的實驗和學習筆記內容。本文大量引用了江協科技51單片機教學視頻和鏈接中的內容。 引用&#xff1a; Proteus快速入門&…

可溶性聚四氟乙烯離子交換柱PFA層析柱微柱一體成型

PFA微柱&#xff0c;也叫PFA層析柱、PFA離子交換柱等&#xff0c;主要用于地質同位素超凈化、痕量、超痕量、微量元素分析實驗室。 規格參考&#xff1a;1.5ml、15ml、30ml等。 其主要特性有&#xff1a; 1、PFA層析柱&#xff08;微柱&#xff09;專為離子交換設計&#xff…

SAP ERP公有云(全稱 SAP S/4HANA Cloud Public Edition),賦能企業成為智能可持續的企業

在數字化浪潮中&#xff0c;每一家企業都需要應對快速的市場變化&#xff0c;不斷追求降本增效&#xff0c;為創新提供資源&#xff0c;發展新的業務模式&#xff0c;安全無憂地完成關鍵任務系統的轉型。 10年前&#xff0c;SAP進入云領域&#xff0c;用云ERP和覆蓋全線業務的云…

雙通道源表KEITHELY2636B詳情參數吉時利2636B

Keithley的2636B是一款2600B系列雙通道系統源表(SMU)儀器(0.1fA, 10A脈沖)。它是業界領先的電流/電壓源和測量解決方案。這種雙通道模型結合了精密電源&#xff0c;真電流源&#xff0c;6 1/2位DMM&#xff0c;任意波形發生器&#xff0c;脈沖發生器和電子負載的能力&#xff0…

銳起RDV5高性能云桌面

銳起是上海銳起信息技術有限公司旗下品牌。該公司創立于 2001 年&#xff0c;是桌面虛擬化產品和解決方案提供商&#xff0c;專注于桌面管理系統和私有云存儲系統的系列軟件產品研發&#xff0c;致力于簡化 IT 管理、增強系統安全&#xff0c;提供簡單、易用、穩定、安全的產品…

并發數據結構:ConcurrentHashMap深入分析

在Java并發編程中&#xff0c;ConcurrentHashMap是一個極其重要的類&#xff0c;它提供了比Hashtable和同步的HashMap更好的并發性能。本文將深入分析ConcurrentHashMap的內部結構、工作原理以及如何高效地使用它。 1. ConcurrentHashMap簡介 ConcurrentHashMap是Java集合框架…

kubernetes Job yaml文件解析

一、yaml文件示例 apiVersion: batch/v1 kind: Job metadata:name: test-jobnamespace: mtactor spec:completions: 3parallelism: 1backoffLimit: 5activeDeadlineSeconds: 100template:spec:containers:- name: test-jobimage: centoscommand: ["echo","test…

linux創建邏輯盤再掛載

創建邏輯盤再掛載 原因&#xff1a;如果直接掛載整盤&#xff0c;后面想擴容會很麻煩。掛載邏輯卷的話就簡單很多。為了以后方便。所以直接掛載邏輯卷 openEuler系統先裝lvm2如果&#xff1a;-bash: pvcreate: command not found執行&#xff1a;yum install lvm2 df -hT ls…

我在高職教STM32——GPIO入門之按鍵輸入(1)

大家好&#xff0c;我是老耿&#xff0c;高職青椒一枚&#xff0c;一直從事單片機、嵌入式、物聯網等課程的教學。對于高職的學生層次&#xff0c;同行應該都懂的&#xff0c;老師在課堂上教學幾乎是沒什么成就感的。正因如此&#xff0c;才有了借助 CSDN 平臺尋求認同感和成就…

Linux下創建虛擬磁盤

參考文檔 https://blog.csdn.net/lujun9972/article/details/115762407 https://blog.csdn.net/Kiritow/article/details/118076034 1&#xff0c;創建掛載點 sudo mkdir /mnt/z //方式一&#xff0c;內存盤方式 2&#xff0c;創建內存盤 sudo mount -t ramfs -o size1G z /…

Java中的內存泄漏及其排查方法

Java中的內存泄漏及其排查方法 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在Java開發中&#xff0c;內存管理通常由Java虛擬機&#xff08;JVM&#xff0…

【觀察】戴爾科技+AMD:釋放技術創新“乘數效應”,助力制造業打造“新質生產力”...

在今年的政府工作報告中&#xff0c;“人工智能”首次被寫入報告&#xff0c;同時“大力推進現代化產業體系建設&#xff0c;加快發展新質生產力”也被列為2024年的首項政府工作任務&#xff0c;其重要性不言而喻。 尤其是最近幾年&#xff0c;以人工智能、大模型、大數據、云計…