Doris多租户资源、库、表、字段管理详细步骤

0-用户角色创建
创建用户:
CREATE USER ‘test’@‘%’ IDENTIFIED BY ‘test123’;
创建角色:
CREATE ROLE test;
用户绑定角色:
GRANT ‘test’ to ‘test’;
GRANT ‘role1’,‘role2’ TO ‘test’@‘%’;

1-资源组配置:
配置 CPU 的硬限
目前 Doris 默认运行 CPU 的软限,如果期望使用 Workload Group 的硬限功能,可以按照如下流程操作。
1、在 FE 中开启 CPU 的硬限的功能,如果有多个 FE,那么需要在每个 FE 上都进行相同操作。
修改磁盘上fe.conf的配置
experimental_enable_cpu_hard_limit = true
2、修改内存中的配置
ADMIN SET FRONTEND CONFIG (“enable_cpu_hard_limit” = “true”);

创建资源组:
create workload group if not exists test_group
properties (
“cpu_hard_limit”=“1%”,
“memory_limit”=“1%”,
“max_concurrency” = “300”,
“max_queue_size” = “200”,
“queue_timeout” = “300000”,
“enable_memory_overcommit”=“false”
);

查看资源组:
show workload groups like ‘test_group%’
修改组内限制数值
alter workload group test_group properties ( ‘cpu_hard_limit’=‘5%’ );

删除资源组:
如果workload已经绑定用户或者角色 需要删除得需要先分配给 normal,才可进行删除,或者取消对应角色/用户授权也可删除
set property for ‘pmf’ ‘test_group’ = ‘normal’;
show workload groups
drop workload group ‘test_group’

2-资源组授权
资源组-角色授权:
1、授权workload 给角色测试
grant usage_priv on workload group ‘test_grouptest_grouptest_grouptest_group’ to role ‘test’;
2、查看所有授权,可以查看到该资源组已授权成功
show all grants
3、取消授权 角色案例
revoke usage_priv on workload group ‘test_grouptest_grouptest_group’ from role ‘test’;

资源组-用户授权:
1、授权workload 给用户测试 ‘pmf’ 需要看下用户有没有@ip等限制 有的话还需要带上
grant usage_priv on workload group ‘test_grouptest_group’ to ‘test’ ;
2、查看所有授权,可以查看到该资源组已授权成功
show all grants
3、取消授权 角色案例
revoke usage_priv on workload group ‘test_group’ from ‘test’;

3-数据授权
库-表授权:
GRANT SELECT_PRIV,LOAD_PRIV,ALTER_PRIV,CREATE_PRIV,DROP_PRIV ON internal.test.* TO ‘test’@‘%’;

  1. 节点权限:NODE_PRIV

  2. 库表权限:SELECT_PRIV,LOAD_PRIV,ALTER_PRIV,CREATE_PRIV,DROP_PRIV

  3. 资源权限:USAGE_PRIV

  4. ..* 权限可以应用于所有catalog及其中的所有库表

  5. ctl.. 权限可以应用于指定catalog中的所有库表

  6. ctl.db.* 权限可以应用于指定库下的所有表

  7. ctl.db.tbl 权限可以应用于指定库下的指定表

列级权限:仅支持Select_priv
用户
创建:
GRANT Select_priv(col1,col2) ON ctl.db.tbl TO user1;
取消授权
revoke SELECT_PRIV ON ctl.db.tbl from ‘user1’;

角色
创建:
GRANT Select_priv(col1,col2) ON ctl.db.tbl TO ROLE role1;
取消授权
revoke Select_priv(col1,col2) ON ctl.db.tbl from ROLE ‘role1’;

行级权限:
用户
创建:
CREATE ROW POLICY test_row_policy_1 ON test.table1 AS {RESTRICTIVE|PERMISSIVE} TO test USING (id in (1, 2));
删除
DROP ROW POLICY test_row_policy_1 on table1 [FOR user| ROLE role];

角色
创建
CREATE ROW POLICY test_row_policy_1 ON test.table1 AS {RESTRICTIVE|PERMISSIVE} TO role test USING (id in (1, 2));
删除
DROP ROW POLICY test_row_policy_1 on table1 [FOR user| ROLE role];

<think> 我们参考了用户提供的引用内容,但用户的问题是关于“删除字段”的方法,而引用中并没有直接提到如何删除字段。引用[3]提到了修改字段类型的方法,是通过新建格然后插入数据的方式,这提示我们Doris可能不支持直接修改结构(如删除字段)的ALTER TABLE命令。 根据Doris的官方文档(不在用户提供的引用中,但根据常识),Doris支持通过ALTER TABLE命令来修改结构,包括添加列、删除列等。但是,用户提供的引用[3]中展示了一种通过新建并复制数据的方法来修改字段类型,这可能是因为某些修改(如修改列类型或删除列)在Doris中不能直接执行,或者在某些版本中不支持。 因此,我们可以考虑两种方法: 1. 使用ALTER TABLE命令删除列(如果支持的话)。 2. 使用引用[3]中的方法:新建一个不包含要删除字段,然后将原的数据(除了要删除的字段)插入到新,最后重命名。 由于用户提供的引用中没有直接给出删除字段的方法,我们需要根据Doris的官方实践来回答。 在Doris中,从1.0版本开始,支持使用ALTER TABLE命令删除列。语法如下: ```sql ALTER TABLE table_name DROP COLUMN column_name; ``` 但是,需要注意的是: - 只能删除非主键列(因为主键列是排序和聚合的依据,不能删除)。 - 删除列操作可能会涉及数据重组,是一个异步操作,可以通过`SHOW ALTER TABLE COLUMN`查看进度。 如果用户使用的是较老的版本(如0.15之前),可能不支持直接删除列,那么就需要采用新建的方法。 因此,我们给出两种方法的步骤: **方法一:使用ALTER TABLE(推荐,如果版本支持)** 1. 确认要删除的列不是主键列(如果是主键列,则不能删除)。 2. 执行删除列的SQL语句: ```sql ALTER TABLE table_name DROP COLUMN column_name; ``` 3. 查看操作进度(可选): ```sql SHOW ALTER TABLE COLUMN; ``` **方法二:新建并复制数据(通用方法,适用于所有版本)** 1. 创建一个新,新的结构与原相同,但不包含要删除的字段。 2. 将原的数据插入到新中(注意排除要删除的字段)。 3. 删除原(或重命名原为备份),然后将新重命名为原名。 4. 删除备份(如果需要)。 具体步骤示例(假设要删除`table_emp`中的字段`column_to_drop`): ```sql -- 1. 创建新(不包含要删除的字段) CREATE TABLE table_emp_new AS SELECT col1, col2, ... -- 除了要删除的字段,其他字段都写上 FROM table_emp WHERE 1=0; -- 这里只复制结构,不复制数据 -- 或者,如果结构复杂,可以先查看原结构,然后去掉要删除的字段,再创建新。 -- 2. 将原数据插入新(排除要删除的字段) INSERT INTO table_emp_new (col1, col2, ...) SELECT col1, col2, ... -- 同样,排除要删除的字段 FROM table_emp; -- 3. 重命名原(备份) ALTER TABLE table_emp RENAME table_emp_backup; -- 4. 将新重命名为原名 ALTER TABLE table_emp_new RENAME table_emp; -- 5. 删除备份(确认新数据正确后再执行) DROP TABLE table_emp_backup; ``` 注意事项: - 在执行这些操作之前,建议先备份数据。 - 如果数据量很大,插入操作可能会花费较长时间,并且会占用额外的存储空间。 - 在操作过程中,可能会影响的正常使用,所以最好在业务低峰期进行。 根据Doris的版本和具体需求选择合适的方法。 §§相关问题§§ 1. Doris中如何修改字段类型? 2. Doris中如何添加新的字段到已有? 3. Doris中重命名字段的方法是什么? </think> 在 Doris 中删除字段的操作方法如下: ### 🛠️ 方法一:使用 ALTER TABLE(推荐) Doris 支持通过 `ALTER TABLE` 命令直接删除非主键字段(适用于 Doris 1.0+ 版本): ```sql -- 删除单个字段 ALTER TABLE table_name DROP COLUMN column_name; -- 示例:删除 employee 的 age 字段 ALTER TABLE employee DROP COLUMN age; ``` **注意**: 1. 只能删除**非主键列**(Key 列不可删除)[^2] 2. 删除操作是异步执行的,可通过 `SHOW ALTER TABLE COLUMN` 查看进度 3. 字段删除后**不可恢复** ### 🧩 方法二:重建结构(通用方案) 若需删除主键列或低版本 Doris,需通过重建实现(参考引用[3]的方案): ```sql -- 1. 创建新(排除要删除的字段) CREATE TABLE new_table ( id INT, name VARCHAR(50) -- 仅保留需要字段 ) DUPLICATE KEY(id) -- 指定主键 DISTRIBUTED BY HASH(id); -- 2. 迁移数据(排除需删除字段) INSERT INTO new_table SELECT id, name -- 仅选择保留字段 FROM old_table; -- 3. 重命名(需停止写入) ALTER TABLE old_table RENAME old_table_backup; ALTER TABLE new_table RENAME old_table; -- 4. 删除备份(确认数据无误后) DROP TABLE old_table_backup; ``` ### ⚠️ 关键注意事项 1. **主键限制** 唯一模型/聚合模型的 Key 列(主键)不可删除,需重建[^2] 2. **数据备份** 操作前务必执行 `CREATE TABLE backup AS SELECT * FROM source_table` 3. **业务影响** 重建方案会导致服务中断,建议在低峰期操作 4. **版本兼容** Doris 1.0 以下版本必须使用重建方案 ### 💡 最佳实践建议 ```mermaid graph TD A[确定要删除的字段] --> B{是否主键列?} B -->|是| C[使用重建方案] B -->|否| D{版本≥1.0?} D -->|是| E[ALTER TABLE DROP COLUMN] D -->|否| C C --> F[创建新结构] F --> G[迁移数据] G --> H[重命名] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值