描述:这是性能问题的示例演示。
我们首先创建了两个表,启用了行级安全性,还创建了策略。
表定义:
create table sample_schema.sample_table1(ID numeric(38) PRIMARY KEY NOT NULL,
tenant_id VARCHAR(255) NOT NULL,
Description VARCHAR(255)
);
create table sample_schema.sample_table2(ID2 numeric(38) PRIMARY KEY NOT NULL,
tenant_id VARCHAR(255) NOT NULL,
table1_id numeric (38),
Description2 VARCHAR(255)
);
Run Code Online (Sandbox Code Playgroud)
索引创建:
CREATE UNIQUE INDEX sample_table1_idx1 ON sample_schema.sample_table1(tenant_id,id);
Run Code Online (Sandbox Code Playgroud)
启用行级安全性:
ALTER TABLE sample_schema.sample_table1 ENABLE ROW LEVEL SECURITY;
Run Code Online (Sandbox Code Playgroud)
创建角色:
CREATE ROLE tenant_grp_role_p_id;
Run Code Online (Sandbox Code Playgroud)
创建策略:我希望策略选择tenant_id列值具有与登录用户相同角色的数据。
CREATE POLICY Tenant_Roles ON sample_schema.sample_table1 TO tenant_grp_role_p_id USING ((tenant_id) IN ( SELECT rolname FROM pg_roles WHERE pg_has_role( current_user, oid, 'member')));
Run Code Online (Sandbox Code Playgroud)
创建样本数据:
insert into sample_schema.sample_table1 …Run Code Online (Sandbox Code Playgroud) sql postgresql row-level-security database-indexes postgresql-performance