Apache Doris 入门教程33:统计信息

统计信息

统计信息简介​

Doris 查询优化器使用统计信息来确定查询最有效的执行计划。Doris 维护的统计信息包括表级别的统计信息和列级别的统计信息。

表统计信息:

信息描述
row_count表的行数
data_size表的⼤⼩(单位 byte)
update_rows收集统计信息后所更新的行数
healthy表的健康度
update_time最近更新的时间
last_analyze_time上次收集统计信息的时间

表的健康度:表示表统计信息的健康程度。当 update_rows 大于等于 row_count 时,健康度为 0;当 update_rows 小于 row_count 时,健康度为 100 * (1 - update_rows / row_count) 。

列统计信息:

信息描述
row_count列的总行数
data_size列的总⻓度(单位 byte)
avg_size_byte列的平均⻓度(单位 bytes)
ndv列 num distinct value
min列最小值
max列最⼤值
null_count列 null 个数

收集统计信息​

手动收集​

⽤户通过 ANALYZE 语句触发手动收集任务,根据提供的参数,收集指定的表或列的统计信息。

列统计信息收集语法:

ANALYZE < TABLE | DATABASE table_name | db_name > [ PARTITIONS (partition_name [, ...]) ][ (column_name [, ...]) ][ [ WITH SYNC ] [WITH INCREMENTAL] [ WITH SAMPLE PERCENT | ROWS ] [ WITH PERIOD ] ][ PROPERTIES ("key" = "value", ...) ];

其中:

  • table_name: 指定的的目标表。可以是  db_name.table_name  形式。
  • partition_name: 指定的目标分区(目前只针对Hive外表)。必须是  table_name  中存在的分区,多个列名称用逗号分隔。分区名样例:event_date=20230706, nation=CN/city=Beijing
  • column_name: 指定的目标列。必须是  table_name  中存在的列,多个列名称用逗号分隔。
  • sync:同步收集统计信息。收集完后返回。若不指定则异步执行并返回任务 ID。
  • period:周期性收集统计信息。单位为秒,指定后会定期收集相应的统计信息。
  • sample percent | rows:抽样收集统计信息。可以指定抽样比例或者抽样行数。

全量收集​

收集列统计信息​

列统计信息主要包括列的行数、最大值、最小值、NULL 值个数等,通过 ANALYZE TABLE 语句进行收集。

示例:

  • 收集 example_tbl 表所有列的统计信息,使用以下语法:
mysql> ANALYZE TABLE stats_test.example_tbl;
+--------+
| job_id |
+--------+
| 51730  |
+--------+

  • 收集 example_tbl 表 cityagesex 列的统计信息,使用以下语法:
mysql> ANALYZE TABLE stats_test.example_tbl(city, age, sex);
+--------+
| job_id |
+--------+
| 51808  |
+--------+

增量收集​

对于分区表,在进行全量收集后,如果新增分区或者删除分区,可以使用增量收集来提高统计信息收集的速度。

使用增量收集时系统会自动检查新增的分区或者已删除的分区。有以下三种情形:

  • 对于新增分区,收集新分区的统计信息后和历史统计信息合并/汇总。
  • 对于已删除的分区,重新刷新历史统计信息。
  • 无新增/删除的分区,不做任何操作。

增量收集适合类似时间列这样的单调不减列作为分区的表,或者历史分区数据不会更新的表。

注意:

  • 直方图统计信息不支持增量收集。
  • 使用增量收集时,必须保证表存量的统计信息可用(即其他历史分区数据不发生变化),否则会导致统计信息有误差。

示例:

  • 增量收集 example_tbl 表的统计信息,使用以下语法:
-- 使用with incremental
mysql> ANALYZE TABLE stats_test.example_tbl WITH INCREMENTAL;
+--------+
| job_id |
+--------+
| 51910  |
+--------+-- 配置incremental
mysql> ANALYZE TABLE stats_test.example_tbl PROPERTIES("incremental" = "true");
+--------+
| job_id |
+--------+
| 51910  |
+--------+

抽样收集​

在表数据量较大时,系统收集统计信息可能会比较耗时,可以使用抽样收集来提高统计信息收集的速度。根据实际情况指定抽样的比例或者抽样的行数。

示例:

  • 抽样收集 example_tbl 表的统计信息,使用以下语法:
-- 使用with sample rows抽样行数
mysql> ANALYZE TABLE stats_test.example_tbl WITH SAMPLE ROWS 5;
+--------+
| job_id |
+--------+
| 52120  |
+--------+-- 使用with sample percent抽样比例
mysql> ANALYZE TABLE stats_test.example_tbl WITH SAMPLE PERCENT 50;
+--------+
| job_id |
+--------+
| 52201  |
+--------+-- 配置sample.row抽样行数
mysql> ANALYZE TABLE stats_test.example_tbl PROPERTIES("sample.rows" = "5");
+--------+
| job_id |
+--------+
| 52279  |
+--------+-- 配置sample.percent抽样比例
mysql> ANALYZE TABLE stats_test.example_tbl PROPERTIES("sample.percent" = "50");
+--------+
| job_id |
+--------+
| 52282  |
+--------+

同步收集​

一般执行 ANALYZE 语句后系统会启动异步任务去收集统计信息并立刻返回统计任务 ID。如果想要等待统计信息收集结束后返会,可以使用同步收集方式。

示例:

  • 抽样收集 example_tbl 表的统计信息,使用以下语法:
-- 使用with sync
mysql> ANALYZE TABLE stats_test.example_tbl WITH SYNC;-- 配置sync
mysql> ANALYZE TABLE stats_test.example_tbl PROPERTIES("sync" = "true");

自动收集​

自动收集是指用户在执行 ANALYZE 语句时,指定 PERIOD 或者 AUTO 关键字或者进行相关配置时,系统后续将自动生成任务,进行统计信息的收集。

周期性收集​

周期性收集是指在一定时间间隔内,重新收集表相应的统计信息。

示例:

  • 周期性(每隔一天)收集 example_tbl 表的统计信息,使用以下语法:
-- 使用with period
mysql> ANALYZE TABLE stats_test.example_tbl WITH PERIOD 86400;
+--------+
| job_id |
+--------+
| 52409  |
+--------+-- 配置period.seconds
mysql> ANALYZE TABLE stats_test.example_tbl PROPERTIES("period.seconds" = "86400");
+--------+
| job_id |
+--------+
| 52535  |
+--------+

管理任务​

查看统计任务​

通过 SHOW ANALYZE 来查看统计信息收集任务的信息。

语法如下:

SHOW ANALYZE < table_name | job_id >[ WHERE [ STATE = [ "PENDING" | "RUNNING" | "FINISHED" | "FAILED" ] ] ];

其中:

  • table_name:表名,指定后可查看该表对应的统计任务信息。可以是  db_name.table_name  形式。不指定时返回所有统计任务信息。
  • job_id:统计信息任务 ID,执行 ANALYZE 非同步收集统计信息时所返回的值。不指定时返回所有统计任务信息。

目前 SHOW ANALYZE 会输出 11 列,具体如下:

列名说明
job_id统计任务 ID
catalog_namecatalog 名称
db_name数据库名称
tbl_name表名称
col_name列名称
job_type任务类型
analysis_type统计类型
message任务信息
last_exec_time_in_ms上次执行时间
state任务状态
schedule_type调度方式

在系统中,统计信息任务包含多个子任务,每个子任务单独收集一列的统计信息。

示例:

  • 查看 ID 为 20038 的统计任务信息,使用以下语法:
mysql> SHOW ANALYZE 20038 
+--------+--------------+----------------------+----------+-----------------------+----------+---------------+---------+----------------------+----------+---------------+
| job_id | catalog_name | db_name              | tbl_name | col_name              | job_type | analysis_type | message | last_exec_time_in_ms | state    | schedule_type |
+--------+--------------+----------------------+----------+-----------------------+----------+---------------+---------+----------------------+----------+---------------+
| 20038  | internal     | default_cluster:test | t3       | [col4,col2,col3,col1] | MANUAL   | FUNDAMENTALS  |         | 2023-06-01 17:22:15  | FINISHED | ONCE          |
+--------+--------------+----------------------+----------+-----------------------+----------+---------------+---------+----------------------+----------+---------------+

可通过SHOW ANALYZE TASK STATUS [job_id],查看具体每个列统计信息的收集完成情况。

mysql> show analyze task status  20038 ;
+---------+----------+---------+----------------------+----------+
| task_id | col_name | message | last_exec_time_in_ms | state    |
+---------+----------+---------+----------------------+----------+
| 20039   | col4     |         | 2023-06-01 17:22:15  | FINISHED |
| 20040   | col2     |         | 2023-06-01 17:22:15  | FINISHED |
| 20041   | col3     |         | 2023-06-01 17:22:15  | FINISHED |
| 20042   | col1     |         | 2023-06-01 17:22:15  | FINISHED |
+---------+----------+---------+----------------------+----------+

  • 查看 example_tbl 表的的统计任务信息,使用以下语法:
mysql> SHOW ANALYZE stats_test.example_tbl;
+--------+--------------+----------------------------+-------------+-----------------+----------+---------------+---------+----------------------+----------+---------------+
| job_id | catalog_name | db_name                    | tbl_name    | col_name        | job_type | analysis_type | message | last_exec_time_in_ms | state    | schedule_type |
+--------+--------------+----------------------------+-------------+-----------------+----------+---------------+---------+----------------------+----------+---------------+
| 68603  | internal     | default_cluster:stats_test | example_tbl |                 | MANUAL   | INDEX         |         | 2023-05-05 17:53:27  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | last_visit_date | MANUAL   | COLUMN        |         | 2023-05-05 17:53:26  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | age             | MANUAL   | COLUMN        |         | 2023-05-05 17:53:27  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | city            | MANUAL   | COLUMN        |         | 2023-05-05 17:53:25  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | cost            | MANUAL   | COLUMN        |         | 2023-05-05 17:53:27  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | min_dwell_time  | MANUAL   | COLUMN        |         | 2023-05-05 17:53:24  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | date            | MANUAL   | COLUMN        |         | 2023-05-05 17:53:27  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | user_id         | MANUAL   | COLUMN        |         | 2023-05-05 17:53:25  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | max_dwell_time  | MANUAL   | COLUMN        |         | 2023-05-05 17:53:26  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | sex             | MANUAL   | COLUMN        |         | 2023-05-05 17:53:26  | FINISHED | ONCE          |

  • 查看所有的统计任务信息,并按照上次完成时间降序,返回前 3 条信息,使用以下语法:
mysql> SHOW ANALYZE WHERE state = "FINISHED" ORDER BY last_exec_time_in_ms DESC LIMIT 3;
+--------+--------------+----------------------------+-------------+-----------------+----------+---------------+---------+----------------------+----------+---------------+
| job_id | catalog_name | db_name                    | tbl_name    | col_name        | job_type | analysis_type | message | last_exec_time_in_ms | state    | schedule_type |
+--------+--------------+----------------------------+-------------+-----------------+----------+---------------+---------+----------------------+----------+---------------+
| 68603  | internal     | default_cluster:stats_test | example_tbl | age             | MANUAL   | COLUMN        |         | 2023-05-05 17:53:27  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | sex             | MANUAL   | COLUMN        |         | 2023-05-05 17:53:26  | FINISHED | ONCE          |
| 68603  | internal     | default_cluster:stats_test | example_tbl | last_visit_date | MANUAL   | COLUMN        |         | 2023-05-05 17:53:26  | FINISHED | ONCE          |
+--------+--------------+----------------------------+-------------+-----------------+----------+---------------+---------+----------------------+----------+---------------+

终止统计任务​

通过 KILL ANALYZE 来终止正在运行的统计任务。

语法如下:

KILL ANALYZE job_id;

其中:

  • job_id:统计信息任务 ID。执行 ANALYZE 非同步收集统计信息时所返回的值,也可以通过 SHOW ANALYZE 语句获取。

示例:

  • 终止 ID 为 52357 的统计任务。
mysql> KILL ANALYZE 52357;

查看统计信息​

表统计信息​

暂不可用。

通过 SHOW TABLE STATS 来查看表的总行数以及统计信息健康度等信息。

语法如下:

SHOW TABLE STATS table_name [ PARTITION (partition_name) ];

其中:

  • table_name: 导入数据的目标表。可以是  db_name.table_name  形式。
  • partition_name: 指定的目标分区。必须是  table_name  中存在的分区,只能指定一个分区。

目前 SHOW TABLE STATS 会输出 6 列,具体如下:

列名说明
row_count行数
update_rows更新的行数
data_size数据大小。单位 byte
healthy健康度
update_time更新时间
last_analyze_time上次收集统计信息的时间

示例:

  • 查看 example_tbl 表的统计信息,使用以下语法:
mysql> SHOW TABLE STATS stats_test.example_tbl;
+-----------+-------------+---------+-----------+---------------------+---------------------+
| row_count | update_rows | healthy | data_size | update_time         | last_analyze_time   |
+-----------+-------------+---------+-----------+---------------------+---------------------+
| 8         | 0           | 100     | 6999      | 2023-04-08 15:40:47 | 2023-04-08 17:43:28 |
+-----------+-------------+---------+-----------+---------------------+---------------------+

  • 查看 example_tbl 表 p_201701 分区的统计信息,使用以下语法:
mysql> SHOW TABLE STATS stats_test.example_tbl PARTITION (p_201701);
+-----------+-------------+---------+-----------+---------------------+---------------------+
| row_count | update_rows | healthy | data_size | update_time         | last_analyze_time   |
+-----------+-------------+---------+-----------+---------------------+---------------------+
| 4         | 0           | 100     | 2805      | 2023-04-08 11:48:02 | 2023-04-08 17:43:27 |
+-----------+-------------+---------+-----------+---------------------+---------------------+

查看列统计信息​

通过 SHOW COLUMN STATS 来查看列的不同值数以及 NULL 数量等信息。

语法如下:

SHOW COLUMN [cached] STATS table_name [ (column_name [, ...]) ] [ PARTITION (partition_name) ];

其中:

  • cached: 展示当前FE内存缓存中的统计信息。
  • table_name: 收集统计信息的目标表。可以是  db_name.table_name  形式。
  • column_name: 指定的目标列,必须是  table_name  中存在的列,多个列名称用逗号分隔。
  • partition_name: 指定的目标分区,必须是  table_name  中存在的分区,只能指定一个分区。

目前 SHOW COLUMN STATS 会输出 10 列,具体如下:

列名说明
column_name列名称
count列的总行数
ndv不同值的个数
num_null空值的个数
data_size列的总⻓度(单位 bytes)
avg_size_byte列的平均⻓度(单位 bytes)
min列最小值
max列最⼤值

示例:

  • 查看 example_tbl 表所有列的统计信息,使用以下语法:
mysql> SHOW COLUMN STATS stats_test.example_tbl;
+-----------------+-------+------+----------+-------------------+-------------------+-----------------------+-----------------------+
| column_name     | count | ndv  | num_null | data_size         | avg_size_byte     | min                   | max                   |
+-----------------+-------+------+----------+-------------------+-------------------+-----------------------+-----------------------+
| date            | 6.0   | 3.0  | 0.0      | 28.0              | 4.0               | '2017-10-01'          | '2017-10-03'          |
| cost            | 6.0   | 6.0  | 0.0      | 56.0              | 8.0               | 2                     | 200                   |
| min_dwell_time  | 6.0   | 6.0  | 0.0      | 28.0              | 4.0               | 2                     | 22                    |
| city            | 6.0   | 4.0  | 0.0      | 54.0              | 7.0               | 'Beijing'             | 'Shenzhen'            |
| user_id         | 6.0   | 5.0  | 0.0      | 112.0             | 16.0              | 10000                 | 10004                 |
| sex             | 6.0   | 2.0  | 0.0      | 7.0               | 1.0               | 0                     | 1                     |
| max_dwell_time  | 6.0   | 6.0  | 0.0      | 28.0              | 4.0               | 3                     | 22                    |
| last_visit_date | 6.0   | 6.0  | 0.0      | 112.0             | 16.0              | '2017-10-01 06:00:00' | '2017-10-03 10:20:22' |
| age             | 6.0   | 4.0  | 0.0      | 14.0              | 2.0               | 20                    | 35                    |
+-----------------+-------+------+----------+-------------------+-------------------+-----------------------+-----------------------+

  • 查看 example_tbl 表 p_201701 分区的统计信息,使用以下语法:
mysql> SHOW COLUMN STATS stats_test.example_tbl PARTITION (p_201701);
+-----------------+-------+------+----------+--------------------+-------------------+-----------------------+-----------------------+
| column_name     | count | ndv  | num_null | data_size          | avg_size_byte     | min                   | max                   |
+-----------------+-------+------+----------+--------------------+-------------------+-----------------------+-----------------------+
| date            | 3.0   | 1.0  | 0.0      | 16.0               | 4.0               | '2017-10-01'          | '2017-10-01'          |
| cost            | 3.0   | 3.0  | 0.0      | 32.0               | 8.0               | 2                     | 100                   |
| min_dwell_time  | 3.0   | 3.0  | 0.0      | 16.0               | 4.0               | 2                     | 22                    |
| city            | 3.0   | 2.0  | 0.0      | 29.0               | 7.0               | 'Beijing'             | 'Shenzhen'            |
| user_id         | 3.0   | 3.0  | 0.0      | 64.0               | 16.0              | 10000                 | 10004                 |
| sex             | 3.0   | 2.0  | 0.0      | 4.0                | 1.0               | 0                     | 1                     |
| max_dwell_time  | 3.0   | 3.0  | 0.0      | 16.0               | 4.0               | 3                     | 22                    |
| last_visit_date | 3.0   | 3.0  | 0.0      | 64.0               | 16.0              | '2017-10-01 06:00:00' | '2017-10-01 17:05:45' |
| age             | 3.0   | 3.0  | 0.0      | 8.0                | 2.0               | 20                    | 35                    |
+-----------------+-------+------+----------+--------------------+-------------------+-----------------------+-----------------------+

  • 查看 example_tbl 表 cityagesex 列的统计信息,使用以下语法:
mysql> SHOW COLUMN STATS stats_test.example_tbl(city, age, sex);
+-------------+-------+------+----------+-------------------+-------------------+-----------+------------+
| column_name | count | ndv  | num_null | data_size         | avg_size_byte     | min       | max        |
+-------------+-------+------+----------+-------------------+-------------------+-----------+------------+
| city        | 6.0   | 4.0  | 0.0      | 54.0              | 7.0               | 'Beijing' | 'Shenzhen' |
| sex         | 6.0   | 2.0  | 0.0      | 7.0               | 1.0               | 0         | 1          |
| age         | 6.0   | 4.0  | 0.0      | 14.0              | 2.0               | 20        | 35         |
+-------------+-------+------+----------+-------------------+-------------------+-----------+------------+

  • 查看 example_tbl 表 p_201701 分区 cityagesex 列的统计信息,使用以下语法:
mysql> SHOW COLUMN STATS stats_test.example_tbl(city, age, sex) PARTITION (p_201701);
+-------------+-------+------+----------+--------------------+-------------------+-----------+------------+
| column_name | count | ndv  | num_null | data_size          | avg_size_byte     | min       | max        |
+-------------+-------+------+----------+--------------------+-------------------+-----------+------------+
| city        | 3.0   | 2.0  | 0.0      | 29.0               | 7.0               | 'Beijing' | 'Shenzhen' |
| sex         | 3.0   | 2.0  | 0.0      | 4.0                | 1.0               | 0         | 1          |
| age         | 3.0   | 3.0  | 0.0      | 8.0                | 2.0               | 20        | 35         |
+-------------+-------+------+----------+--------------------+-------------------+-----------+------------+

修改统计信息​

⽤户可以通过 ALTER 语句调整统计信息。

ALTER TABLE table_name MODIFY COLUMN column_name SET STATS ('stat_name' = 'stat_value', ...) [ PARTITION (partition_name) ];

其中:

  • table_name: 删除统计信息的目标表。可以是 db_name.table_name 形式。
  • column_name: 指定的目标列,必须是 table_name 中存在的列,每次只能修改一列的统计信息。
  • stat_name 和 stat_value: 相应的统计信息名称和统计信息信息的值,多个统计信息逗号分隔。可以修改的统计信息包括 row_countndvnum_nullsmin_valuemax_valuedata_size
  • partition_name: 指定的目标分区。必须是 table_name 中存在的分区,多个分区使用逗号分割。

示例:

  • 修改 example_tbl 表 age 列 row_count 统计信息,使用以下语法:
mysql> ALTER TABLE stats_test.example_tbl MODIFY COLUMN age SET STATS ('row_count'='6001215');
mysql> SHOW COLUMN STATS stats_test.example_tbl(age);
+-------------+-----------+------+----------+-----------+---------------+------+------+
| column_name | count     | ndv  | num_null | data_size | avg_size_byte | min  | max  |
+-------------+-----------+------+----------+-----------+---------------+------+------+
| age         | 6001215.0 | 0.0  | 0.0      | 0.0       | 0.0           | N/A  | N/A  |
+-------------+-----------+------+----------+-----------+---------------+------+------+

  • 修改 example_tbl 表 age 列 row_countnum_nullsdata_size 统计信息,使用以下语法:
mysql> ALTER TABLE stats_test.example_tbl MODIFY COLUMN age SET STATS ('row_count'='6001215', 'num_nulls'='2023', 'data_size'='600121522');
mysql> SHOW COLUMN STATS stats_test.example_tbl(age);
+-------------+-----------+------+----------+-----------+---------------+------+------+
| column_name | count     | ndv  | num_null | data_size | avg_size_byte | min  | max  |
+-------------+-----------+------+----------+-----------+---------------+------+------+
| age         | 6001215.0 | 0.0  | 2023.0   | 600121522 | 0.0           | N/A  | N/A  |
+-------------+-----------+------+----------+-----------+---------------+------+------+

删除统计信息​

⽤户通过 DROP 语句删除统计信息,根据提供的参数,删除指定的表、分区或列的统计信息。删除时会同时删除列统计信息和列直方图信息。

语法:

DROP [ EXPIRED ] STATS [ table_name [ (column_name [, ...]) ] ];

其中:

  • table_name: 要删除统计信息的目标表。可以是  db_name.table_name  形式。
  • column_name: 指定的目标列。必须是  table_name  中存在的列,多个列名称用逗号分隔。
  • expired:统计信息清理。不能指定表,会删除系统中无效的统计信息以及过期的统计任务信息。

示例:

  • 清理统计信息,使用以下语法:
mysql> DROP EXPIRED STATS;

  • 删除 example_tbl 表的统计信息,使用以下语法:
mysql> DROP STATS stats_test.example_tbl;

  • 删除 example_tbl 表 cityagesex 列的统计信息,使用以下语法:
mysql> DROP STATS stats_test.example_tbl(city, age, sex);

删除Analyze Job​

用于根据job id删除自动/周期Analyze作业

DROP ANALYZE JOB [JOB_ID]

配置项​

confcommentdefault value
statistics_sql_parallel_exec_instance_num控制每个统计信息收集SQL在BE侧的并发实例数/pipeline task num1
statistics_sql_mem_limit_in_bytes控制每个统计信息SQL可占用的BE内存2L 1024 1024 * 1024 (2GiB)
statistics_simultaneously_running_task_num通过ANALYZE TABLE[DATABASE]提交异步作业后,可同时analyze的列的数量,所有异步任务共同受到该参数约束5
analyze_task_timeout_in_minutesAnalyzeTask执行超时时间12 hours
stats_cache_size统计信息缓存的实际内存占用大小高度依赖于数据的特性,因为在不同的数据集和场景中,最大/最小值的平均大小和直方图的桶数量会有很大的差异。此外,JVM版本等因素也会对其产生影响。下面给出统计信息缓存在包含100000个项目时所占用的内存大小。每个项目的最大/最小值的平均长度为32,列名的平均长度为16,统计信息缓存总共占用了61.2777404785MiB的内存。强烈不建议分析具有非常大字符串值的列,因为这可能导致FE内存溢出。100000

常见问题​

ANALYZE WITH SYNC 执行失败:Failed to analyze following columns...​

SQL执行时间受query_timeout会话变量控制,该变量默认值为300秒,ANALYZE DATABASE/TABLE等语句通常耗时较大,很容易超过该时间限制而被cancel,建议根据ANALYZE对象的数据量适当增大query_timeout的值。

ANALYZE提交报错:Stats table not available...​

执行ANALYZE时统计数据会被写入到内部表__internal_schema.column_statistics中,FE会在执行ANALYZE前检查该表tablet状态,如果存在不可用的tablet则拒绝执行任务。出现该报错请检查BE集群状态。

大表ANALYZE失败​

由于ANALYZE能够使用的资源受到比较严格的限制,对一些大表的ANALYZE操作有可能超时或者超出BE内存限制。这些情况下,建议使用 ANALYZE ... WITH SAMPLE...。此外对于动态分区表的场景,强烈建议使用ANALYZE ... WITH INCREMENTAL...,该语句仅增量的处理数据更新的分区,能够避免大量的重复计算从而提高效率。

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

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

相关文章

并查集 size 的优化(并查集 size 的优化)

目录 并查集 size 的优化 Java 实例代码 UnionFind3.java 文件代码&#xff1a; 并查集 size 的优化 按照上一小节的思路&#xff0c;我们把如下图所示的并查集&#xff0c;进行 union(4,9) 操作。 合并操作后的结构为&#xff1a; 可以发现&#xff0c;这个结构的树的层相对…

定向流量卡怎么没人买了呢?你知道定向流量卡有多坑吗?

在购买流量卡的时候大家可能都注意了&#xff0c;市面上的流量卡有三种&#xff0c;定向流量卡&#xff0c;通用流量卡&#xff0c;通用流量定向流量卡&#xff0c;据小编了解&#xff0c;现在越来越多的人比较喜欢购买后两者&#xff0c;而关注定向流量卡越来越少了。 其实用过…

桌面软件开发框架 Electron、Qt、WPF 和 WinForms 怎么选?

一、Electron Electron 是一个基于 Web 技术的跨平台桌面应用程序开发框架。它使用 HTML、CSS 和 JavaScript 来构建应用程序界面,并借助 Chromium 渲染引擎提供强大的页面渲染能力。Electron 的主要特点包括: 跨平台:Electron 可以在 Windows、macOS 和 Linux 等多个主流操…

【makefile】自动化变量的简述及实例

文章目录 10. env20. 简述百度百科常用的自动化变量 30. 实例90. 附件下载 10. env ubuntu1804 GNU Make 4.120. 简述 百度百科 https://baike.baidu.com/item/Makefile/4619787?frge_ala makefile 文件的格式&#xff1a; 目标&#xff1a;依赖命令软件编译的流程概述&am…

三菱PLC与变频器之间无线通讯

在工业现场由PLC远程控制变频器的应用非常常见&#xff0c;如果挖沟布线不便或者变频器在移动设备上&#xff0c;那么采用无线通讯就是最佳方案。 这里我们选用最常用的三菱 FX2N PLC和三菱变频器为例&#xff0c;并结合日系plc专用无线通讯终端DTD435M来说明PLC与变频器之间的…

无锡市惠丰电子有限公司采购ZJ-5型叠层压电D33测试仪及相关配套夹具

无锡市惠丰电子有限公司采购ZJ-5型叠层压电D33测试仪及相关配套夹具 无锡市惠丰电子有限公司成立于1998年&#xff0c;是一家专门从事电子陶瓷产品研发&#xff0c;生产&#xff0c;销售&#xff0c;服务于一体的股份制公司&#xff0c;座落于素有鱼米之乡的太湖之滨城市——无…

python项目在win10系统中安装docker部署到linux系统中

前提 win10中安装docker,参考 https://docker.easydoc.net/doc/81170005/cCewZWoN/lTKfePfP 1、python项目 test2.py # 载入包 import uvicorn # from settings import * from fastapi import FastAPI from fastapi.responses import JSONResponseapp = FastAPI() @app.ap…

二、9.硬盘驱动程序

文件系统是运行在操作系统中的软件模块&#xff0c;是操作系统提供的一套管理磁盘文件读写的方法和数据组织、存储形式&#xff0c;因此&#xff0c;文件系统&#xff1d;数据结构&#xff0b;算法&#xff0c;哈哈&#xff0c;所以它是程序。它的管理对象是文件&#xff0c;管…

探索高效的HTTP异步接口测试方法:从轮询等待到自动化方案

本文将深入探讨HTTP异步接口测试的多个方面&#xff0c;包括轮询等待、性能测试以及自动化方案。通过详细的解释和实际案例&#xff0c;帮助您了解如何有效地测试异步接口&#xff0c;确保系统的稳定性和性能。 在现代软件开发中&#xff0c;HTTP异步接口扮演着至关重要的角色&…

error C2220: warning treated as error - no ‘object‘ file generated

你遇到的错误消息error C2220: warning treated as error - no object file generated是使用Microsoft的Visual C编译器编译C代码时常见的。这个问题是因为你的代码中的一个警告被当作一个错误处理&#xff0c;由于项目设置或编译器标志&#xff0c;结果没有产生输出的对象文件…

19 真实的战场:如何在大型项目中涉及GUI自动化测试策略

大型全球化电商网站 GUI 测试的策略设计 组件 -> 模块 -> 端到端 1&#xff09; 首先&#xff0c;要从前端组件的级别来保证质量&#xff0c;也就是需要对那些自定义开发的组件进行完整全面的测试。通常前端组件会基于 Jest 做比较严格的单元测试。 Jest 是由 Facebook 发…

深入浅出Pytorch函数——torch.nn.init.dirac_

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…

软件需求-架构师之路(五)

软件需求 软件需求&#xff1a; 指用户 对系统在功能、行为、性能、设计约束等方面的期望。 分为 需求开发 和 需求管理 两大过程。 需求开发&#xff1a; 需求获取需求分析需求定义&#xff08;需求规格说明书&#xff09;需求验证&#xff1a;拉客户一起评审&#xff0c…

Lua 数据文件和序列化

一、数据文件 如果在 Lua 程序中可以需要用文件保存数据&#xff0c;并且后续使用 Lua 进行读取使用&#xff0c;则可以考虑将数据按照一定的格式保存&#xff0c;然后用 dofile 函数进行加载&#xff0c;这样可以让数据很方便的进行读取。 我们可以将数据按照 EntryName{} 或…

使用PHP生成MySQL数据字典

一个项目完成之后&#xff0c;按照需求&#xff0c;我需要给这个项目写设计文档&#xff0c;数据库字典。 设计文档到时好说&#xff0c;但是数据库字典可真的是有点吓到我了。 项目开始的比较急&#xff0c;最开始建数据库的时候没有用excel写数据库字典。 这几十张表的数据…

对象存储服务-MinIO基本集成

是什么 MinIO 是一个高性能的分布式对象存储服务&#xff0c;适合存储非结构化数据&#xff0c;如图片&#xff0c;音频&#xff0c;视频&#xff0c;日志等。对象文件最大可以达到5TB。 安装启动 mkdir -p /usr/local/minio cd /usr/local/minio# 下载安装包 wget https:/…

Java基础篇——反射枚举

反射&枚举 课程目标 1. 【理解】类加载器 2. 【理解】什么是反射 3. 【掌握】获取Class对象的三种方式 4. 【掌握】反射获取构造方法并创建对象 5. 【掌握】反射获取成员变量并使用 6. 【掌握】反射获取成员方法并使用 7. 【掌握】反射综合案例 8. 【理解】枚举B友:http…

Flutter命令。

这里列表一些Flutter命令。 注&#xff1a;从Dart 3.0开始&#xff0c;不支持无声音空安全。只能建议你尝试让你的代码更新到空安全&#xff0c;或者是将dart降级到3.0以前。若是使用Dart 3.0之后&#xff0c;则下面命令中的 "--no-sound-null-safety" 都要去掉。 …

Linux---用户权限管理

权力下放 sudo工具&#xff0c;可以将root的权限下放到普通用户&#xff0c;它允许系统管理员分配给普通用户一些合理的“权力”&#xff0c;让他们执行一些只有超级用户或其他特许用户才能完成的任务&#xff08;主要体现为命令&#xff09;&#xff0c;比如&#xff1a;运行…

什么是RNN(循环神经网络)

什么是RNN(循环神经网络) 循环神经网络(Recurrent Neural Network)&#xff0c;在识别图像时&#xff0c;输入的每张图片都是孤立的&#xff0c;认出这张图片是苹果&#xff0c;并不会对认出下一张图片是梨造成影响。 但对语言来说&#xff0c;顺序是十分重要的&#xff0c;“…