SQL语句整理五-StarRocks

发布于:2025-02-11 ⋅ 阅读:(54) ⋅ 点赞:(0)

查看版本号:

select current_version();
current_version()|
-----------------+
3.1.13-d9d3ed7   |

current_version()|
-----------------+
3.3.5-6d81f75    |

自定义命令行提示 prompt:

  用 Mysql 客户端连接 StarRocks 后命令提示为 mysql> ,如果你想自定义命令行提示的话可以使用 mysql -P9030 -h127.0.0.1 -uroot --prompt="StarRocks> "

参考:空白葛mysql自定义命令行提示prompt

SPLIT:

select SPLIT_PART(cell_array, ',', 1) from t1;

insert 和 update 结合 select:

  insert:

insert into `heheda_tmp`(message_id,project,file_date,create_time) select message_id,project,file_date,create_time from heheda limit 10;

  update:参考:基于StarRocks的MySQL语句排雷秘籍

-- MySQL语法
UPDATE table1 t1
JOIN table2 t2 on t1.a1 = t2.b1 
SET t1.a2 = t2.b2;

-- StarRocks语法,注意的是(1)只能用join,(2)要update的字段不能带表的别名,(3)仅StarRocks3.0以后版本可用
UPDATE table1
SET a2 = t2.b2
FROM table2 t2
WHERE table1.a1 = t2.b1;

-- 样例
update student set age=t2.age from (select student_id,sum(age) from teacher where student_id='sfd' and data_time='2024-11-04 12:00' group by student_id) t2 where t2.student_id=student.student_id;

报错:1064 - StarRocks planner use long time 3000 ms in memo phase:

  报错信息为:1064 - StarRocks planner use long time 3000 ms in memo phase, This probably because 1. FE Full GC, 2. Hive external table fetch metadata took a long time, 3. The SQL is very complex. You could 1. adjust FE JVM config, 2. try query again, 3. enlarge new_planner_optimize_timeout session variable

-- 解决:https://blog.51cto.com/wang/6113290
show variables like '%imeou%'; -- 默认参数:3000ms
set new_planner_optimize_timeout=8000;

字段增删改:

-- 增加字段
ALTER table student_test add COLUMN `name` double NULL COMMENT '姓名';

-- 删除字段
ALTER table student_test drop COLUMN `name`;

-- 修改字段
ALTER table student_test RENAME COLUMN `name` TO `student_name`;
-- 注:修改字段 sql 在 3.3.5 版本上可以成功,而在 3.1.13 上失败。可参考下面两张图片。
-- 2024-12 3.1版本目前已经到了支持末期,3.2版本不是长期支持版,3.3版本会在未来至少半年内会作为 StarRocks 的主流打磨版本,加入了非常多的易用性特性,目前小版本已经迭代了8个,稳定性已经过关,是 StarRocks 当前主流推荐的版本。

在这里插入图片描述

在这里插入图片描述

查看分区信息:

报错信息引发的:Error: The row is out of partition ranges. Please add a new partition.. Row:

参考:StarRocks使用过程中遇到的一些问题记录

show partitions from ods_xxx

PartitionId|PartitionName|VisibleVersion|VisibleVersionTime |VisibleVersionHash|State |PartitionKey|List                  |DistributionKey|Buckets|ReplicationNum|StorageMedium|CooldownTime       |LastConsistencyCheckTime|DataSize|IsInMemory|RowCount|
-----------+-------------+--------------+-------------------+------------------+------+------------+----------------------+---------------+-------+--------------+-------------+-------------------+------------------------+--------+----------+--------+
13338827   |p202412151730|2             |2024-12-26 18:30:02|0                 |NORMAL|data_time   |(('2024-12-15 17:30'))|project_id     |6      |1             |HDD          |9999-12-31 23:59:59|                        |111.5KB |false     |744     |
13342923   |p202412240730|2             |2024-12-26 18:30:02|0                 |NORMAL|data_time   |(('2024-12-24 07:30'))|project_id     |6      |1             |HDD          |9999-12-31 23:59:59|                        |44.6KB  |false     |158     |
13336776   |p202412130800|2             |2024-12-26 18:30:02|0                 |NORMAL|data_time   |(('2024-12-13 08:00'))|project_id     |6      |1             |HDD          |9999-12-31 23:59:59|                        |44.3KB  |false     |158     |
13340879   |p202412192030|2             |2024-12-26 18:30:02|0                 |NORMAL|data_time   |(('2024-12-19 20:30'))|project_id     |6      |1             |HDD          |9999-12-31 23:59:59|                        |44.2KB  |false     |158     |
13334734   |p202412100700|2             |2024-12-26 18:30:02|0                 |NORMAL|data_time   |(('2024-12-10 07:00'))|project_id     |6      |1             |HDD          |9999-12-31 23:59:59|                        |44.2KB  |false     |158     |
13344973   |p202412252300|2             |2024-12-26 18:30:02|0                 |NORMAL|data_time   |(('2024-12-25 23:00'))|project_id     |6      |1             |HDD          |9999-12-31 23:59:59|                        |44.1KB  |false     |158     |
13340866   |p202412201930|2             |2024-12-26 18:30:02|0                 |NORMAL|data_time   |(('2024-12-20 19:30'))|project_id     |6      |1             |HDD          |9999-12-31 23:59:59|                        |44.5KB  |false     |158     |
13334721   |p202412091200|2             |2024-12-26 18:30:02|0                 |NORMAL|data_time   |(('2024-12-09 12:00'))|project_id     |6      |1             |HDD          |9999-12-31 23:59:59|                        |45.3KB  |false     |158     |
13344960   |p202412260530|2             |2024-12-26 18:30:02|0                 |NORMAL|data_time   |(('2024-12-26 05:30'))|project_id     |6      |1             |HDD          |9999-12-31 23:59:59|                        |44.7KB  |false     |158     |
13334747   |p202412090700|2             |2024-12-26 18:30:02|0                 |NORMAL|data_time   |(('2024-12-09 07:00'))|project_id     |6      |1             |HDD          |9999-12-31 23:59:59|                        |4.2KB   |false     |2       |
。。。。。。

lag 窗口函数:

来自:易点天下基于 StarRocks 全面构建实时离线一体的湖仓方案

select
    uid,
    event_time,
    event_name,
    lag(event_name, 1, 'null') over
    (
        partition by uid
        order by event_time
    ) as "previous_event"
from
    event
order by
    uid, event_time;

注:默认填充值目前不能为字段,即 lag(event_name, 1, event_name) over 会报错

SQL 错误 [1064] [42000]: Getting analyzing error at line 8, column 21. Detail message: The default parameter (parameter 3) of LAG must be a constant: lag(`a`.`event_name`, 1, `a`.`event_name`).

判断字符串包含某个字符串:

-- 使用LIKE
SELECT * FROM users WHERE email LIKE '%@example.com%';
 
-- 使用REGEXP
SELECT * FROM users WHERE email REGEXP 'example.com';

select 'hehe@example.com' REGEXP 'example.com'; -- 1
select 'hehe@example.com' REGEXP 'fas'; -- 0
 
-- 使用INSTR
SELECT * FROM users WHERE INSTR(email, '@example.com') > 0;

select INSTR('hehe@example.com','@example.com'); -- 5

double 数据类型建表时无法指定小数点后保留位数:

  建表的时候 double 数据类型不能像 MySQL 那样写成 double(10,2) ,只能写成 DECIMAL(10,2) 。即 double 在建表的时候不能指定精度。

Proc 系统-/statistic:

来自:Doris 功能介绍-Proc 系统-/statistic

  Proc 系统被设计为主要面向系统管理人员,方便其查看系统内部的一些运行状态。如表的 tablet 状态、集群均衡状态、各种作业的状态等等。是一个非常实用的功能。

  /statistic 目录主要用于汇总查看 Doris 集群中数据库、表、分区、分片、副本的数量。以及不健康副本的数量。这个信息有助于我们总体把控集群元信息的规模。

mysql> show proc "/statistic";
+-------+----------------------------------+----------+--------------+----------+-----------+------------+--------------------+-----------------------+------------------+
| DbId  | DbName                           | TableNum | PartitionNum | IndexNum | TabletNum | ReplicaNum | UnhealthyTabletNum | InconsistentTabletNum | CloningTabletNum |
+-------+----------------------------------+----------+--------------+----------+-----------+------------+--------------------+-----------------------+------------------+
| 10003 | default_cluster:db1              | 3        | 5            | 5        | 5         | 5          | 0                  | 0                     | 0                |
| 10013 | default_cluster:db2              | 1        | 8            | 8        | 8         | 8          | 0                  | 0                     | 0                |
| Total | 2                                | 4        | 13           | 13       | 13        | 13         | 0                  | 0                     | 0                |
+-------+----------------------------------+----------+--------------+----------+-----------+------------+--------------------+-----------------------+------------------+
  • DbId:数据库id。
  • DbName:数据库名称,其前缀 default_cluster 目前无意义,可以忽略。
  • TableNum:数据库下表的数量。
  • PartitionNum:数据库下所有分区的数量。
  • IndexNum:数据库下所有物化视图的数量。
  • TabletNum:数据库下所有数据分片的数量。
  • ReplicaNum:数据库下所有副本的数量。
  • UnhealthyTabletNum:不健康数据分片的数量。不健康的分片如副本不齐,副本损坏等等。
  • InconsistentTabletNum:副本数据不一致的数据分片的数量。不一致指一个数据分片的多个副本间,数据校验值不同。
  • CloningTabletNum:数据库下正在进行 Clone 操作的数据分片数量。数据副本的补齐、迁移、修复都会触发 Clone 操作。

  第2级目录,查看指定数据库下不健康、不一致和正在进行 Clone 操作的数据分片ID。得到 tablet id 后,我们就可以使用 SHOW TABLET tablet_id 来查看这个分片的具体副本情况了。

mysql> show proc "/statistic/94836607";
+-----------------------------------+---------------------+----------------+
| UnhealthyTablets                  | InconsistentTablets | CloningTablets |
+-----------------------------------+---------------------+----------------+
| [106889158, 106892727, 106892717] | []                  | []             |
+-----------------------------------+---------------------+----------------+
  • UnhealthyTablets:不健康的数据分片ID列表。
  • InconsistentTablets:副本不一致的数据分片ID列表。
  • CloningTablets:正在进行 Clone 操作的数据分片ID列表。

注:有一次服务器硬盘损坏导致强制下线StarRocks的be节点后,后面恢复集群后发现 UnhealthyTabletNum 有好多。而且之前设置的表都是单副本,无法恢复,官方给的方案是将这个表 truncate 掉,然后重新导入数据。。。可参考:一次强制下线StarRocks的be节点后恢复集群


网站公告

今日签到

点亮在社区的每一天
去签到