文章目录
查看版本号:
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> "
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:
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节点后恢复集群