【问题标题】:Clickhouse: DB::Exception: Memory limit (for query) exceededClickhouse:DB::Exception:超出内存限制(用于查询)
【发布时间】:2021-03-26 17:43:43
【问题描述】:

当我的 Clickhouse 查询内存不足时,我该怎么办?你不能只是提高记忆力,对吧?内存也有限制,硬盘怎么配置?

SELECT
    UserID,
    Title
FROM 
(
    SELECT
        L.UserID,
        L.Title
    FROM tutorial.hits_v1 AS L
    INNER JOIN tutorial.hits_v2 AS R ON L.UserID = R.UserID
) AS T
ORDER BY UserID ASC
LIMIT 10
#user.d/abc.xml


<?xml version="1.0"?>
<yandex>
    <!-- Profiles of settings. -->
    <profiles>
        <!-- Default settings. -->
        <default>
            <!-- Maximum memory usage for processing single query, in bytes. -->
            <max_memory_usage>350000000</max_memory_usage>
            <max_memory_usage_for_user>350000000</max_memory_usage_for_user>
            <max_bytes_before_external_group_by>100000000</max_bytes_before_external_group_by>
            <max_bytes_before_external_sort>100000000</max_bytes_before_external_sort>
        </default>
    </profiles>
</yandex>

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    如果有余量,请在执行查询之前增加最大内存:

    SET max_memory_usage = 8000000000;
    

    在我的情况下,将其设置为 8 GB 解决了这个问题。

    【讨论】:

      【解决方案2】:

      试试这个:

      SELECT L.UserID, L.Title
      FROM tutorial.hits_v1 AS L
      INNER JOIN (
        SELECT UserID
        FROM tutorial.hits_v2
        /* WHERE .. */
        LIMIT 10) AS R ON L.UserID = R.UserID
      ORDER BY UserID
      

      SELECT UserID, Title
      FROM tutorial.hits_v1
      WHERE UserID IN (SELECT UserID FROM tutorial.hits_v2 /* WHERE .. */ LIMIT 10)
      ORDER BY UserID
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多