当前位置: 首页 > news >正文

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...,该语句仅增量的处理数据更新的分区,能够避免大量的重复计算从而提高效率。

相关文章:

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

统计信息 统计信息简介​ Doris 查询优化器使用统计信息来确定查询最有效的执行计划。Doris 维护的统计信息包括表级别的统计信息和列级别的统计信息。 表统计信息&#xff1a; 信息描述row_count表的行数data_size表的⼤⼩&#xff08;单位 byte&#xff09;update_rows收…...

有效需求的特征

如何区分优秀的软件需求和软件需求规格说明书&#xff08;SRS&#xff09;与可能导致问题的需求和规格说明书&#xff1f;在这篇文章中&#xff0c;我们将首先讨论单个需求应该具有的几种不同特性。然后&#xff0c;我们将讨论成功的SRS整体应具有的理想特征。 1.有效需求的特…...

基于51单片机无线温度报警控制器 NRF24L01 多路温度报警系统设计

一、系统方案 1、本设计默认采用STC89C52单片机&#xff0c;如需更换单片机请联系客服。 2、接收板LCD1602液晶实时显示当前检测的2点温度值以及对应的上下限报警值。发射板由DS18B20采集温度值&#xff0c;通过无线模块NRF24L01传给接收板。 3、按键可以设置温度上下限值&…...

Spring Data JPA的@Entity注解

一、示例说明 rules\CouponTypeConverter.java Converter public class CouponTypeConverterimplements AttributeConverter<CouponType, String> {Overridepublic String convertToDatabaseColumn(CouponType couponCategory) {return couponCategory.getCode();}Overr…...

CANoe panel中,Path Dialog如何保存选择的文件路径

这里写目录标题 Path Dialog控件的设置系统变量和环境变量 Path Dialog控件的设置 过滤加载的文件类型 填写格式为&#xff1a;Hex file |.hex 其中Hex file为自定义name&#xff0c;.hex为你想识别的文件类型 系统变量和环境变量 系统变量&#xff1a;在canoe的Environmen…...

关于es中索引,倒排索引的理解

下面是我查询进行理解的东西 也就是说我们ES中的索引就相当于我们mysql中的数据库表&#xff0c;索引库就相当于我们的数据库&#xff0c;我们按照mapping规则会根据相应的字段&#xff08;index为true默认&#xff09;来创建倒排索引&#xff0c;这个倒排索引就相当于我们索引…...

k8s service (二)

K8s service (二) Endpoint Endpoint是kubernetes中的一个资源对象&#xff0c;存储在etcd中&#xff0c;用来记录一个service对应的所有pod访问地址&#xff0c;它是根据service匹配文件中selector描述产生的。 一个Service由一组Pod组成&#xff0c;这些Pod通过Endpoints…...

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

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

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第二天)Mybatis的深入学习

SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录&#xff08;第二天&#xff09;Mybatis的深入学习&#xff08;增删改查的操作&#xff09; 上一篇我们的项目搭建好了&#xff0c;也写了简答的Junit测试类进行测试&#xff0c;可以正确映射…...

学习笔记:Opencv实现限制对比度得自适应直方图均衡CLAHE

2023.8.19 为了完成深度学习的进阶&#xff0c;得学习学习传统算法拓展知识面&#xff0c;记录自己的学习心得 CLAHE百科&#xff1a; 一种限制对比度自适应直方图均衡化方法&#xff0c;采用了限制直方图分布的方法和加速的插值方法 clahe&#xff08;限制对比度自适应直方图…...

R语言处理缺失数据(1)-mice

#清空 rm(listls()) gc()###生成模拟数据### #生成100个随机数 library(magrittr) set.seed(1) asd<-rnorm(100, mean 60, sd 10) %>% round #平均60&#xff0c;标准差10 #将10个数随机替换为NA NA_positions <- sample(1:100, 10) asd[NA_positions] <- NA #转…...

SpringBoot自动配置原理

Spring Boot 的自动配置可以根据添加的jar依赖&#xff0c;自动配置 Spring Boot 应用程序。例如&#xff0c;我们想要使用Redis&#xff0c;直接在POM文件中增加spring-boot-starter-data-redis依赖&#xff0c;然后我们配置下连接信息就可以使用了。 那么Spring Boot 是如何…...

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 五)

管理应用拥有的状态概述 LocalStorage&#xff1a;页面级UI状态存储 LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility内&#xff0c;页面间共享状态。 本文仅介绍LocalStora…...

Java基础篇——反射枚举

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

每日一学——案例难点Windows配置

在Windows上配置DNS服务器有几个步骤&#xff1a; 步骤1&#xff1a;打开网络连接设置 在任务栏上右键单击网络图标&#xff0c;并选择“打开网络和Internet设置”。 在新窗口中&#xff0c;选择“更改适配器选项”。 在打开的窗口中&#xff0c;找到正在使用的网络适配器&a…...

2023.8 - java - 运算符

Java 运算符 算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符 算术运算符 算术运算符用在数学表达式中&#xff0c;它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。 表格中的实例假设整数变量A的值为10&#xff0c;变量B的值为20&#xff1a; …...

推荐三款Scrum敏捷项目管理工具/敏捷管理实践

免费版敏捷工具推荐&#xff1a; Leangoo领歌 Leangoo领歌是ScrumCN&#xff08;scrum.cn&#xff09;旗下的一款永久免费的专业敏捷开发管理工具&#xff0c;提供端到端敏捷研发管理解决方案&#xff0c;涵盖敏捷需求管理、任务协同、进展跟踪、缺陷管理、统计度量等。包括小…...

WARNING: undefined behavior - version of Delve is too old for Go version

在更新了 go 版本后&#xff0c;使用 goland 进行调试会报错 WARNING: undefined behavior - version of Delve is too old for Go version 1.20.5 (maximum supported version 1.19)这是因为 go 的版本升级后&#xff0c;相对 dlv 的版本就低了。 所以解决办法就是升级对应的…...

https非对称加密算法

非对称加密算法原理 在客户端公开公钥&#xff0c;服务端保存私钥 1.客户端第一次请求先请求443端口&#xff0c;从443端口下载公钥。 2.客户端将数据进行公钥算法进行加密&#xff0c;将秘文发送到服务端 服务端收到秘文后&#xff0c;通过私钥算法进行解密得到明文数据。…...

“深入探索JVM:Java虚拟机背后的奥秘“

标题&#xff1a;深入探索JVM&#xff1a;Java虚拟机背后的奥秘 摘要&#xff1a;本文将深入探索Java虚拟机&#xff08;JVM&#xff09;的内部工作原理和关键组成部分&#xff0c;揭示JVM背后的奥秘。通过对类加载机制、内存管理、垃圾回收、即时编译等方面的详细介绍&#x…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...