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

KingbaseES 四维操控:索引、视图、用户与事务的实战密码

目录

引言

第七部分:创建和管理索引

【创建索引】

【修改索引】

【查看索引】

【重建索引】

【删除索引】

第八部分:创建和管理视图

【创建视图】

【查询视图定义】

【查询视图】

【修改视图】

【删除视图】

第九部分:创建和管理用户

【创建用户】

【修改用户】

【查看用户】

【授予权限】

【撤销权限】

【删除用户】

第十部分:启动和管理事务

【事务控制命令】

【事务示例】

结尾


正文开始——

引言

KingbaseES(简称KES)是面向全行业、全客户关键应用的企业级大型通用融合数据库产品,适用于事务处理类应用、数据分析类应用、海量时序数据采集检索类应用、要求苛刻的互联网应用等场景;可用作管理信息系统、业务及生产系统、决策支持系统、多维数据分析系统、运行日志管理系统、全文检索系统、地理信息系统、时序数据处理相关系统的承载数据库。 KES采用融合数据库架构,通过多语法体系一体化架构实现一套软件兼容Oracle、MySQL、SQL Server、PostgreSQL等多个异构数据库的语法; 采用多模数据一体化存储,支持对关系模型、文档模型、全文本、GIS数据、时序等数据的统一存储、混合访问、模型间转换; 采用集中分布一体化架构,满足不同级别的可用性,为客户提供不同级别的可用性、性能扩展、成本需求,确保业务连续,最大化投资价值。

下面是本系列的前两节内容,从零开始详细介绍如何安装KingbaseES数据库以及如何实操KingbaseES数据库:

深入体验—Windows从零到一安装KingbaseES数据库

不再止于观望!实操金仓数据库初始化与管理全攻略

本文将详细介绍几项日常运维与开发中最常用的操作:如何创建与管理索引以提升查询性能、如何设计与维护视图以提高代码复用、如何创建与管理用户与权限以保障数据安全、以及如何正确启动与管理事务以确保数据一致性。通过实用的命令与注意事项,帮助开发者与DBA在实际环境中快速上手并避免常见陷阱。

第七部分:创建和管理索引

索引是一种与表相关的数据库对象,可以创建在表的一列或多列上。通过使用索引,可以让数据库不必扫描整个表,直接定位到符合条件的数据行,提高数据检索的速度。

但是,索引并不是越多越好,当表中插入、更新或删除数据时,涉及的索引也需要更新,这会造成性能开销。因此,需要对索引进行合理的创建和管理。

【创建索引】

KingbaseES中,使用 CREATE INDEX 语句来创建索引。

  • 示例

使用 CREATE INDEX 语句创建索引:

CREATE INDEX idx_employee ON orders(employee_id);
  • 备注

CREATE INDEX创建的是非唯一索引。

使用 CREATE INDEX 语句创建组合索引:

CREATE INDEX idx_orders ON orders(order_id, order_date);

组合索引,也成为连接索引,是在表中的多个列上的索引。组合索引中的列应该以在检索数据的查询中效率最高的顺序出现,但在表定义中的顺序不需要与组合索引列顺序一致。

使用CREATE UNIQUE INDEX语句创建唯一索引:

CREATE UNIQUE INDEX uid_order ON orders(order_id);

使用CREATE UNIQUE INDEX语句创建唯一组合索引:

CREATE UNIQUE INDEX uid_orders ON orders(order_id, order_date);
【修改索引】

使用ALTER INDEX语句可以修改索引的相关属性信息。

  • 示例

使用ALTER INDEX语句重命名索引名:

ALTER INDEX idx_employee RENAME TO idx_employeeid;

使用ALTER INDEX语句设置索引选项:

ALTER INDEX idx_employeeid SET(FILLFACTOR = 60);
  • 提示

FILLFACTOR为索引的填充因子,用于指定在创建或重建索引时新页的填充程度,其值是介于1~100之间的整数。

【查看索引】

可通过下述两种方式查询数据库中的索引信息:

使用SELECT语句查询sys_indexes视图查看数据库中的所有索引:

SELECT * FROM sys_indexes;

使用ksql工具的 \di 命令查看数据库中的所有索引:

\di
【重建索引】

重建索引可以确保索引存储参数的修改完全生效,并且还能用来恢复无用或被损坏的索引。

使用REINDEX INDEX语句重建索引:

REINDEX INDEX idx_employee;

使用REINDEX TABLE语句重建表上所有索引:

REINDEX TABLE orders;

【删除索引】

使用 DROP INDEX 语句删除索引:

DROP INDEX idx_employeeid;

使用 DROP INDEX 语句级联删除索引:

DROP INDEX idx_orders CASCADE;
  • 提示

级联删除索引是指删除索引时自动删除依赖于该索引的对象。

第八部分:创建和管理视图

KingbaseES数据库中视图是一个虚拟表,不记录实际数据,只保存定义中的查询语句,当查询视图时,数据库内部执行该查询语句来获取数据。

【创建视图】

使用 CREATE VIEW 语句创建视图:

CREATE [options] VIEW name [options] AS query [options] ;

使用CREATE OR REPLACE VIEW语句创建视图:

CREATE OR REPLACE VIEW orders_info AS SELECT order_id, customer_name FROM orders;
  • 提示

使用 CREATE OR REPLACE VIEW 语句可以更新视图定义。

【查询视图定义】

查询sys_views视图获取自定义视图定义:

SELECT * FROM sys_views WHERE viewname = 'orders_info';

使用ksql命令查询视图定义:

\sv orders_info
【查询视图】

使用SELECT语句查询视图:

SELECT * FROM orders_info;
【修改视图】

使用 ALTER VIEW 语句修改视图,例如视图重命名:

ALTER VIEW orders_info RENAME TO orders_new;
【删除视图】

使用 DROP VIEW 语句删除视图:

DROP VIEW orders_info;

第九部分:创建和管理用户

KingbaseES中的用户是拥有数据库对象和权限的实体。为了确保数据的安全性,KingbaseES提供了多种方式来创建和管理用户。

【创建用户】

使用 CREATE USER 语句创建用户:

CREATE USER test WITH PASSWORD '123456';

提示

只有超级用户或具有CREATE ROLE系统权限的用户才可以创建用户。

使用createuser命令行工具创建用户:

createuser rdjc
【修改用户】

使用 ALTER USER 语句修改用户密码:

ALTER USER test PASSWORD '654321';

使用 ALTER USER 语句限制用户的连接数:

ALTER USER test CONNECTION LIMIT 1000;

使用 ALTER USER 语句增加CREATE ROLE权限:

ALTER USER test CREATE ROLE;

使用 ALTER USER 语句重命名用户名:

ALTER USER test RENAME TO Joe;
【查看用户】

使用SELECT语句查询sys_user视图查看用户:

SELECT * FROM sys_user;

使用ksql工具的 \du 命令查看用户:

\du
【授予权限】

GRANT 语句用于将对象的权限或角色的权限授予另一个角色或用户。

  • 示例

使用GRANT语句将表的插入和更新权限授予用户:

GRANT INSERT, UPDATE ON orders TO Joe;

使用GRANT语句将表的查询权限授予多个用户:

GRANT SELECT ON orders TO rdjc, Joe;
【撤销权限】

REVOKE 语句用于从角色或用户处收回对象的权限或角色的权限。

使用REVOKE语句撤销用户在表上的插入和更新权限:

REVOKE INSERT, UPDATE ON orders FROM Joe;

使用REVOKE语句撤销多个用户在表上的查询权限:

REVOKE SELECT ON orders FROM rdjc, Joe;
【删除用户】

使用 DROP USER 语句删除用户:

DROP USER Joe;

使用dropuser命令行工具删除用户:

dropuser rdjc

第十部分:启动和管理事务

数据库中的事务是一个独立的逻辑单元,它包括了一个或多个SQL语句。一个事务中的语句要么全部执行,要么全不执行。

【事务控制命令】
  • 启动事务

    用户可以使用 START TRANSACTION或者 BEGIN启动事务。更多启动事务的信息

  • 设置事务

    在多个事务并发执行时,系统应保证并发执行后与这些事务先后单独执行时的结果一样,因此对事务隔离级别有一定的要求。

    用户可以使用 SET TRANSACTION设置事务隔离级别、事务访问模式(读/写或只读)以及可延迟模式。

  • 提交事务

    用户可以使用COMMIT或者END完成提交事务的功能。

  • 回滚事务

    回滚是在事务运行的过程中发生了某种故障,导致事务不能继续执行,最终数据库会撤销该事务内所有更新。

【事务示例】
  • 开启一个事务
BEGIN;
  • 向orders表中插入一条新的记录
INSERT INTO orders VALUES(107,'RDJC',5,'1999-03-20');
  • 如果操作都成功完成,开始提交事务
COMMIT;
  • 插入语句执行失败的语句(orders表存在主键约束)
INSERT INTO orders VALUES(107,'RDJC',5,'2000-03-20');
ERROR:  duplicate key value violates unique constraint "pk_orders"
DETAIL:  Key (order_id)=(107) already exists.
  • 当语句执行失败时,COMMIT与ROLLBACK等效,均为回滚事务
ROLLBACK;

结尾

合理使用索引、视图、用户管理与事务控制,能够显著提升数据库的性能与可维护性,而选择 KingbaseES(KES)作为底层平台,本身就为这些实践提供了天然的优势。对于索引与查询优化,KES 支持多种索引类型与统计信息收集机制,结合其执行器与优化器的持续改进,可以在大多数业务场景下带来稳定且可预测的查询性能提升。视图与物化视图功能完善,便于实现逻辑复用与性能加速,同时支持灵活的刷新策略以兼顾实时性与资源消耗。

在用户与权限管理层面,KES 提供细粒度的角色体系与审计能力,便于贯彻最小权限原则并满足合规审计要求。事务处理方面,基于成熟的 MVCC 与并发控制机制,KingbaseES 能有效处理高并发写入与读写冲突,支持多种隔离级别与保存点,帮助研发与运维团队更容易实现数据一致性与故障恢复策略。再者,KingbaseES 在高可用、备份恢复与监控诊断方面提供完善方案,结合厂商支持可以快速响应生产问题,降低运维成本与风险。

总之,借助 KingbaseES 的平台能力和企业级特性,配合本文所述的索引优化、视图设计、权限治理与事务管理方法,您可以更高效地构建安全、稳定且高性能的数据库系统。持续的性能监控、定期审计与自动化运维,将把这些优势转化为长期的业务价值与可持续的运营能力。

http://www.dtcms.com/a/395339.html

相关文章:

  • 大模型强化学习-PPO应用
  • 惠普打印机连接电脑完整指南:方法与故障排除
  • 轻松加载外部Jar,实现SpringBoot功能灵活扩展
  • MCGS COM口MODBUS转发
  • Elasticsearch面试精讲 Day 22:机器学习与异常检测
  • 仓颉语言中的 `Some` 类型解析
  • spring-boot--redis调整token过期时间
  • 树形表格示例
  • 【完整源码+数据集+部署教程】六角螺母分割系统: yolov8-seg-EfficientHead
  • 零基础搭建赛博朋克个人主页:蓝耘Claude Code完整实战教程
  • C语言第19讲
  • 【含文档+PPT+源码】基于springboot+ssm的智能人脸识别养老系统的设计与开发
  • Linux-> UDP 编程3
  • 分库分表后ID冲突怎么解决?分布式ID生成方案。保证ID全局唯一性。
  • 域名如何解析家庭ip
  • LeetCode 2460.对数组执行操作
  • Unity Time.time 详解
  • LeetCode 922.按奇偶排序数组 II
  • 请简要谈谈Android系统的架构组成?
  • LeetCode 面试经典 150_哈希表_两数之和(44_1_C++_简单)
  • Kafka是什么,架构是什么样的?Kafka概述
  • TCN时序卷积网络、CNN、RNN、LSTM、GRU神经网络工业设备运行监测、航空客运量时间数据集预测可视化|附代码数据
  • 【HarmonyOS】HMRouter关键原理-动态import
  • 【Python】面向对象(三)
  • 05-django项目的跨域处理
  • go语言并发
  • Qt QSS 美化完整教程文档
  • jwt与token+redis,哪种方案更好用?
  • 基于react的前端项目开发和实战总结(umi框架)
  • 【iOS】YYModel